망고100 보드로 놀아보자 -12 커널 디렉토리 설명 http://cafe.naver.com/embeddedcrazyboys http://www.mangoboard.com
Linux 커널 소스 트리 구조 ... block SRC/ Doc arch include init fs kernel ipc lib mm net scripts driver alpha arm m68k mips ppc sparc i386 boot math-emu asm-alpha asm-arm asm-i386 ... linux scsi video 802 appletalk decnet ethernet ipv4 unix sunrpc x25 cdrom char pci pnp sbus coda ext2 hpfs msdos nfs isofs ntfs sound http://www.mangoboard.com
각 디렉토리 설명 arch/ CPU 종속적인 부분, 각 처리기 마다 하위 디렉토리로 구성됨 (arch/arm, arch/i386, arch/alpha … ) arch/arm/boot/ 부트스트랩핑 코드 arch/arm/kernel/ 하드웨어 종속적인(hardware dependent) 커널 관리 루틴 트랩, 인터럽트 처리 루틴 문맥 교환 루틴 장치 구성, 초기화 루틴 arch/arm/mm/ 하드웨어 종속적인 메모리 관리 루틴 init/ 하드웨어 독립적인 커널 초기화 루틴 (start_kernel) 태스크 0 (init_task or task[0]) 생성 태스크 1, 2, 3 등 데몬 프로세스 생성 http://www.mangoboard.com
각 디렉토리 설명 (2) kernel/ mm/ fs/ 리눅스 커널의 가장 중심적인 디렉토리 (central section of the kernel) 하드웨어 독립적인 커널 관리 루틴 (하드웨어 종속적인 커널 관리 루틴은 arch/arm/kernel 디렉토리에 존재) fork, exit 등 태스크 관련 시스템 호출 처리 루틴 스케줄러 (scheduler) 루틴 시그널 처리 (signal handling)/시간 관리 (time management) 루틴 mm/ 하드웨어 독립적인 메모리 관리 루틴 (하드웨어 종속적인 메모리 관리 루틴은 arch/arm/mm 디렉토리에 존재) 가상 메모리 관리, 페이징 (paging), 스와핑(swapping) fs/ 가상 파일 시스템 (virtual file system ) 관리 루틴 open, read 등 태스크 관련 시스템 호출 처리 루틴 특정 파일 시스템 관리 루틴은 하위 디렉토리에 존재 (ext2, ext3, ramfs, minix, jffs2, proc, nfs, msdos, coda, .. ) http://www.mangoboard.com
각 디렉토리 설명 (3) drivers/ Sound :sound card 드라이버 ipc/ 개개의 장치를 제어하기 위한 장치 드라이버 루틴 디바이스 드라이버는 크게 문자/블록/네트워크 드라이버로 구분 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 :sound card 드라이버 ipc/ 프로세스간 통신을 지원하기 위한 루틴 세마포어(semaphores), 공유 메모리(shared memory), 메시지 큐(message queues) http://www.mangoboard.com
각 디렉토리 설명 (4) net/ include/ lib/ doc/ or Documentation/ TCP/IP, ARP 등 네트웍 통신 프로토콜 (네트웍 장치 드라이버는 drivers/net에 존재) 소켓 인터페이스 include/ 커널 헤더 하드웨어 독립적인 헤더 : include/linux/ 하드웨어 종속적인 헤더 : include/asm-***/ (예를 들어 ARM CPU 종속적인 헤더는 include/asm-arm/ 디렉토리에 존재) lib/ 커널 라이브러리 루틴 doc/ or Documentation/ 커널 문서 디렉토리. http://www.mangoboard.com