본문 바로가기
C++ 200제/코딩 IT 정보

[리눅스 개발자 필수] Linux 커널 Kernel 기초 이론 5가지 이해하기

by vicddory 2017. 1. 27.

[리눅스 개발자 필수] 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가지 이해하기

댓글