1. OS와 커널
Section titled “1. OS와 커널”-
커널은 시스템의 기본적인 서비스를 제공하고, HW를 관리하며, 리소스를 분배하는 핵심 SW를 의미한다.
-
커널의 주 구성요소
- 인터럽트 핸들러 (ISR, Interrupt Service handler Routain)
- 프로세스 스케줄러 (Scheduler)
- 메모리 관리 시스템 (MM, Memory Management)
- 네트워크 및 IPC 서비스
-
일반적으로 사용자는 시스템의 ‘유저 공간’에서 사용자 애플리케이션을 수행하며, 커널 기능이 필요할 때 시스템콜 또는 인터럽트를 호출해 ‘커널 공간’에 있는 커널 애플리케이션을 요청한다.
2. UNIX vs LINUX
Section titled “2. UNIX vs LINUX”UNIX와 다르게 LINUX는..
- 커널 모듈 동적 로드 기능을 제공한다. (Monolothic kernel이지만 동시에 micro kernel 성격도 가짐)
- SMP(symmetric multiprocessing)를 지원한다. (최신 상용 UNIX도 지원한다)
- 커널도 선점형 스케줄러로 동작한다.
- 프로세스와 스레드를 구분하지 않는다.
- 디바이스 파일시스템(sysfs) 등을 지원해 객체지향적 장치 모델을 지원한다.
3. 커널 소스 트리
Section titled “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. 커널의 특징
Section titled “4. 커널의 특징”- 커널은 속도 및 크기를 이유로 표준 C 라이브러리(libc) 대신 GNU C(glibc)를 이용한다.
- 커널 공간에는 유저 공간과 같은 메모리 보호 기능이 없다.
- 커널은 부동소수점 연산을 쉽게 수행할 수 없다.
- 커널은 프로세스당 고정된 작은 크기의 스택을 사용한다.
- 커널은 비동기식 선점형 인터럽트를 지원하며, SMP를 지원하므로 동기화 및 동시성(concurrency) 문제가 매우 중요하다.
참고