(1) 리눅스 커널 구조
: 커널이란 운영체제의 핵심을 이루는 부분으로, CPU나 메모리 그리고 기타 디바이스 등의 시스템 리소스를 관리하고, 사용자 프로그램이 이를 사용할 수 있도록 한다.

"운영체제는 자원관리자(resource manager)이다."


- 태스크 관리자 : CPU라는 물리적 자원을 태스크라는 추상적인 자원으로써 제공
- 메모리 관리자 : 메모리를 세그먼트나 페이지라는 개념으로 제공 
- 파일 시스템 : 디스크를 파일이라는 개념으로 제공
- 네트워크 관리자 : 네트워크 장치를 소켓이라는 개념으로 제공
- 디바이스 드라이버 관리자 : 각종 장치를 디바이스 드라이버를 통해 일관되게 접근하도록   
 
※ 운영체제는 시스템 호출을 통해 태스크가 자원을 사용할 수 있게 해주는 자원관리자이다.


(2) 리눅스 소스레벨 구조

○ kernel 디렉터리
: 태스크 관리자가 구현된 디렉터리이다.
- 태스크의 생성과 소멸, 프로그램의 실행, 스케줄링, 시그널 처리 등의 기능 구현.

○ arch 디렉터리
: 하드웨어 종속적인 부분들이 구현된 디렉터리이다.
- arch/x86/boot : 시스템 부팅시 사용하는 부트스트랩 코드 구현.
- arch/x86/kernel : 태스크 관리자 중에서 문맥교환이나 쓰레드 관리기능 구현.
- arch/x86/mm : 메모리 관리자 중에서 페이지 부재 결함 처리 기능 구현.
- arch/x86/lib : 커널이 사용하는 라이브러리 함수 구현.
- arch/x86/math-emu : FPU(floating point unit)에 대한 에뮬레이터 구현.

○ fs 디렉터리
: 다양한 파일시스템과 시스템 호출이 구현된 디렉터리이다.
- 다양한 파일 시스템을 사용자가 일관된 인터페이스로 접근할 수 있도록 하기 위해 리눅스가 도입한 가상 파일 시스템 존재.

○ mm 디렉터리
: 메모리 관리자가 구현된 디렉터리이다.
- 물리 메모리 관리, 가상 메모리 관리 태스크마다 할당되는 메모리 객체 관리 등의 기능이 구현.

○ driver 디렉터리
: 디바이스 드라이버가 구현된 디렉터리이다.
- 파일시스템을 통해 접근되는 블록 디바이스 드라이버, 사용자 수준 응용 프로그램이 장치파일을 통해 직접 접근하는 문자 디바이스 드라이버, 그리고 TCP/IP를 통해 접근되는 네트워크 디바이스 드라이버.

○ net 디렉터리
: 통신 프로토콜이 구현된 디렉터리이다.
- TCP/IP 뿐만 아니라 UNIX 통신 프로토콜, 802.11, IPX, RPC, AppleTalk, bluetooth 등 다양한 통신 프로토콜을 구현해 놓았다. 사용자 인터페이스를 제공하는 소켓 역시 이 디렉터리에 구현.

○ ipc 디렉터리
: 프로세스간 통신 기능이 구현된 디렉터리이다.
- 파이프는 fs 디렉터리에, 시그널은 kernel 디렉터리에, 그리고 소켓은 net 디렉터리에 구현.

○ init 디렉터리
: 커널 초기화 부분, 즉 커널의 메인 시작 함수가 구현된 디렉터리이다.
- start_kernel() 함수는 커널 전역적인 초기화를 수행.

○ include 디렉터리
: 헤더 파일들이 구현된 디렉터리이다.

○ others 디렉터리
: 주요 기능이 구현된 디렉터리 이외에도 여러 다른 디렉터리가 존재한다.
- Documentation 디렉터리 : 문서파일 존재
- lib 디렉터리 : 커널 라이브러리 함수들이 구현
- scripts 디렉터리 : 커널 구성 및 컴파일 시 이용되는 스크립트 들이 존재




by 민트앤라떼 2012. 6. 19. 10:49