[ 0. I/O-bound 프로세스 vs CPU-bound 프로세스 ]
- CPU Burst: CPU 사용하는 구간
- I/O Burst: I/O 기다리는 구간
⇒ I/O-bound : I/O Burst가 더 많고 CPU Burst는 짧음 → CPU보다는 I/O 장치 대기가 많음
- 웹 서버(요청 읽기, DB 쿼리 결과 대기 등)
⇒ CPU-bound : CPU Burst가 길고 I/O Burst는 짧음 → 연산 위주
- 대규모 수학 연산, 머신러닝 모델 학습
[ 1. 비선점형(non-preemptive) 알고리즘 ]
프로세스가 스스로 CPU의 소유권을 포기 : 강제 중지 X
- FCFS (First Come, First Served)
⇒ 먼저 온 것 먼저 처리 (Convoy Effect 가능성)
👉Convoy Effect :
하나의 느린(혹은 오래 걸리는) 작업이 뒤따르는 다른 모든 작업의 진행을 지연시키는 현상
- SJF (Shortest Job First)
⇒ 시행 시간이 짧은 거 먼저 (Starvation [긴 시행 시간을 가지면 무한 대기] 가능성)
- 우선순위 (SJF에 가중치 부여)
⇒ 시행 시간이 짧은거 먼저 실행하되, 오래된 작업에 우선순위를 높게 설정
❓
심화 질문 1 : 몇몇 우선순위 알고리즘은 시행 시간에 영향을 받는다. 하지만 실제 운영체제에서는 실행 이전에 시행시간을 알 수 없다. 현대의 알고리즘 방식에서는 어떻게 이를 해결하는지 설명하시오
✅
답
[ 2. 선점형(preemptive) 알고리즘 ]
프로세스를 강제 중단하고 다른 프로세스에 할당 : 현대 운영체제
- RR (Round Robin) - 로드밸런서에서도 사용
⇒ 각 프로세스에 동일한 시간 할당 / 끝나면 다음 차례까지 준비 큐
(N-1) * q 시간이 지나면, 다시 자기 차례
- SRF (Shortest Remaining Time First)
⇒ SJF 과정 중 더 짧은 실행 시간을 가지는 작업이 들어오면 스위칭
- 다단계 큐
⇒ 우선 순위에 따라 준비 큐를 여러개 사용하고, 각 큐마다 스케줄링 알고리즘 적용
❓심화 질문 2 : P1, P2, P3, P4를 실행함에 있어 SJF알고리즘과 SRF알고리즘을 사용하였을때, 프로세스들의 평균 대기 시간을 연산하시오
(단, SRF에서의 ContextSwitching에 소모되는 시간은 고려하지 않는다.)- BurstTime : 작업때 까지 걸리는 시간
- WastingTime = 대기시간
Ex) P1 → P2 (SJF)의 대기시간은
- 0초 : P1 arrive & P1 start (대기시간 0)
- 2초~7초 : P1 작업 중 & 2초부터 P2 대기 (대기시간 5초)
⇒ 예시 일 뿐 실제 과정은 다를 수 있음
✅답