Process Scheduling
CPU burst vs I/O burst
프로세스는 CPU명령 수행하고, I/O 수행하는 과정이 반복된다.
CPU burst
CPU가 명령어를 수행하는 구간, 프로세스가 Running인 상태
CPU-bound process: CPU burst가 큰 프로세스 ex) 슈퍼컴퓨터에서 실행되는 기상예측, 화학 분자 프로그램
I/O burst
I/O의 수행이 끝나기를 기다리는 구간
프로세스가 Waiting인 상태
Ready 상태는 나타나지 않음
I/O-bound process: I/O burst가 큰 프로세스 ex) 문서 편집기, 동영상 재생
대부분 우리는 I/O-bound process를 사용한다.
Preemptive vs Non-Preemptive
Preemptive scheduling
더 중요한 프로세스를 먼저 처리하는 방식
성능이 훨씬 좋고 응답속도가 빠르다.
Non-preemptive scheduling
실행 중인 프로세스보다 더 중요한 프로세스가 들어와도 양보하지 않고, 원래 프로세스가 waiting / ready / terminated 될 때 까지 수행
스케줄링 방식
FCFS/FIFO
First-Come, First-Served Scheduling
일찍 도착하는 순서대로 스케줄링
non-preemptive 방식 -> 공평하게 다뤄지므로 starvation이 없음
convey effect: 실행시간이 적은 프로세스가 긴 프로세스 뒤에 있을 경우 average waiting time이 커질 수 있다.
Burst time이 오래 걸리더라도 먼저 들어왔으면 그것부터 실행되므로 waiting time이 점점 길어지게 된다.
만약 burst time이 짧은 프로세스를 우선 수행한다면 waiting time이 현저히 줄어듦
SJF(Shortest-Job-First) Scheduling
Interactive system에서는 waiting time을 줄여야 사용자 만족도를 높일 수 있음
burst time이 가장 짧은 프로세스부터 실행하는 방식
주어진 프로세스들의 average waiting time을 가장 작게 만듦
Example of Non-Preemptive SJF: 프로세스가 실행 중일 때 Burst time이 작은 프로세스가 들어와도 양보해주지 않음, 프로세스 수행이 끝난 후 여러 프로세스가 대기중(P1이 실행되는 중에 P2, P3, P4가 모두 도착)일 때 burst time이 적은 순서대로 수행됨
Example of Preemptive SJF: 남은 작업 시간(burst time) 중 가장 작은 것이 먼저 수행, 프로그램 실행 중 계속해서 burst time을 비교해서 가장 적은 것으로 수행
SJF 방식은 CPU burst time을 정확히 예측하기 어렵기 때문에 실제 컴퓨터 시스템에 적용하기 어려움
Priority Scheduling
프로세스의 의미에 따라 우선순위 부여하는 방식
우선순위가 낮은 프로세스는 계속 실행되지 않는 starvation 발생
aging을 통해 오래 기다린 프로세스의 우선순위를 높여줌
Round Robin (RR)
time quantum(small unit of CPU time, usually 10-100 milliseconds)에 따라 번갈아가면서 프로세스 수행
같은 레이어의 프로세스는 fair하게 수행, waiting time, response time 줄여줌
a rule of thumb: 80%의 프로세스의 CPU burst가 time quantum보다 작아야 함
time quantum에 따른 trade-off 발생: time quantum이 작으면 context switch 자주 발생해 오버헤드 가 커져 response time 증가 -> 적절히 조정하는 것이 중요
Last updated