1 분 소요

모든 프로그램은 홀로 실행될 수 없다. 프로그램 실행에는 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]