Chapter 09 운영체제 시작하기 - goorm-6th-Als/for_study_Algorithm GitHub Wiki

09-2 운영체제의 큰 그림

1. 운영체제란?

  • 실행할 프로그램에 자원(CPU, 메모리, 보조기억장치, 입출력장치 등)을 할당하고 올바르게 실행되도록 돕는 프로그램이다.
  • 프로그램 적재 및 삭제를 통해 메모리 자원을 관리한다.

2. 운영체제의 심장, 커널

운영체제의 핵심 서비스를 담당하는 부분을 커널이라고 한다.

3. 이중 모드와 시스템 호출

운영체제는 응용 프로그램이 자원에 접근하려고 할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호한다.
즉, 응용 프로그램의 자원 접근을 대행하는 일종의 문지기인 셈이다.

스크린샷 2024-02-07 18 36 48

위와 같은 운영체제의 역할은 사용자 모드커널 모드의 이중 모드로서 구현된다.

사용자 모드는 일반적인 응용 프로그램이 실행되는 모드로서 자원에 접근할 수 없다.
커널 모드는 운영체제 서비스를 제공받으며 커널 영역의 코드를 실행해 자원에 접근하는 명령어를 실행할 수 있다.

사용자 모드로 실행되는 프로그램은 시스템 호출(시스템 콜)을 통해 커널 모드로 전환하여 운영체제 서비스를 제공받을 수 있다.
시스템 호출은 일종의 소프트웨어 인터럽트(CPU의 작업을 방해하는 신호)이다.

스크린샷 2024-02-07 19 12 29

[시스템 호출을 처리하는 순서]

  1. 시스템 호출 명령어가 실행되면 CPU가 작업을 백업
  2. 커널 영역 내에 시스템 호출을 수행하는 코드(인터럽트 서비스 루틴)를 실행
  3. 기존에 실행하던 응용 프로그램으로 복귀하여 실행 지속
    스크린샷 2024-02-07 19 19 40
    [참고] 시스템 호출의 종류
    스크린샷 2024-02-08 10 30 18

4. 운영체제의 핵심 서비스

(1) 프로세스 관리
일반적으로 하나의 CPU는 하나의 프로세스만 실행할 수 있기에 프로세스(실행 중인 프로그램)들을 번갈아 가며 실행한다.
또 프로세스는 상태도 사용하고자 하는 자원도 다양한데, 이때 다양한 프로세스를 일목요연하게 관리하고 실행할 수 있어야 한다.

예를 들어 여러 프로세스가 동시에 실행되는 환경에서는 '프로세스 동기화'가 필수적이고,
프로세스가 더 이상 실행되지 못하는 상황인 '교착 상태'를 해결해야 한다.
스크린샷 2024-02-08 09 54 09


(2) 자원 접근 및 할당
운영체제가 CPU, 메모리, 입출력장치를 관리하는 방법 및 기능은 아래와 같다.

CPU - CPU 스케줄링을 통해 프로세스들에 공정하게 CPU를 할당한다.

메모리 - 새로운 프로세스가 적재될 때마다 어느 주소에 적재해야 할지를 결정한다.

입출력장치 - 하드웨어 인터럽트 요청 신호를 받아 인터럽트 서비스 루틴을 제공함으로써 입출력 작업을 수행한다.

(3) 파일 시스템 관리
파일을 열고, 생성하고, 삭제하고, 폴더로 관리하는 파일 시스템을 지원한다.

⚠️ **GitHub.com Fallback** ⚠️