티스토리 뷰
목차
[리눅스 개발자 필수] Linux 커널 Kernel 기초 이론 5가지 이해하기
1. 리눅스 커널 접근 방식 구조
리눅스 커널 접근하는 방법에 따라 모노리딕 커널(monolithic kernel)과 마이크로 커널(micro kernel)로 분류
[리눅스 개발자] 리눅스 커널 분류
2. 리눅스 모노리닉 커널
- 컴퓨팅 자원 관리에 필요한 모든 기능을 하나로 통합한 커널
- 같은 메모리 공간 내에 필요한 모든 기능을 구현
: 함수 호출(function call) 혹은 전역 변수를 이용하여 커널의 기능을 사용
- 장점 : 구현이 쉽고 시스템 자원을 효율적으로 이용
- 단점
: 커널 코드에 하드웨어와 관련된 저수준 상호 작용이 포함되어서 다른 시스템에서 이용하기 어려움
: 커널의 기능을 확장할수록 커널의 크기가 방대해져 관리하기 어려움
- Solaris, AIX, HP-UX
3. 리눅스 마이크로 커널
- 모노리딕 커널과는 달리 시스템 자원 관리에 필요한 기능들을 소규모 서버 모듈로 나누어 설계
: 소규모 서버들을 관리할 수 있는 최소한의 기능만을 구현한 커널
- 마이크로 커널은 시스템에 관련된 많은 특정 부분을 사용자 영역으로 이관
- 장점
: 리눅스 개발자가 기능을 확장하기 쉽고 개발된 소규모 서버 모듈을 재사용 가능
- 단점
: 모노리딕 커널보다 구현이 어려움
: 메시지 전달(message passing) 방식으로 커널에서 제공하는 기능을 사용하기 때문에 오버헤드가 큼
: 시스템 자원을 효율적으로 사용하기 어려움
- CMU Mach, Cray UNICOS/mk 등이 있다.
[리눅스 개발자 필수] Linux 커널 Kernel 기초 이론 5가지 이해하기
4. 리눅스 커널과 운영체제
리눅스 운영체제 역할
- 컴퓨터 시스템의 각종 자원을 효율적으로 관리 운영
- 사용자에게 최대의 편리성을 제공
- 컴퓨터 하드웨어와 사용자 간의 인터페이스 역할을 하는 시스템 프로그램
운영체제의 핵심은 리눅스 커널 (kernel)
- 커널은 컴퓨터 시스템의 자원을 관리하고 서비스 제공
- 메모리에 상주하여 시스템의 구동에 필요한 환경을 만들고 관리하는 운영체제의 핵심 소프트웨어
- 자원 (resource)
: 물리적 자원 - 프로세서, 메모리, 디스크, 터미널, 네트워크 등과 같은 시스템 구성 요소들과 주변 장치
: 추상적 자원 - 태스크와 스레드, 페이지page와 세그먼트segment, 파일 및 inode, 통신 프로토콜 및 패킷 등, 보안 혹은 사용자 계정에 따른 접근 제어 등
[리눅스 개발자] 리눅스 커널 구조
5. 윈도우와 리눅스
윈도우 NT
- 초기에는 마이크로 커널로 설계
- 버전 3.51 이후부터는 성능상의 이유로 더는 마이크로 커널 구조 채택하지 않음
리눅스
- 모노리딕 커널 방식을 사용
- 마이크로 커널의 확장성과 재사용성에 대한 장점을 모듈module이라는 개념을 도입하여 보완
[리눅스 개발자 필수] Linux 커널 Kernel 기초 이론 5가지 이해하기