커널(Kernel)

2020-03-20

이번 포스팅에서는 커널(Kernel)에 대한 간단한 정리입니다.


Kernel 정의

컴퓨터 과학에서 커널(kernel)은 컴퓨터의 운영 체제의 핵심이 되는 컴퓨터 프로그램의 하나로,

시스템의 모든 것을 완전히 통제한다.

운영 체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러 가지 서비스를 제공한다.

핵심(核心)이라고도 한다.

커널과 운영체제는 근본적으로 분리하여 생각 할 수는 없지만 커널이 운영체제에서

차지하는 역할이 매우 중요하기 때문에 따로 설명을 하고 넘어갈 필요성이 있다.

커널은 하드웨어와 운영체제 사이에 위치하며 운영체제와의 경계가 확실히 구분 된다고 볼 수는 없다.

커널의 대표적인 역할은 보안, 자원관리, 추상화 등의 역할을 담당하고 있다.

자원관리

한정된 시스템 자원을 효율적으로 관리, 배분하여 프로그램의 실행을 원활하게 하는 것을 말한다.

관리, 배분하는 것을 스케줄링이라 하고, 운영체제에 따라서 여러 가지 다양한 방법의 스케줄링이 존재한다.

추상화

프로그램이 다양한 하드웨어에 직접 접근할 때 문제가 매우 복잡해질 수 있으므로 커널은 하드웨어 및

운영 체제의 복잡한 내부를 감추고 깔끔하고 일관성 있는 인터페이스를 하드웨어에 제공하기 위해

추상화(같은 종류의 장비에 대한 공통 명령어의 집합)들로 구현해 놓는다.

이 하드웨어 추상화는 프로그래머가 하드웨어 의존도를 낮추고 소프트웨어만 집중할 수 있게 돕는다.

이러한 커널의 종류는 BSD와 같은 전통적인 유닉스 커널, 리눅스 커널, 솔라리스 커널, 윈도우 NT 커널, KeyKOS, Mach 등이 있다.

커널이 운영체제에서 차지하는 역할은 하드웨어 추상화 계층의 역할을 한다는 점이다.

즉,하드웨어의 차이를 숨겨서 응용 프로그램이 작동할 수 있는 일관된 플랫폼을 제공한다는 것이며 이는 BSD, 리눅스, 윈도우 계열의 상용 운영체제에서 공통적으로 적용되는 기술이다.

이런 이유로 우리는 프로세서가 인텔의 프로세서이건 AMD의 프로세서이건 상관하지 않고 작업할 수 있다