#16 스케줄링 알고리즘 – SJF(Shortest Job First)

FIFO 및 SJF

– 앞선 글에서 FIFO 알고리즘을 사용하면 버스트 시간(CPU 작업 시간)이 짧은 작업을 먼저 실행했을 때 평균 대기 시간이 줄어드는 것을 알 수 있었다(평균 대기 시간은 처리 작업 순서에 따라 달라진다. )

– 그렇다면 프로세스가 수신된 순서가 아닙니다. FIFO 알고리즘의 단점은 버스트 시간이 가장 짧은 프로세스를 먼저 실행함으로써 극복할 수 있습니다.오전.

버스트 시간이 가장 짧은 프로세스를 먼저 실행하는 알고리즘은 최단 작업 우선(SJF)오전.


https://en.wikipedia.org/wiki/%EC%B5%9C%EB%8B%A8_%EC%9E%91%EC%97%85_%EC%9A%B0%EC%84%A0_%EC %8A%A4%EC%BC%80%EC%A4%84%EB%A7%81


SJF

이론적으로만 보다 SJF는 FIFO보다 더 강력한 알고리즘이라고 할 수 있습니다.

– 그러나 SJF의 실제 구현에는 현실적인 문제가 많아 SJF 알고리즘을 사용하지 않는다.

1. 어떤 프로세스가 얼마나 오래 실행될지 예측하기 어렵습니다.


출처 – 인프라, 그림으로 배우기 쉬운 운영체제

전)

현재 Chrome과 Melon을 사용하고 있다고 가정합니다.

– 노래 재생 중 크롬에서 이메일 확인 후 브라우저를 닫거나 웹에서 쇼핑을 계속할 수 있습니다.

– 또한 프로세스가 언제 종료될지 예측하는 것은 사실상 불가능합니다.당신은 말할 수 있습니다

2. 버스트 시간이 긴 프로세스는 오래 실행되지 않을 수 있습니다.

– SJF는 버스트 시간이 짧은 프로세스부터 먼저 실행된다. 버스트 시간이 긴 프로세스는 여전히 뒤로 밀릴 수 있습니다.

– 버스트 시간이 긴 프로세스가 대기하는 동안 버스트 시간이 짧은 프로세스가 중간으로 더 이동하면 버스트 시간이 긴 프로세스는 무한정 대기해야 합니다.