커널

kernel.
colonel[1]

과일이나 곡류의 심, 어떠한 사물이나 사안의 핵심을 뜻하는 영단어. 문서 참고

1 운영체제의 커널

1.1 소개

OS의 심장이자 OS를 규정 짓는 매우 중요한 부분. 하드웨어의 자원을 자원이 필요한 프로세스에 나눠주고, 덩달아 프로세스 제어(태스크 매니저), 메모리 제어, 프로그램이 운영체제에 요구하는 시스템 콜 등을 수행하는 부분으로 운영체제 맨 하부에서 돌아간다. 쉽게 말해 OS를 하나의 기업체로 비유한다면 커널은 인사담당 부서인 셈이다. 현재 많이 사용되고 있는 OS는 커널 위에 여러 가지 레이어를 올린 것. 이렇기 때문에 커널이 날아가게 되면 운영체제를 못쓰게 된다. 이 커널도 한번씩 오작동 하여 정지할 때가 있는데, 이를 가리켜 커널 패닉이라고 부른다. 물론 현재는 억지로 볼 수는 있지만 일반적인 상황에선 꽤나 보기 힘들다.

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

아직 와 닿지 않는다면, NT 커널 기반에서 KERNEL32.dll, Hal.dll[2] , ntdll.dll, ADVAPI32.dll, KERNELBASE.dll(윈7) 등을 날려보면 된다. 이제 부팅이 되지 않는다. 정말로 망했어요 그리고 재부팅하고 비명을 지르면 된다. 자신이 리눅스를 쓴다면 실행 중인 init 프로세스를 날려보자 근데 요즘은 init 에다가 kill 날려도 안 죽는다

1.2 커널의 종류

커널은 모놀리식, 마이크로, 하이브리드, 엑소EXO 아니다(엑소 커널은 정확히 다른 방식의 커널은 아니다. 엑소커널은 다른 커널 구조의 보너스로 들어가는 것으로, 프로그램에게 하드웨어로 다이렉트로 컨트롤할수 있는 선택권을 준다) , 나노 등등등 여러가지가 있지만, 그 중 모놀리식, 마이크로, 하이브리드가 많이 알려져 있다. 각각 다 장단점을 가지고 있으며, 예전에는 모놀리식 커널이 우세하냐 아니면 마이크로 커널이 우세하냐라는 키배논쟁이 벌어지기도 했다. 이 논쟁은 논쟁을 벌인 두 사람의 이름을 따 앤드루 태넌바움 Vs 리누스 토르발스 논쟁이라 불린다.

1.2.1 모놀리식 커널


모놀리式 커널이 아니다
리눅스 커널 구조도

입출력, 네트워크, 디바이스 지원 등등의 운영체제에서 일어나는 모든 일들을 한 개의 커널이 다 처리하는 방식. 속도가 빠르고 디자인도 편리하지만, 잠재적 안정성 문제에 커널의 크기도 무지막지하게 커진다. 이 방식을 따르는 운영체제는 다음과 같다.

1.2.2 마이크로 커널


시스템 콜 같은 서비스, 그리고 디바이스 관리를 제외하여 안정성을 높이고 커널 크기도 줄인 디자인 방식. 안정성이 높고 또한 보안도 높아지지만, 전반적인 퍼포먼스는 저하된다. 이 방식을 따르는 운영체제는 다음과 같다.

1.2.3 하이브리드 커널

500px-Windows_2000_architecture.svg.png
윈도우 NT 계열 커널 구조도

모놀리식 커널에다가 마이크로 커널 디자인을 집어넣어 만든 디자인 방식이다. 이 방식을 따르는 운영체제는 다음과 같다.

  • NT 커널(Windows NT, 2000, XP, 비스타, 7, 8, 10, 윈도우 서버)
  • XNU(다윈과 이에 기반을 둔 OS X, iOS) - BSD의 모놀리식 커널과 마하 커널을 서로 합친 형태
  • BeOS, 하이쿠
  • Dragonfly BSD
  • Plan 9

2 수학에서의 Kernel

linear transformation T에 의해 0으로 옮겨지는 vector set을 kernel이라고 부르며, Ker(T)라고 표기한다.

3 노바1492 탑형몸통

해당 항목의 탑형 중량형 항목 참조

4 스타크래프트의 저그 건물

나이더스 커널의 줄임말. 문서 참조.
  1. 얼핏 보면 믿기지 않겠지만, colonel의 실제 영어 발음은 커넬이고, 발음 기호까지 뜯어봐도 kernel과 똑같다! 영어단어 중에서도 굉장히 골때리는 발음을 가진 사례.사실 kernel은 시스템 내에서 대령급으로 중요한 존재라 이렇다 카더라
  2. 저 파일은 하드웨어 추상화(HAL)에 구현되어 있는 시스템파일이다, 그건 없으면 부팅자체가 안된다. 단 윈도우 설치 CD를 사용하여 hal.dll파일를 Windows\System32폴더 복사하고 다시시작하면 부팅이 된다.