ㅎㅇ...안녕하십니까?
오늘은 커널에 대하여 알아볼건데요?
앞서 유저영역과 커널영역에 대하여 포스팅을 하기 전에, 알아야 할 개념인듯 해서 적었습니다.
바로 가보시죠
커널이란?
커널은 운영체제의 핵심이 되는 시스템 소프트웨어입니다. 상당히 로우레벨에 위치한 친구라고 할 수 있겟습니다.
시스템 소프트웨어인 이유는, 컴퓨터의 하드웨어와 소프트웨어를 중재자 역할을 하는 친구기 때문입니다.
여기서 하드웨어와 소프트웨어의 중재자라 함은, 하드웨어 자원(메모리, CPU, 저장 장치 등)을 소프트웨어가 안전하고 효율적으로 사용할 수 있도록 관리하고, 이 자원들을 안전하게 할당 및 해제해주기 때문입니다.
커널의 역할에 대해 간략히 알아보겠습니다.
- 프로세스 관리: 프로세스 생성, 종료, 스케줄링 등을 담당합니다. 여러 프로세스가 CPU 자원을 효율적으로 사용할 수 있도록 관리합니다.
- 메모리 관리: 실행중인 프로그램에 대한 메모리 할당 및 해재를 관리합니다. 또한 물리적 메모리와 가상 메모리의 상호 간 격리 및 보호 관리를 합니다.
- 파일 시스템 관리: 파일 및 디렉터리등의 저장 공간을 관리하며, 저장 장치와의 입출력(읽고 쓰기) 작업을 중재합니다.
- 시스템 호출인터페이스: 사용자 프로그램이 커널 기능을 사용할 수 있도록 시스템 호출(System Call)을 제공하여, 하드웨어 자원에 직접 접근하지 않고 커널을 통해 제어할 수 있게 합니다.
뭐 더 있겠지만 핵심적인 것만 짚었습니다. 넘어가자구요?
커널의 종류
앞서 커널의 역할에 대해 알아봤습니다.
근데 뭔가 추상적이지 않나요? 하드웨어 자원을 어떻게 관리하는지 등의 의문이 듭니다. (아니면 말고)
사실 커널은 한 종류가 아닙니다. 그에 따라 많은 커널의 동작 방식이 있는데요? 각자의 장단점이 있습니다.
한번 알아볼게요.
1. 모놀리식 커널(monolithic kernel)
단일형 커널이라고도 부릅니다. 입출력, 네트워크, 주변 장치 관리 등의 운영 체제에서 일어나는 모든 일들을 한 개의 커널이 다 처리하는 방식입니다.
장점 : 커널이 모든 일을 처리할 수 있어서 속도가 빠르고 설계가 편합니다.
단점 : 커널이 모든 짐을 짊어짐으로써 생기는 잠재적 안정성 문제가 있으며, 커널의 크기도 무지막지하게 커집니다.
사용 OS : Linux, Unix 등
2. 마이크로 커널(micro kernel)
유저 영역과 커널 영역을 나눈 구조를 가지며, 시스템 호출(System Call)을 통해 상호 간 통신을 하여 일을 처리하는 방식입니다.
장점 : 시스템 호출을 통해야만 커널에 접근할 수 있기 때문에 안정성과 보안 수준이 높습니다.
단점 : 시스템 호출을 통한 커널 영역의 접근에 따른 비용이 상당하기에 성능이 떨어집니다.
사용 OS : QNX, MINIX 등
3. 하이브리드 커널(hybrid kernel)
혼합형 커널이라고도 부릅니다. 모놀리식 커널과 마이크로 커널의 장점들을 결합해 만든 방식입니다.
장점 : 모놀리식 커널과 마이크로 커널의 장점을 적절히 잘 분배해 성능과 안정성이 보장됩니다.
단점 : 시스템 호출을 통한 상호 간 영역 전환에 대한 비용이 있음.(사실상 마이크로 커널의 단점)
'프로그래밍 > CS' 카테고리의 다른 글
[CS] 인터럽트 (0) | 2024.10.22 |
---|---|
[CS] CPU 스케줄링 (4) | 2024.10.21 |
[CS] CPU의 메모리 계층 구조 (4) | 2024.10.13 |
[CS] 유저영역, 커널영역 그리고 SystemCall (1) | 2024.10.13 |
[CS] 프로세스와 스레드 (2) | 2024.10.06 |