[운영체제 1] 운영체제(OS)와 커널(Kernel)
모든 프로그램은 홀로 실행될 수 없다. 프로그램 실행에는 CPU, 메모리, 주변장치 등과 같은 컴퓨터 부품들을 포함해 여러 요소들이 필요한데, 이를 자원(resource) (혹은 시스템 자원)이라고 한다.
이 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 또다른 프로그램을 운영체제(OS; Operation System)라 일컫는다.
운영체제
대표적인 운영체제로는 데스크톱용 윈도우(Windows), macOS, 리눅스(Linux)와 스마트폰용 안드로이드(Android), iOS가 있다.
이 운영체제도 상술했듯 프로그램이기에 메모리(RAM)에 저장되는데, 특별히 메모리 내부의 커널 영역(kernel space)에 저장된다.
이외의 다른 응용 프로그램(application software)들은 사용자 영역(user space)에 저장되는데, 그만큼 OS는 특별하다. OS는 이 자원을 할당하고 관리하는 일을 맡기 때문이다.
커널
이 OS의 핵심 기능을 담당하는 부분을 따로 커널(kernel)이라 지칭하는데, OS가 있다면 항상 커널도 존재한다.
이중 모드(dual mode) & 시스템 호출(system call)
OS가 자원을 관리한다는 것은, 나머지 응용 프로그램들이 자원을 접근하는 것에 배타적이라는 말로 해석할 수 있다. 오직 운영체제만이 자원을 접근할 수 있는데, 이 문지기 역할을 구현하는 것이 이중 모드이다.
이중 모드(dual mode)는 사용자 모드(user mode)와 커널 모드(kernel mode)로 구성되는데, 커널 모드는 OS 서비스를 제공받을 수 있는 실행 모드이고, 사용자 모드는 그렇지 못하다. 이 둘의 분간은 플래그 레지스터 속 슈퍼바이저 플래그가 1인지 0인지로 구분 가능하다.
따라서 사용자 모드로 실행된 응용 프로그램은 OS 서비스를 제공받기 위해 OS에 커널 모드로 전환되고 싶다는 요청을 보내게 되는데, 이를 시스템 호출(system call)이라고 한다.
이 시스템 콜은 소프트웨어 인터럽트의 일종으로, 인터럽트이기에 역시 ISR(인터럽트 서비스 루틴)을 실행한 뒤 다시 복귀하게 된다. 예상 가듯이, 이 ISR은 매우 빈번이 이뤄지며 사용자 모드와 커널 모드를 오가게 된다.
운영체제 서비스
핵심적인 것은 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리이다.
OS 서비스 | 도식 | 설명 | 연계 내용 |
---|---|---|---|
프로세스 관리 | ![]() |
실행 중인 프로그램을 프로세스(process)라 하는데, 이 프로세스는 메모리 안에서 마구 생성되고 또 미사용시 삭제된다. 하나의 CPU는 프로세스를 하나밖에 실행하지 못하기에 이 프로세스들을 조금씩 번갈아 가며 실행하는데, 이를 커널에서 관리한다. | 10장 프로세스 관리 12, 13장 교착 상태 |
자원 접근 및 할당 | ![]() |
CPU가 어떤 프로세스부터 얼마나 오래 이용하고(=CPU 스케쥴링), 어느 메모리에 할당할 지를 결정한다. 또 입출력장치의 인터럽트 시에도 ISR을 제공하는 역할을 한다. | 11장 CPU 스케쥴링 14장 메모리 할당 |
파일 시스템 관리 | ![]() |
폴더(디렉터리)와 파일을 관리하는 파일 시스템(file system)을 지원한다. | 15장 파일 시스템 |
유저 인터페이스 | ![]() |
사용자가 컴퓨터와 상호작용하게 해주는 사용자 인터페이스(UI; User Interface)를 지원. 크게 그래픽 유저 인터페이스(GUI)와 커맨드 라인 인터페이스(CLI)가 있음. 커널에서 지원하는 서비스는 아닌 것이 특징이다. |
출처: [혼자 공부하는 컴퓨터구조+운영체제 Chapter 09]