본문 바로가기

OS/Linux

Linux - kernel(커널) 이란 무엇일까?

728x90

[Kernel 정의]

운영체제(OS)의 핵심적인 부분으로 컴퓨터 하드웨어와 응용프로그램 사이를 연결해 주는 인터페이스

시스템에 존재하는 자원을 효율적으로 관리하기 때문에 사용자와 상호작용은 하지 않고 이를 지원하는 프로그램이 대표적으로 Shell이 있다. Shell 이 궁금하다면? [OS/Linux] - Linux - shell(쉘,셸) 이란 무엇일까?


[Kernel의 기능]

  • 프로세서 관리
     - 운영체제의 처리속도를 향상시키기 위해 여러 프로세서를 병렬로 연결하여 사용한다. 시스템에서 동작하는 프로세스도 커널에서는 관리해야 할 자원이고, 운영체제의 처리 요구에 맞춰 동작하도록 각 프로세스에 필요한 프로세서를 효율적으로 할당하고 수행하도록 관리한다.
  • 프로세스(Task) 관리
     - 커널은 스케줄러를 이용하여 여러 프로세스가 동작하도록 각 프로세스를 생성하고 제거하며, 외부환경과 프로세스를 연결하고 관리한다.
  • 메모리 관리
     - 각각의 프로세스가 사용할 가상 주소 공간을 제공해준다. 가상메모리를 바탕으로 물리적인 한계를 극복할 수 있는 기능을 제공한다. 
  • 파일 시스템 관리
     - 물리적 자원인 디스크를 추상적 자원인 File로 제공해준다.
  • 디바이스 제어
     - 각종 외부 장치를 운영체제에 연결 가능하도록 제어해준다.
  • 네트워크 관리
     - 물리적 자원인 네트워크 장치를 추상적 자원인 Socket으로 제공해준다.

※ 태스크(task)란 컴퓨터가 주어진 일을 수행하는 기본 단위

[Kernel의 역할]
커널은 프로세서와 시스템 메모리에 상주하면서 자원을 관리하고, 스케줄러를 관리하여 다중 프로세스를 구현하고, 시스템에 연결된 입출력을 처리하는 운영체제의 핵심 역할을 수행한다.


[Kernel의 특징]

  • 단일형 커널(monolithic kernel)
     - 리눅스 커널은 대부분 유닉스 커널과 같은 모놀리식(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 라이센스
728x90
반응형