본문 바로가기
IT 학습 공간 ::)

리눅스(Linux) kernel 구조

by 에스타롯사 2019. 4. 26.

1. 리눅스 커널 이란 ?

: 커널이란 운영체제의 핵심을 이루는 부분으로 CPU, 메모리 그리고 기타 디바이스 등의 시스템

리소스를 관리하고, 사용자 프로그램이 이를 사용할 수 있도록 해줍니다.

 

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

 

크게 다섯가지로 나뉘며 다음과 같은 기능을 제공하는 역활을 합니다.

 

- 태스크 관리자 : CPU라는 물리적 자원을 태스크라는 추상적인 자원으로써 제공.

- 메모리 관리자 : 메모리를 세그먼트나 페이자라는 개념으로 제공.

- 파일 시스템 : 디스크를 파일이라는 개념으로 제공.

- 네트워크 관리자 : 네트워크 장치를 소켓이라는 개념으로 제공.

- 디바이스 드라이버 관리자 : 각종 장치를 디바이스 드라이버를 통해 일관되게 접근하도록 해줌.

 

 

 

 

 

2. 리눅스 소스레벨 구조

 

 

<1> kernel 디렉터리

: 태스크 관리자가 구현된 디렉터리이다.

 - 테스크의 생성과 소멸, 프로그램의 실행, 스케줄링, 시그널 처리등의 기능 구현.

 

<2> arch 디렉터리

: 하드웨어 종속적인 부분들이 구현된 디렉터리이다.

- arch/x86/boot : 시스템 부팅시 사용하는 부트스트랩 코드 구현.

- arch/x86/kernel : 태스크 관리자 중에서 문맥교환이나 쓰레드 관리기능 구현.

- arch/x86/mm : 메모리 관리자 중에서 페이지 부재 결함 처리 기능 구현.

- arch/x86/lib : 커널이 사용하는 라이브러리 함수 구현.

- arch/x86/math-emu : FPU(floating point unit)에 대한 애물레이텨 구현.

 

<3> fs 디렉터리

: 다양한 파일시스템과 시스템 호출이 구현되 디렉터리이다.

- 다양한 파일 시스템을 사용자가 일관된 인터페이스로 접근할 수 있도록 하기 위해 

리눅스가 도입한 가상 파일 시스템 존재.

 

<4> mm 디렉터리

: 메모리 관리자가 구현된 디렉터리이다.

- 물리 메모리 관리, 가상 메모리 관리 태스크마다 할당되는 메모리 객체 관리등의 기능이 구현.

 

<5> driver 디렉터리

: 디바이스 드라이버가 구현된 디렉터리이다.

- 파일시스템을 통해 접근되는 블록 디바이스 드라이버, 사용자 수준 응용 프로그램이 장치파일을

통해 직접 접근하는 문자 디바이스 드라이버, 그리고 TCP/IP를 통해 접근되는 네트워크 디바이스 드라이버.

 

<6> net 디렉터리

: 통신 프로토콜이 구현된 디렉터리이다.

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

 

<7> ipc 디렉터리

: 프로세스간 통신 기능이 구현된 디렉터리이다.

- 파이프는 fs 디렉터리에. 시그널은 kernel 디렉터리에, 그리고 소켓은 net 디렉터리에 구현.

 

<8> init 디렉터리

: 커널 초기화 부분, 즉 커널의 메인 시작 함수가 구현된 디렉터리이다.

- start_kernel() 함수는 커널 전역적인 초기화를 수행.

 

<9> include 디렉터리

: 해더 파일들이 구현된 디렉터리이다.

 

<10> others 디렉터리

: 주요 기능이 구현된 디렉터리 이외에도 여러 다른 디렉터리가 존재한다.

- Documentation 디렉터리 : 문서파일 존재.

- lib 디렉터리 : 커널 라이브러리 함수들이 구현

- scripts 디렉터리 : 커널 구성 및 컴파일 시 이용되는 스크립트 들이 존재.