한국어
Linux Programming

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

makersweb 2014.03.04 23:41 조회 수 : 4179 추천:1

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

 

kernel.png

 

<최신 커널 소스 디렉터리의 구조가 일부 변경됨>

 

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 kernel)

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

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

-스케줄러(acheduler)루틴

-시그널 처리(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등 네트웍 통신 프로토콜(네트웍 장치 드라이버는  drivers/net에 존재)

-소켓 인터페이스

 

include/

-커널 헤더

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

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

 

lib/

-커널 라이브러리 루틴

 

documentation/

-커널 문서 디렉터리