728x90

커널의 역할
커널은 운영 체제의 핵심 부분이므로, 커널의 역할 역시 운영 체제의 핵심 역할이라 할 수 있다.

보안:  
커널은 컴퓨터 하드웨어와 프로세스의 보안을 책임진다.

자원 관리: “스케줄링”
한정된 시스템 자원을 효율적으로 관리하여 프로그램의 실행을 원활하게 한다. 특히, 프로세스에 ‘처리기’를 할당하는 것을 ‘스케줄링’이라 한다.

추상화:
같은 종류의 부품에 대해 다양한 하드웨어를 설계할 수 있기 때문에 하드웨어에 직접 접근하는 것은 문제를 매우 복잡하게 만들 수 있다. 

일반적으로 커널은 운영 체제의 복잡한 내부를 감추고 깔끔하고 일관성 있는 ‘인터페이스’를 하드웨어에 제공하기 위해 몇 가지 하드웨어 추상화(같은 종류의 장비에 대한 공통 명령어의 집합)들로 구현된다. 

이 하드웨어 추상화는 프로그래머가 여러 장비에서 작동하는 프로그램을 개발하는 것을 돕는다. 

‘하드웨어 추상화 계층(HAL)’은 제조사의 장비 규격에 대한 특정한 명령어를 제공하는 소프트웨어 ‘드라이버’에 의지한다.



초창기의 커널
초창기의 컴퓨터에서 운영 체제 커널은 필수적인 것이 아니었다. 초기의 프로그램은 하드웨어 추상화나 운영 체제의 지원을 받지 않고도 컴퓨터만으로 불러들인 다음 실행될 수 있었으며, 이것은 초창기 컴퓨터들의 일반적인 운영 방식이었다. 

다른 프로그램을 실행하기 위해서는 컴퓨터의 전원을 껐다가 켬으로써 다시 입력자료를 읽어들여야 하는 방식이었다. 

이러한 과정이 반복되면서 사람들은 '로더'와 '디버거' 같은 작은 프로그램들이 상주해 있는 것이, 다른 프로그램으로 교체하거나 새로운 프로그램을 개발하는 데 유리하다는 사실을 알게 되었다. 이와 같은 ‘로더’, ’디버거‘들이 초기 운영 체제 커널의 기초가 되었다



커널의 종류
단일형 커널(monolithic kernel): 커널의 다양한 서비스 및 높은 수준의 하드웨어 추상화를 하나의 덩어리(주소 공간)로 묶은 것이다. 

운영 체제 개발자 입장에서 유지 보수가 일반적으로 더 어려우나 성능이 좋다.

마이크로커널(microkernel): 하드웨어 추상화에 대한 간결한 작은 집합을 제공하고 더 많은 기능은 서버라고 불리는 응용 소프트웨어를 통해 제공한다.

혼합형 커널(hybrid kernel): 성능 향상을 위해 추가적인 코드를 커널 공간에 넣은 점을 제외하면 많은 부분은 순수 마이크로커널과 비슷하다. 수정 마이크로커널이라고도 한다.

나노커널(nanokernel): 실질적으로 모든 서비스를 책임진다.

엑소커널(exokernel): 낮은 수준의 하드웨어 접근을 위한 최소한의 추상화를 제공한다. 전형적으로 엑소커널 시스템에서는 커널이 아닌 라이브러리가 단일형 커널 수준의 추상을 제공한다

+ Recent posts