Skip to content

커널 개념

1. OS와 커널

  • 커널은 시스템의 기본적인 서비스를 제공하고, HW를 관리하며, 리소스를 분배하는 핵심 SW를 의미한다.

  • 커널의 주 구성요소

    • 인터럽트 핸들러 (ISR, Interrupt Service handler Routain)
    • 프로세스 스케줄러 (Scheduler)
    • 메모리 관리 시스템 (MM, Memory Management)
    • 네트워크 및 IPC 서비스
  • 일반적으로 사용자는 시스템의 ‘유저 공간’에서 사용자 애플리케이션을 수행하며, 커널 기능이 필요할 때 시스템콜 또는 인터럽트를 호출해 ‘커널 공간’에 있는 커널 애플리케이션을 요청한다.

2. UNIX vs LINUX

UNIX와 다르게 LINUX는..

  • 커널 모듈 동적 로드 기능을 제공한다. (Monolothic kernel이지만 동시에 micro kernel 성격도 가짐)
  • SMP(symmetric multiprocessing)를 지원한다. (최신 상용 UNIX도 지원한다)
  • 커널도 선점형 스케줄러로 동작한다.
  • 프로세스와 스레드를 구분하지 않는다.
  • 디바이스 파일시스템(sysfs) 등을 지원해 객체지향적 장치 모델을 지원한다.

3. 커널 소스 트리

커널 소스 트리는 여러 개의 디렉토리로 구성되는데, 최상단의 주요 디렉토리에 대한 설명은 다음과 같다.

  • arch: 특정 아키텍처(i.e. ARM, PowerPC, x86 등)에 대한 소스코드
  • block: 블록 I/O 관련 기능에 대한 소스코드
  • crypto: 암호화 관련 기능에 대한 소스코드
  • Documentation: 커널 소스와 관련된 문서 모음
  • drivers: 장치 드라이버 관련 소스코드
  • firmwares: 특정 장치 드라이버를 사용할 때 필요한 펌웨어의 모음
  • fs: 파일시스템 관련 소스코드
  • include: 커널의 헤더 파일 모음
  • init: 커널 초기화 관련 소스코드
  • ipc: 프로세스 간 통신(IPC) 관련 소스코드
  • kernel: 스케줄러와 같은 핵심 커널 시스템 관련 소스코드
  • lib: 유틸리티 모음
  • mm: 메모리 관리 시스템 및 가상 메모리 관련 소스코드
  • net: 네트워크 관련 소스코드
  • samples: 예제 및 데모 코드 모음
  • scripts: 커널 빌드를 위한 스크립트 모음
  • security: 보안 기능 관련 소스코드
  • sound: 사운드 시스템 기능 관련 소스코드
  • usr: 초기 사용자 공간 소스코드
  • tools: 리눅스 커널 개발에 유용한 도구 모음
  • virt: 가상과 기반 구조 관련 소스코드

4. 커널의 특징

  • 커널은 속도 및 크기를 이유로 표준 C 라이브러리(libc) 대신 GNU C(glibc)를 이용한다.
  • 커널 공간에는 유저 공간과 같은 메모리 보호 기능이 없다.
  • 커널은 부동소수점 연산을 쉽게 수행할 수 없다.
  • 커널은 프로세스당 고정된 작은 크기의 스택을 사용한다.
  • 커널은 비동기식 선점형 인터럽트를 지원하며, SMP를 지원하므로 동기화 및 동시성(concurrency) 문제가 매우 중요하다.

참고