(OS) 커널(Kernel)이란?

Su Bak
4 min readSep 21, 2021

개발 공부를 하다 커널(Kernel)이란 용어를 자주 접했었는데요. 정확한 의미를 모르다가 최근에 알게 되어 이를 공유하고자 글을 올립니다. 이 글은 Linux를 기준으로 설명하고 있습니다.

컴퓨터의 구분

컴퓨터는 크게 2가지로 구분할 수 있습니다. 물리적으로 만질 수 있는 하드웨어(키보드, 모니터, 컴퓨터 본체와 본체 안에 있는 CPU, 메모리 등)와 물리적으로 존재하지 않는 소프트웨어로 구분할 수 있는데요.

소프트웨어의 구분

소프트웨어의 경우 크게 운영체제(Linux, MacOS, Windows 등)와 그 위에 설치되는 프로그램인 응용 프로그램 (Exel, Chrome 등)으로 다시 나눌 수 있습니다.

운영체제의 구분

그리고 운영체제커널(Kernel)시스템 프로그램으로 구분됩니다. 드디어 이 글에서 설명하고자 하는 커널이 등장했습니다.

커널의 역할

영어 사전에서 Kernel 을 검색해보면 “알맹이, 핵심” 이란 뜻을 가지고 있습니다.

단어의 뜻에서 유추해볼 수 있듯이 커널은 “운영체제의 핵심부로 컴퓨터 자원들을 관리하는 역할”을 수행합니다.

컴퓨터 자원(System Resource) : CPU, 메모리, 파일, 네트워크, 입출력 장치 등

즉, 커널은 항상 컴퓨터 자원만 바라보고 있는 것이죠. 그런데 사용자가 컴퓨터의 자원에 접근해야할 때는 어떻게 해야할까요?

방금 소개했다시피 커널의 경우 컴퓨터 자원만 바라보고 있기 때문에 사용자와의 상호작용은 전혀 지원하지 않습니다.

이 때 등장하는 것이 바로 시스템 프로그램입니다. 대표적인 시스템 프로그램으론 쉘(Shell)이 있는데요.

쉘(Shell) : 사용자가 컴퓨터에게 전달하는 명령을 해석하는 프로그램. 즉, 커널과 사용자간의 다리 역할을 수행한다.

사용자는 이 쉘을 통해 커널에게 명령을 내릴 수 있는 것이죠.

컴퓨터의 세분화

지금까지 컴퓨터를 세분화한 것을 보기 쉽게 표현하면 아래와 같습니다.

컴퓨터(Computer)
-> 하드웨어(Hardware)…

--

--

Su Bak

Backend Developer. Mainly use JavaScript but try not to have language constraints. Always trying to acquire new knowledge