운영체제란 무엇일까요?
저는 사용자에게 알맞은 추상화를 제공함으로써 사용자가 그 내부를 알 필요 없이 사용할 수 있도록 해주는 것이라고 생각합니다.
책에서는 '운영체제는 자원관리자이다'라고 정의하고
자원에 대한 정의를 풀어갑니다.
운영체제가 갖는 자원은 다음과 같습니다.
물리적인 자원 | 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 |