학사 나부랭이
Operating System - Kernel 본문
운영체제는 크게 커널과 유틸리티 프로그램으로 나뉘어요.
Kernel
사용자와 응용 프로그램을 위해 가장 빈번히 사용되는 기능을 담당하는 부분이에요. 빈번하니까 메모리에 상주(常住)해야겠죠? 계속 HDD와 메모리를 왔다 갔다 거리면 입출력 낭비니까요. 컴퓨터가 부팅될 때 메모리에 적재되고 종료될 때까지 계속 남아있어요. 운영체제의 핵심이며 핵(Nucleus, 核), 관리자, 메모리 상주 프로그램이라고 부르기도 해요.
Utility program
운영체제의 프로그램 중 디스크 조각모음, 메모장 같은 자주 사용되지 않는 프로그램들은 HDD에 두고 필요할 때 잠시 메모리에 적재시켜 실행한 후 다시 HDD로 보내면 응용 프로그램을 위한 메모리 공간을 확보할 수 있어요. 이를 유틸리티 프로그램이고 비상주(非常住) 프로그램이라고도 해요.
모드
대부분의 시스템에서는 유저 모드와 커널 모드를 정해 놓고 프로그램을 한 모드에서 실행하도록 해요. 이는 응용 프로그램과 운영체제 프로그램 사이의 설정된 영역을 보호해야 해서 생겨났어요. 응용 프로그램이 자신의 영역을 저항 없이 벗어나 작업을 하면 사용자나 개발자가 의도하지 않은 결과가 나오기 때문이죠.
물론 시스템의 여러 장치를 미숙한 사용자가 마음대로 작동시켜서도 안 되며 이러한 행위로 인해 시스템에 설정된 여러 데이터가 바뀌면 치명적인 결과를 야기할 수 있어요.
그러니 이런 일에 대한 권한을 설정해서 커널 모드로 실행되는 프로그램만이 담당할 수 있게 해요. 당연히 응용 프로그램은 그런 권한이 없는 유저 모드에서 실행되도록 하죠. 유저 모드의 응용 프로그램에서 발생하는 읽기/쓰기 같은 HDD나 메모리에 접근하는 행위가 필요할 때 시스템 콜을 해요. 그럼 그 작업을 처리해줄 운영체제 프로그램이 커널 모드에서 수행한 후 다시 응용 프로그램으로 복귀하도록 해요.
Monolithic kernel(단일체 커널)
초기에 생겨난 가장 보편적인 형태의 운영체제예요. 스케줄링, 파일 시스템, 네트워킹, 장치 드라이버, 메모리 관리 등 운영체제 기능이라고 간주된 대부분의 기능을 제공했어요. 보통 단일체 커널은 하나의 프로세스 형태로 구현되는데 커널 안의 모든 요소는 같은 주소 공간을 공유해서 모듈 간의 직접 통신이 가능해서 자원 관리가 효율적이지만 커널이 비대해지고 유지보수가 어려워요.
Layered kernel(계층 커널)
단일체 커널을 보완하기 위해 만들었어요. 비슷한 기능을 하는 요소들을 그룹화해서 모듈화했죠. 이때 각 계층은 인접한 계층과 상호작용해서 자신의 하위 계층만 서비스해요. 모듈화가 되어있어서 시스템 검증과 오류 수정을 쉽게 할 수 있지만 기능 수행을 위해서는 여러 단계를 거쳐야 해서 단일체에 비해서 성능이 저하되고 계층 구조를 정의하기 어려워요. 또 모든 계층이 시스템에 접근할 수 있어서 악성 코드에 민감해요.
Micro kernel(마이크로 커널)
주소 공간, 프로세스 간 통신, 기본적인 스케줄링을 포함한 소수의 핵심 기능만 커널에 포함하고 다른 서비스는 유틸리티 프로그램으로 유저 모드에서 수행되고 마이크로 커널에 의해 일반 응용 프로그램과 동일하게 취급되어요.
'Dot-Gabi > Operating System' 카테고리의 다른 글
Operating System - Compile to execute (0) | 2021.04.06 |
---|---|
Operating System - Memory (0) | 2021.04.02 |
Operating System - Opening & Systems (0) | 2021.04.02 |
Operating System - Process & Thread (0) | 2021.04.01 |
Operating System - CPU(resource, process...) Scheduling (0) | 2021.04.01 |