1. 커널 (kernel) 이란?
커널 (kernel)은 OS의 심장같은 부분
하드웨어의 자원을 자원이 필요한 프로세스(프로그램 수행상태)에 나눠주고, 그 프로세스를 제어하는 작업관리자 (task manager), 프로그램이 OS에 요구하는 시스템콜 (system call) 등 운영체제의 가장 하부, 기반을 담당하는 소프트웨어
시스템 자원이 제한된 상황에서 수 많은 프로그램의 수행 상태 (프로세스) 간의 보안 접근을 책임짐
"스케줄링(scheduling)" 의 역할이라고 정리할 수 있음
현재 사용되는 OS는 커널(kernel) 위에 여러가지 레이어를 올린 것
따라서, kernel 이 날아가면 OS는 못 쓰게 됨
2. 커널의 종류

크게 단일형 커널 (microlithic kernel)과 마이크로 커널 (microkernel) 로 분류함
(1) 단일형 커널 (monolithic kernel)

하나의 커널이 그 운영체제에서 일어나는 입출력, 네트워크, 디바이스 지원 등 모든 일을 다 처리하는 방식
ex. Linux kernel, microsoft windows NT 커널 등
단일형 커널이라는 software 는 연산을 제공하는 모듈을 같은 주소 공간 안에서 실행시키기 때문에 코드가 매우 집적도 높게, 조밀하게 짜여져 있어서
(1) 수정하기가 어렵고
(2) 하나의 모듈만 오류가 있어도 시스템 전체가
멈출 수 있다는 문제가 있음
하지만 그런만큼 그 하나의 코드가 신뢰할만큼 완전하다면 컴포넌트의 집적도 높기 때문에
(1) 처리 속도가 빠르고
(2) 디자인이 깔끔하다는 장점도 있음
(2) 마이크로 커널 (microkernel)
단일형(모놀리식) 커널과 달리 하드웨어 위에 매우 간결한 추상화만 제공
네트워킹 같이 모놀리식 커널이 제공하는 네트워킹 같은 서비스는 '서버'로 구현함
(서버는 사용자들의 공간 프로그램임)
안정성 높이고 커널 크기도 줄임
보안도 높음
but
전반적 퍼포먼스가 저하
(3) 혼합형 커널 (hybrid kernel)
본질적으로 마이크로 커널을 따르나
사용자 레벨(서버)에서 사용하면 느린 코드들은 커널 레벨에서 사용하도록 수정한 것
ex. XNU (Darwin과 이에 기반을 둔 MacOS, iOS가 사용하는 커널)
'Language > 기본 용어' 카테고리의 다른 글
프로그래밍에서 변수(variable) 이름을 정하는 방법 (0) | 2022.01.17 |
---|---|
[프로그래밍 기초] 추상화 (abstraction), 캡슐화 (encapsulation) 란? (0) | 2022.01.14 |
모듈 (module), 모듈화 (modularity) 란? (0) | 2022.01.14 |
이스터에그 (easter egg) 란? (0) | 2022.01.14 |
모바일 AP 란? (0) | 2022.01.14 |