반응형

리눅스 커널 구조


운영체제의 관리 자원

물리적인 자원 : CPU, 메모리, 디스크, 터미널, 네트워크 등 시스템 구성 요소 및 주변 장치들

추상적인 자원 : task, 세그먼트, 페이지, 파일, 통신 프로토콜, 패킷 등

  * 물리적인 자원에 대응되지 않으며 추상적인 객체로만 존재하는 자원 : 보안, 사용자 ID에 따른 접근제어 등


커널이 관리하는 자원 ( 물리적인 자원 + 추상적인 자원)

CPU - task                  (Task 관리자)            => task의 생성, 실행, 상태 전이, 스케줄링, 시그널 처리, 프로세스 간 통신 등의 서비스 제공

Memory - Segment,page  (Memory 관리자)         => 물리 메모리 관리, 가상 메모리 관리, 세그멘테이션, 페이징, 페이지 부재 결함 처리 등의 서비스 제공

Disk - File                  (File System)              => 파일 생성, 접근 제어, inode 관리, 디렉터리 관리, 수퍼 블록 관리 등의 서비스 제공

Network 장치 - Socket     (Network 관리자)         => socket 인터페이스, TCP/IP 같은 통신 프로토콜 등의 서비스 제공

각종 장치 - Device Driver  (Device Driver 관리자)  => 디스크나 터미널, CD, 네트워크 카드 등과 같은 주변 장치를 구동하는 드라이버들로 구성


" 운영체제는 시스템 호출을 통해 테스크가 자원을 사용할 수 있게 해주는 자원관리자"



각 디렉터리의 내용


kernel 디렉터리

- task 관리자가 구현한 디렉터리

- task의 생성과 소멸, 프로그램의 실행, 스케줄링, 시그널 처리 등의 기능이 구현되있는 디렉터리


arch 디렉터리

- 리눅스 커널 기능 중 하드웨어 종속적인 부분들이 구현된 디렉터리

- CPU의 타입에 따라 하위 디렉터리로 다시 구분 ( 인텔의 i386, ARM계열, 모토로라의 68시리즈, SUN의 Sparc, IBM의 PPC 등 )


fs 디렉터리

- 리눅스에서 지원하는 다양한 파일시스템과 open(), read(), write() 등의 시스템 호출이 구현된 디렉터리.

- 대표적인 파일시스템 (ext2, ext3, ext4, nfs, fat,proc, sysfs, devfs, isofs, ntfs, reiserfs, f2fs, xfs 등)


mm 디렉터리

- 메모리 관리자가 구현된 디렉터리

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


driver 디렉터리

- 리눅스에서 지원하는 디바이스 드라이버가 구현된 디렉터리

- 디바이스 드라이버( 디스크, 터미널, 네트워크 카드 등 주변 장치를 추상화시키고 관리하는 커널 구성 요소 ) 


net 디렉터리

- 리눅스 커널 소스 중 상당히 많은 양을 차지하는 디렉터리

- 리눅스가 지원하는 통신 프로토콜이 구현된 디렉터리

- TCP/IP 뿐만아니라 UNIX 도메인 통신 프로토콜, 802.11, IPX, RPC, AppleTalk, bluetooth, socket 등 다양한 통신 프로토콜 구현


ipc 디렉터리

- 리눅스 커널이 지원하는 프로세스간 통신 기능이 구현된 디렉터리

- 대표적인 프로세스간 통신 ( 파이프, 시그널, SYS V IPC, 소켓 등 )

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


init 디렉터리

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


include 디렉터리

- 리눅스 커널이 사용하는 헤더 파일들이 구현된 디렉터리


others 디렉터리

- 리눅스 커널의 주요 기능이 구현된 디렉터리 외에도 리눅스 커널 소스에는 여러 다른 디렉터리가 존재한다.

- 대표적으로 (리눅스 커널 및 명령어들에 대한 자세한 문서 파일들이 존재하는 Documentation 디렉터리, 

                 커널 라이브러리 함수들이 구현되는 lib 디렉터리, 

                 커널 구성 및 컴파일 시 이용되는 스크립트 들이 존재하는 scripts 디렉터리 등)이 리눅스 커널소스에 존재



'Study Note > OS' 카테고리의 다른 글

[Linux] Task 관리  (0) 2016.03.07
[Linux] 리눅스 커널 컴파일 (fedora)  (0) 2016.03.07
[Linux] Shell Script  (0) 2016.02.15
[Linux] Shell & Shell 내장 명령어  (0) 2016.02.15
[Linux] Vi Editor  (0) 2016.02.15

+ Recent posts