본문 바로가기

리눅스 커널 Linux kernel

2장 리눅스 커널 구조

 

운영체제란 무엇일까요?

저는 사용자에게 알맞은 추상화를 제공함으로써 사용자가 그 내부를 알 필요 없이 사용할 수 있도록 해주는 것이라고 생각합니다.

책에서는 '운영체제는 자원관리자이다'라고 정의하고

자원에 대한 정의를 풀어갑니다.

 

운영체제가 갖는 자원은 다음과 같습니다.

물리적인 자원

CPU

메모리

디스크

네트워크

 

추상적인 자원

태스크

세그먼트와 페이지

파일

통신 프로토콜,

패킷

접근제어

 

커널물리적인 자원과 추상적인 자원을 관리하는 자원관리자의 역할을 합니다.

구체적으로 아래의 표와 같습니다.

태스크 관리자

태스크의 생성, 실행, 상태전이, 스케쥴링, 시그널 처리, 프로세스간 통신(IPC)

메모리 관리자

물리 메모리 관리, 가상 메모리 관리, 세그먼테이션, 페이징, 페이지 부재 결함 처리

파일 시스템

파일의 생성, 접근제어, inode 관리, 디렉터리 관리, 수퍼블록 관리

네트워크 관리자

소켓 인터페이스, TCP/IP

디바이스 드라이버

디스크, 터미널, CD, 네트워크 카드, 주변장치 구동 드라이버

 

아래의 그림과 같이 표현될 수 있습니다.



출처 : http://www.linux-support.com/cms/an-introduction-to-device-drivers-linux-26/

System Call Interface 위에는 User Space라는 사용자의 공간이 존재합니다.

결국 운영체제는 사용자에게 서비스를 제공하기 위해 자원을 관리합니다.

요약하면 운영체제는 시스템 호출을 통해 태스크가 자원을 사용할 수 있게 해주는 자원관리자 입니다.

 

다음 내용은 리눅스의 소스레벨 구조 입니다.

 



출처 : microcom.kut.ac.kr

리눅스는 소스코드만 70MB에 이른다고 합니다. 그래서 이 정도 규모의 크기가 나오는 것 같습니다.

각 디렉터리가 담당하는 역할에 대해 표로 정리해 보겠습니다. (그림에 없을 수도 있습니다.)

디렉터리 이름

역할

kernel

태스크 관리자 구현, 태스크 관리자 기능 구현

arch

CPU(인텔 i386, ARM, Sparc 등등)타입과 같은 하드웨어 종속적인 부분 구현

fs

리눅스에서 지원하는 다양한 파일 시스템(ext2, ext3, ext4, nfs..)

VFS(Virtual File System) 포함

mm

메모리 관리자 구현

driver

리눅스에서 지원하는 디바이스 드라이버 구현

net

커널 소스 중 상당히 많은 양을 차지하며 통신 프로토콜 구현

ipc

프로세스간 통신 기능 구현 (파이프, 시그널 등등)

init

커널 초기화 부분으로 커널의 메인 시작 함수 구현

include

리눅스 커널이 사용하는 헤더 파일 구현

others

Documentation 디렉터리에 유용한 자료 존재

 

 

다음으로 리눅스에서 커널을 만드는 과정에 대해 알아보겠습니다.

리눅스는 다른 운영체제와는 달리 버전이 올라가도 새로운 설치가 없이 컴파일과정만 거쳐주면

업그레이드를 할 수 있습니다. 그 과정은 아래의 그림과 같습니다.


출처 : 리눅스 커널 내부구조 -  백승재, 최종무 공저

'리눅스 커널 Linux kernel' 카테고리의 다른 글

4장 메모리관리 - 2  (0) 2013.07.24
4장 메모리 관리 -1  (0) 2013.07.20
3장 태스크 관리 - 1  (0) 2013.07.18
1장 리눅스의 소개  (0) 2013.07.16
리눅스 커널 내부구조  (0) 2013.07.13