운영체제 수업을 수강하며 정리한 내용을 작성하려고 합니다.
Process creation

이러한 프로세스가 존재하는 상황을 가정, fork()를 통해 child 프로세스 생성하면 자식 프로세스가 생성됨

그 후, 부모 프로세스의 wait() 호출하면

자식 프로세스로 넘어가 exec(”bin/ls”) 실행됨
실행 종료 후 1) wait()가 종료되며 부모 프로세스 종료 2) 자식 프로세스 종료
wait() in detail

- Parent가 여러 개의 child process들을 생성하고, 한 번의 wait을 실행함
- 이 때, wait은 어느 child process의 종료를 기준으로 동작하는가?
- 가장 빨리 종료되는 child process에 의해 wait이 종료됨
waitpid() API

- 파라미터로 wait()으로 기다릴 pid를 입력받음
- 어떤 API를 사용할 지는 구현하려는 상황에 따라 다름
Process scheduling

- Process의 state
- Running: 현재 CPU 사용
- Ready: CPU 사용 가능
- Wait: CPU 잡아도 곧바로 instruction 수행 불가


스케줄러 실행 (Voluntary yield) → 비선점형 스케줄러

Timer-based interrupt가 추가된 스케줄러 실행
FCFS Scheduling

-
Ready 큐에 있는 순서대로 CPU를 할당한다.
-
예시1. P1, P2, P3 순서로 프로세스가 생성(도착, arrive)되었을 때:

-
대기 시간 : P1 = 0, P2 = 24, P3 = 27
-
평균 대기 시간 : (0 + 24 + 27) / 3 = 17
-
예시2. P2, P3, P1 순서로 도착:

- 대기 시간: P1 = 6, P2 = 0, P3 = 3
- 평균 대기 시간: (6+0+3)/3 = 3
- 예시1보다 짧은 대기 시간을 가짐
-
작업의 arrival(수행) 순서에 따라 대기 시간이 변할 수 있음
- 짧은 프로세스가 긴 프로세스 뒤에 있을 때 문제, Convoy effect
Shortest Job First Scheduling
- Idea: 프로세스의 CPU-burst 구간 길이를 고려
- 실행해야할 프로세스들이 주어져 있을 때, 평균 대기시간 측면 가장 우수

평균 대기 시간 = (0 + 3 + 6 + 7) / 4 = 4
Shortest Remaining Time First (SRTF)

Problem of SJF and SRTF
- 평균 대기시간 측면에서 우수
- 문제점 : CPU-burst 구간의 길이를 사전에 알기 어려움
- 방안