본문 바로가기

서버운영 (TA, ADMIN)/리눅스

[리눅스] 리눅스 커널 소스코드 구성도

 

 

arch/

- CPU 종속적인 부분, 각 처리기 마다 하위 디렉터리로 구성(arch/i386, arch/alpha, arch/arm...)

 

- arch/arm/kernel/

하드웨어 종속적인 커널 관리 루틴

트랩, 인터럽트 처리 루틴

문맥교환 루틴

장치 구성, 초기화 루틴

 

- arch/arm/mm

하드웨어 종속적인 메모리 관리 루틴

 

init/

- 하드웨어 독립적인 커널 초기화 루틴(start_kernel)

- 태스크 0 (init_task or task[0]) 생성

- 태스크 1, 2, 3 등 데몬 프로세스 생성

 

 

kernel/

- 리눅스 커널의 가장 중심적인 디렉터리 (central section of the kernal)

- 하드웨어 독립적인 커널관리 루틴(하드웨어 종속적인 커널관리 루틴은 arch/arm/kernel 디렉터리에 존재)

- fork, exit 등 태스크 관련 시스템 호출 처리 루틴

- 스케줄러(scheduler) 루틴

- 시그널 처리(signal handling) 루틴

- 시간 관리(time management) 루틴

 

 

mm/

- 하드웨어 독립적인 메모리 관리 루틴(하드웨어 종속적인 메모리 관리 루틴은 arch/arm/mm 디렉터리에 존재)

- 가상 메모리 관리 루틴

- 페이징(paging), 스와핑(swapping)

 

 

fs/

- 가상 파일 시스템(virtual file system) 관리 루틴

- open, read 등 태스크 관련 시스템 호출 처리 루틴

- 특정 파일 시스템 관리 루틴은 하위 디렉터리에 존재(ext2, proc, nfs, msdos, coda,...)

 

 

drivers/

- 장치 드라이버 루틴

- drivers/block/ : 블록 장치 드라이버. 예를 들어 IDE디스크(hd)

- drivers/char/ : 문자 장치 드라이버. 예를 들어 serial ports, tty, modem, ..

- drivers/net : 네트웍 장치 드라이버. 예를들어 3C509,...

- drivers/pci: PCI bus 제어

- drivers/cdrom: CD-ROM 드라이버

- drivers/scsi: SCSI 인터페이스 관리

 

 

sound/

 

ipc/

- 프로세스간 통신 루틴

- 세마포어(semaphores), 공유 메모리(shared memory), 메시지 큐(message queues)

 

 

net/

- TCP/IP, ARP(Address Resolution Protocol) 등 네트웍 통신 프로토콜(네트웍 장치 드라이버는 drivers/net에 존재)

- 소켓 인터페이스

 

 

include/

- 커널 헤더

- 하드웨어 독립적인 헤더: include/linux

- 하드웨어 종속적인 헤더: include/asm-*** (예를 들어 Intel CPU 종속적인 헤더를 include/asm-i386/ 디렉터리에 존재)

 

 

lib/

- 커널 라이브러리 루틴

 

 

documentation/

- 커널 문서 디렉터리