커널(kernel, 운영체제)
OS의 심장이자 OS를 규정짓는 매우 중요한 부분. 하드웨어의 자원을 자원이 필요한 프로세스에 나눠주고, 덩달아 프로세스 제어(태스크 매니저), 메모리 제어, 프로그램이 운영체제에 요구하는 시스템 콜 등을 수행하는 부분으로 운영체제 맨 하부에서 돌아간다. 쉽게 말해 OS를 하나의 기업체로 비유한다면 커널은 인사담당 부서인 셈이다. 현재 많이 사용되고 있는 OS는 커널 위에 여러 가지 레이어를 올린 것. 이렇기 때문에 커널이 날아가게 되면 운영체제를 못쓰게 된다. 이 커널도 한번씩 오작동 하여 정지할 때가 있는데, 이를 가리켜 커널 패닉이라고 부른다. 물론 현재는 억지로 볼 수는 있지만 일반적인 상황에선 꽤나 보기 힘들다.
어쨌든 커널로 운영체제의 정체성을 결정하기에 매우 중요하다고 볼 수 있다. 페도라, 우분투 등이 다 리눅스로 묶이는 것도 이들이 리눅스 커널을 사용하고 있기 때문.
아직 와 닿지 않는다면, NT 커널 기반에서 KERNEL32.dll, Hal.dll, ntdll.dll, ADVAPI32.dll, KERNELBASE.dll(윈7) 등을 날려보면 된다. 이제 부팅이 되지 않는다. 정말로 망했어요.
커널은 단일형 커널(monolithic kernel), 마이크로커널(microkernel), 혼합형 커널(hybrid kernel), 엑소커널(exokernel), 나노커널(nanokernel) 등 여러가지가 있지만, 그 중 모놀리식 커널, 마이크로커널, 하이브리드 커널이 많이 알려져 있다. 엑소커널은 정확히 다른 방식의 커널은 아니다. 엑소커널은 다른 커널 구조의 보너스로 들어가는 것으로, 프로그램에게 하드웨어로 다이렉트로 컨트롤할수 있는 선택권을 준다. 나노커널은 실질적으로 모든 서비스를 책임지는 특징을 가지고 있다.
각각 다 장단점을 가지고 있으며, 예전에는 단일형 커널이 우세하냐 아니면 마이크로 커널이 우세하냐라는 키배 논쟁이 벌어지기도 했다. 이 논쟁은 논쟁을 벌인 두 사람의 이름을 따 "앤드루 태넌바움 vs 리누스 토르발스 논쟁"이라 불린다. 앤드루 태넌바움은 리누스 토르발스도 썼던 미닉스를 개발한 사람이다.

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

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

혼합형 커널(hybrid kernel)은 모놀리식 커널에다가 마이크로커널 디자인을 집어넣어 만든 디자인 방식이다. 이 방식을 따르는 운영체제는 다음과 같다.
리눅스 커널(Linux kernel)은 유닉스 계열 운영 체제의 커널이다. GNU 일반 공중 사용 허가서 버전 2 (GPLv2) 아래에서 공개되었으며 전 세계적으로 배포자들이 개발한 리눅스는 가장 두드러진 자유 소프트웨어 / 오픈 소스의 본보기들 가운데 하나이다.
리눅스 커널은 1991년에 리누스 토르발스에 의해 생긴 말이다. 일찍이 미닉스 커뮤니티가 리눅스 커널에 코드와 개념을 제공하였다. 그 당시 GNU 프로젝트는 자유 소프트웨어 운영 체제에 필요한 요소를 많이 만들어 냈지만 자체 커널 GNU 허드는 완전하지 않았고 이용성이 없었다. BSD 운영 체제는 법적 문제로부터 헤어나오지 못했다. 이는 초기 버전의 제한된 기능에도 불구하고 리눅스가 새로운 운영 체제를 사용하기 위한 프로젝트로부터 코드를 채용한 개발자들과 사용자들을 빠른 속도로 모았다는 것을 말해 준다. 오늘날 리눅스 커널은 수많은 프로그래머로부터 기여를 받고 있다.
첫댓글 프로그램을 개발하는 사람들은 커널을 자유롭게 사용할 수 있는 리눅스를 선호합니다. 오래전 제가 진공관 오디오에 대해서 고민할 때 같은 아파트에 사는 친구가 자신은 프로그램으로 오디오를 개발했다고 자랑했습니다. 어떻게 만들었느냐고 물었더니 리눅스 프로그램을 통해서 32bit 사운드를 연산을 통해서 128bit로 바꾸면 오디오급 소리가 난다고? 결국 128bit급 사운드카드를 개발한 셈.... 단점은 CPU 부하가 많이 걸려서 컴퓨터 속도가 느려진다는 점... 커널이란 소프트웨어와 하드웨어에서 원활하게 작동할 수 있도록 일종에 컴파일링 작용을 하는 언어를 말하는 것으로 이해됩니다.