Operating System
- Already learned : System Programming
- Usage of utility programs :
- ls, cat, cp, pwd, ps, grep, …
- Usage of system call :
- read, write, fork, select, exit, …
- Usage of utility programs :
📝 Studying about :
- Reading/Understanding/Modifying OS kernel code to understand 5 concepts of OS
- interrupt
- process
- file
- memory
- I/O
- bin : 리눅스 명령어의 실행 파일이 내장되어있다. (ls,chmod,pwd,grep …)
- etc : 시스템 구성 파일이 내장되어 있다. (password, hostname …)
- root : root user의 home directory로 리눅스 커널이 내장되어있다.
- linux-2.6.25.10 (리눅스 커널)
- init : 리눅스 초기세팅(부팅) 코드 내장
- arch : interrupt code 내장
- kernel : process code 내장
- fs : file code 내장
- mm : memory code 내장
- drivers : I/O code 내장
- linux-2.6.25.10 (리눅스 커널)
- usr : 라이브러리, 헤더파일 내장
- 리눅스 커널 부팅 시 /init/main.c 내부의 start_kernel() 함수 동작
- trap_init() : 시스템 초기 세팅
- init_IRQ() : interrupt 설정하고 동작시킴.
- sched_init() : init task가 사용하는 cpu 번호 할당, pid hash table을 초기화
- time_init() : 현재 시간에 대한 정보 제공
- console_init() : console을 사용하기 위한 시리얼 장치 초기화
- mem_init() : 사용 가능한 memory 초기화
- rest_init() : kernel_thread()함수 호출하여 별도 스레드 생성. kernel_init() 실행하여 idle process가 된다.
→ start_kernel() 함수의 이름처럼 커널을 실행하기 위한 init, 즉 기초 세팅에 대한 함수가 실행된다.
- 함수 내부에 printf 가 아닌 printk를 쓰는 이유
- printf가 내장된 Standard C 라이브러리를 사용할 수 없으므로 커널 이미지 내 정의된 log level의 printk 함수 사용