Chapter 09 운영체제 시작하기 - goorm-6th-Als/for_study_Algorithm GitHub Wiki
- 실행할 프로그램에 자원(CPU, 메모리, 보조기억장치, 입출력장치 등)을 할당하고 올바르게 실행되도록 돕는 프로그램이다.
- 프로그램 적재 및 삭제를 통해 메모리 자원을 관리한다.
운영체제의 핵심 서비스를 담당하는 부분을 커널이라고 한다.
운영체제는 응용 프로그램이 자원에 접근하려고 할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호한다.
즉, 응용 프로그램의 자원 접근을 대행하는 일종의 문지기인 셈이다.
위와 같은 운영체제의 역할은 사용자 모드와 커널 모드의 이중 모드로서 구현된다.
사용자 모드는 일반적인 응용 프로그램이 실행되는 모드로서 자원에 접근할 수 없다.
커널 모드는 운영체제 서비스를 제공받으며 커널 영역의 코드를 실행해 자원에 접근하는 명령어를 실행할 수 있다.
사용자 모드로 실행되는 프로그램은 시스템 호출(시스템 콜)을 통해 커널 모드로 전환하여 운영체제 서비스를 제공받을 수 있다.
시스템 호출은 일종의 소프트웨어 인터럽트(CPU의 작업을 방해하는 신호)이다.
[시스템 호출을 처리하는 순서]
- 시스템 호출 명령어가 실행되면 CPU가 작업을 백업
- 커널 영역 내에 시스템 호출을 수행하는 코드(인터럽트 서비스 루틴)를 실행
- 기존에 실행하던 응용 프로그램으로 복귀하여 실행 지속
[참고] 시스템 호출의 종류
(1) 프로세스 관리
일반적으로 하나의 CPU는 하나의 프로세스만 실행할 수 있기에 프로세스(실행 중인 프로그램)들을 번갈아 가며 실행한다.
또 프로세스는 상태도 사용하고자 하는 자원도 다양한데, 이때 다양한 프로세스를 일목요연하게 관리하고 실행할 수 있어야 한다.
예를 들어 여러 프로세스가 동시에 실행되는 환경에서는 '프로세스 동기화'가 필수적이고,
프로세스가 더 이상 실행되지 못하는 상황인 '교착 상태'를 해결해야 한다.
(2) 자원 접근 및 할당
운영체제가 CPU, 메모리, 입출력장치를 관리하는 방법 및 기능은 아래와 같다.
CPU - CPU 스케줄링을 통해 프로세스들에 공정하게 CPU를 할당한다.
메모리 - 새로운 프로세스가 적재될 때마다 어느 주소에 적재해야 할지를 결정한다.
입출력장치 - 하드웨어 인터럽트 요청 신호를 받아 인터럽트 서비스 루틴을 제공함으로써 입출력 작업을 수행한다.
(3) 파일 시스템 관리
파일을 열고, 생성하고, 삭제하고, 폴더로 관리하는 파일 시스템을 지원한다.