리눅스 커널 구조
운영체제의 관리 자원
물리적인 자원 : 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 |