커널(운영체제)

덤프버전 :

분류

1. 개요
2. 커널의 종류
2.1. 단일형 커널
2.2. 마이크로커널
2.3. 혼합형 커널
3. 커널 프로그래밍 요소


1. 개요[편집]


커널(Kernel)은 운영체제의 심장이자 이를 규정짓는 매우 중요한 소프트웨어. 하드웨어의 자원을 자원이 필요한 프로세스에 나눠주고, 덩달아 프로세스 제어(작업 관리), 메모리 제어, 프로그램이 운영 체제에 요구하는 시스템 콜 등을 수행하는 부분으로 운영 체제 맨 하부에서 돌아간다. 현재 많이 사용되고 있는 운영 체제는 커널 위에 여러 가지 소프트웨어 계층을 올린 것. 이렇기 때문에 커널이 날아가게 되면 운영 체제를 못 쓰게 된다. 이 커널도 한번씩 오작동 하여 정지할 때가 있는데, 이를 가리켜 커널 패닉이라고 부른다. 요즘은 억지로 볼 수는 있지만 베타 테스트 버전이 아닌 이상 일반적인 상황에선 보기 어렵다.

어쨌든 커널로 운영 체제의 정체성을 결정하기에 매우 중요하다고 볼 수 있다. 페도라, 우분투 등이 리눅스로 묶이는 것도 이들이 같은 리눅스 커널을 사용하고 있기 때문.


2. 커널의 종류[편집]


커널은 단일형 커널(monolithic kernel), 마이크로커널(microkernel), 혼합형 커널(hybrid kernel), 엑소커널(exokernel), 나노커널(nanokernel) 등 여러가지가 있지만, 그 중 단일형 커널, 마이크로커널, 혼합형 커널이 많이 알려져 있다. 엑소커널은 정확히 다른 방식의 커널은 아니다. 엑소커널은 다른 커널 구조의 보너스로 들어가는 것으로, 프로그램에게 하드웨어로 직접 제어할수 있는 선택권을 준다. 나노커널은 실질적으로 모든 서비스를 책임지는 특징을 가지고 있다.

각각 다 장단점을 가지고 있으며, 예전에는 단일형 커널이 우세하냐 아니면 마이크로 커널이 우세하냐라는 키배 논쟁이 벌어지기도 했다. 이 논쟁은 논쟁을 벌인 두 사람의 이름을 따 "앤드루 태넌바움 vs 리누스 토르발스 논쟁"이라 불린다. 앤드루 태넌바움은 리누스 토르발스도 썼던 미닉스를 개발한 사람이다.

커널은 장치의 하드웨어 리소스를 관리하고 운영체제의 다른 모든 부분을 제어하기 때문에 https://jkcb.tistory.com/58은 매우 크다고 할 수 있다.


2.1. 단일형 커널[편집]


파일:external/www.makelinux.net/Linux_kernel_diagram.png
리눅스 커널 구조도

단일형 커널(monolithic kernel)은 입출력, 네트워크, 주변 장치 관리 등의 운영 체제에서 일어나는 모든 일들을 한 개의 커널이 다 처리하는 방식이다. 속도가 빠르고 설계도 편리하지만, 잠재적 안정성 문제에 커널의 크기도 무지막지하게 커진다. 이 방식을 따르는 운영 체제는 다음과 같다.

다만 순수한 의미로서의 단일형 커널은 점차 찾아보기 힘들어지고 있는데 Linux의 DKMS, FreeBSD의 kld, NetBSD의 module과 같이 커널 바이너리에 어떠한 기능이 포함되어 있지 않더라도 커널에 기능을 추가할 수 있는 등 마이크로커널의 모듈형 설계에서 보이는 특성들 또한 섞여 있기 때문이다.


2.2. 마이크로커널[편집]


파일:external/www.linuxpromagazine.com/Figure-1.png
마이크로커널(microkernel)은 시스템 콜, 그리고 주변 장치 관리는 서버라는 응용 프로그램 계층으로 제공하는 방식으로 커널에서 제외하여 안정성을 높이고 크기도 줄인 설계 방식이다. 안정성과 보안 수준이 높아지지만, 성능이 떨어진다. 이 방식을 따르는 운영 체제는 다음과 같다.


2.3. 혼합형 커널[편집]


파일:Windows NT 커널 구조도.svg
윈도우 NT 계열 커널 구조도

혼합형 커널(hybrid kernel)은 마이크로커널에 단일형 커널의 장점을 혼합해 만든 설계 방식이다. 성능이 필요한 운영 체제 서비스를 커널에 집어넣었다. 그래서 리누스 토발즈는 이 용어가 단순히 마케팅 목적으로 만든 용어에 불과하다고 말하기도 했다. 아무튼 이 방식을 따르는 운영 체제는 다음과 같다.


3. 커널 프로그래밍 요소[편집]



[각주][각주]
파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는
문서의 r79 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}}에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r79 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)
문서의 r387 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)




파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-12-20 10:13:29에 나무위키 커널(운영체제) 문서에서 가져왔습니다.