티스토리 뷰

FIFO와 SJF

- 이전 글을 통해 FIFO 알고리즘에서는 Burst Time(CPU 작업 시간)이 짧은 작업이 먼저 실행 됐을 때 평균 대기 시간이 짧아졌다는 것을 알 수 있었다.(프로세스 작업 순서에 따라 평균 대기 시간이 달라진다.)

- 그렇다면 프로세스가 들어온 순서대로가 아니라 Burst Time이 짧은 프로세스를 먼저 실행하면 FIFO 알고리즘의 단점을 극복할 수 있을 것이다.

- Burst Time이 짧은 프로세스를 먼저 실행하는 알고리즘이 바로 SJF(Shortest Job First)이다.

https://ko.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. 어떤 프로세스가 얼마나 실행될지 예측이 힘들다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

ex)

- 현재 크롬과 멜론을 실행시키는 중이라고 해보자

- 노래를 틀어놓은 채 크롬에서는 이메일만 확인한 후 브라우저를 종료할 수도 있고 반대로 인터넷 쇼핑을 계속해서 할 수도 있다.

- 이처럼 프로세스의 종료 시간을 예측하는 것은 사실상 불가능이라고 할 수 있다.

 

2. Burst Time이 긴 프로세스는 아주 긴 시간 동안 실행되지 않을 수 있다.

- SJF는 Burst Time이 짧은 프로세스부터 먼저 실행되기 때문에 Burst Time이 긴 프로세스는 계속해서 뒤로 밀릴 수 있다.

- Burst Time이 긴 프로세스가 대기하는 동안에 그것보다 Burst Time이 짧은 프로세스가 중간에 계속해서 들어오게 된다면 Burst Time이 긴 프로세스는 하염없이 기다려야 한다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함