관리 메뉴

드럼치는 프로그래머

[Linux] 커널이란 무엇인가? 본문

★─Programing/☆─Linux

[Linux] 커널이란 무엇인가?

드럼치는한동이 2009. 1. 14. 08:19

리눅스 커널이란??

리눅스를 만지면서 커널 커널 하지만 의외로 커널이 뭐야? 라고 물으면 모르는 사람들이 많다.
간단히 정리해보자

커널
은 시스템에 존재하는 자원을 효율적으로 관리하는 자원 관리자로, 그 기능을 간단히 살펴보면

프로세서 관리 - 처리 속도를 향상시키기 위해 여러 프로세서를 병렬로 연결하여 사용한다. 시스템에서 동작하는 프로세스도 커널에서는 관리해야할 자원이고, 운영체제의 처리 요구에 맞춰 동작할수 있도록 각 프로세스에 필요한 프로세서를 효율적으로 할당하고 수행하도록 관리한다.

프로세스 관리 - 운영체제에서는 최소한 하나 이상의 프로세스가 동작한다. 프로세스는 다른말로 태스크라고도 하며, 주어진 일을 수행하는 기본 단위다. 커널은 스케줄러를 이용하여 여러 프로세스가 동작할 수 있도록 각 프로세스를 생성하고 제거하며, 외부환경과 프로세스를 연결하고 관리한다.

메모리 관리 - 각각의 프로세스가 독립적인 공간에서 수행할 수 있도록 가상 주소 공간을 제공한다. 가상메모리를 바탕으로 물리적인 한계를 극복할수 있는 기능을 제공한다.

이외에도 파일 시스템 관리, 디바이스 제어, 네트워크 관리 정도가 있다.



리눅스 커널은 운영체제에서 가장 중요한 부분이다. 프로세서와 시스템 메모리에 상주하면서 디바이스나 메모리 같은 하드웨어 자원을 관리하고, 프로세스의 스케줄을 관리하여 다중 프로세스를 구현하고, 시스템에 연결된 입출력을 처리하는 운영체제의 핵심 역할을 수행한다.

그렇다면 리눅스 커널의 특징은 무엇일까

모놀리식 커널 - 리눅스 커널은 대부분 유닉스 커널과 같은 모놀리식(monolithic)이다. 모놀리식이기 때문에 논리적으로 구분되는 여러 구성요소들이 상호간에 연결되어 동작한다.

비선점형(커널 2.4)과 선점형(커널2.6) - 비선점형 커널은 프로세스의 동작 상태가 사용자 모드에서 커널 모드로 진입하면 외부에서 해당 프로세스를 중지시키지 못한다. 반대로 프로세스가 커널 모드로 동작하더라도 스케줄링 정책이나 다른 외부적인 접근을 통해 프로세스를 강제로 중지시킬 수 있는 경우를 선점형이라고 한다. 2.6커널은 선점형과 비선점형을 선택할 수 있다.

가상 메모리 시스템(VM) - 리눅스 커널은 다양한 플랫폼에서 동작하는 운영체제이므로 i386에서 동작되던 메모리 관리 시스템을 표준화 하여 다양한 MMU 디바이스에 적용할 수 있도록 구성되어있다.

No MMU 지원 - 리눅스 커널은 주로 MMU를 이용한 메모리 관리를 수행하지만 임베디드 시스템에서 사용하는 프로세서의 경우는 MMU디바이스가 없는 경우도 있다. 커널 2.6에서는 MMU가 없는 시스템도 지원한다.

가상 파일 시스템(VFS) - 리눅스에서는 ext2를 비롯 다양한 파일 시스템을 사용할수 있고, 윈도우에서 동작하는 NTFS파일 시스템과 FAT32도 처리할 수 있다.

모듈을 이용한 커널 확장 - 운영 체제가 동작하는 중에도 커널 코드를 추가하거나 삭제할수 있다.

커널 스레드 - 커널 2.4이전에는 매우 제한된 커널 스레드를 지원했지만, 2.6에서부터는 NPTL(Native POSIX Threading Libray)과 NGPT(Next Generation POSIX Threading Package)를 지원한다.

멀티스레드 지원, 멀티 프로세서 지원, GPL 라이센스 

[출처] 리눅스 커널이란?|작성자 quwoo


Comments