커널은 컴퓨터와 하드웨어의 작동을 관리하는 운영체제의 핵심 구성 요소이다. 커널은 프로세스 간 통신과 시스템콜(system calls)을 통해, 응용 프로그램과 하드웨어 수준에서의 데이터 처리 간 중간다리 역할을 한다.
커널은 운영체제가 로드될 때 먼저 메모리에 올려지고 운영체제가 다시 종료될 때까지 메모리에 남아 있게 된다. disk, task, memory 등 의 관리를 담당한다.
커널은 기본적으로 사용자 수준의 응용 프로그램과 하드웨어 간 인터페이스 역할을 하며, 커널의 주요 목표는 이들 사이의 통신을 관리하는 것이다.
일반적으로 커널에 여러가지 프로그램들을 포함해서 운영체제(OS)라고 칭한다.
커널 위에서 동작하는 프로그램 중 대표적인 게 쉘 프로그램이다. 운영체제의 대표적인 역할 중 하나가 사용자가 컴퓨터를 쓸 수 있게끔 하는 것인데, 이와 관련한 인터페이스를 제공해주는 프로그램이 바로 쉘이다. 즉, 쉘은 기본적으로 커널과 사용자 사이에 존재하는 인터페이스이다.
쉘 타입은 크게 2가지로 구분된다. 터미널 환경(Command Line Interface)와 GUI 환경(Graphical User Interface). 어쨌든 쉘도 응용 프로그램 중 하나이므로 아래와 같은 구조를 가진다.
Kernel in Operating System
What is an OS Kernel?
Difference Between Kernel and Shell
Difference between application and shell