SJF(Shortest-Job-First)
수행시간이 적은 것을 먼저 처리 하는 방식
만약 다음 처리 시간이 같다면 FCFS 로처리
Process 가 Ready Queue 에 있고 Burst Time 이 주어질때
Burst Time 이 가장 작은것 먼저 실행 시키면 위 처럼 간트차트가 된다
총 대기시간 28초
평균대기시간은 7초
턴어라운드 타임은 프로세스당 앞에 기다린 시간과 해당 프로세스가 처리 되는 시간까지 임으로
토탈 턴어라운드 타임은 52
평균 턴어라운드 타임은 13이 된다
최적이 증명가능하다
평균 대기 시간이 왜 최소로 갖느냐면 짧은게 앞에 있으니 대기시간이 짤방질 수 밖에 없다
그런데 이건 구현이 불가능한데, 다음 CPU Burst 타임을 알수가 없기 때문이다
대신 근사적으로 구하는건 예측을 통해서 구현할수 있는데
예측은 이 프로세스가 과거에 얼마만큼 시간을 썼는지를 보고 판단하게 된다
시간은 지수적 시간을 적용하는데 그 이유는 최근에 많이 썼을 수록 가중치를 더 줘서 CPU burst 시간을 조정한다
10*1/2 + 6*1/2 = 8
타우식은 CPU Burst 타임이 타우 그래프에 따라 파란색 처럼 이동 평균선 역할을 해준다
그런데 이 전 사용시간에 대해서도 저장처리를 해야 하기 때문에 이론적으론 옵티멀한데 실제 사용하긴 어렵다
SJF 는 Preemtpvie 할 수도 있고 Non-Preemptive 할 수도 있다
앞서서 5초로 CPU burst 이 계산된게 있는데 새로 계산된 프로세스의 시간이 1 이라면
이때 1초가 먼저 실행 되면 선점형이고 기다렸다 처리되면 비선점형이 된다
그런데 이렇게 할려면 해당 프로세스의 남은 CUP burst Time 을 알아야 하기 때문에 이것 또한 쉽지 않다
'운영체제 & 병렬처리 > 시스템프로그래밍' 카테고리의 다른 글
스케줄링 시간 : SRTF (0) | 2023.02.25 |
---|---|
스케줄링 시간 : RR (Round-Robin) (0) | 2023.02.24 |
스케줄링 시간 : FCFS (0) | 2023.02.22 |
스케줄링 (0) | 2023.02.21 |
CPU 쓰로틀링(Throttling) : CPU 성능 떨어뜨리기 (0) | 2018.05.17 |