티스토리 뷰
● FIFO와 SJF
- 이전 글을 통해 FIFO 알고리즘에서는 Burst Time(CPU 작업 시간)이 짧은 작업이 먼저 실행 됐을 때 평균 대기 시간이 짧아졌다는 것을 알 수 있었다.(프로세스 작업 순서에 따라 평균 대기 시간이 달라진다.)
- 그렇다면 프로세스가 들어온 순서대로가 아니라 Burst Time이 짧은 프로세스를 먼저 실행하면 FIFO 알고리즘의 단점을 극복할 수 있을 것이다.
- Burst Time이 짧은 프로세스를 먼저 실행하는 알고리즘이 바로 SJF(Shortest Job First)이다.
● SJF
- 이론적으로만 보면 SJF는 FIFO 보다 더 성능이 좋은 알고리즘이라고 할 수 있다.
- 하지만 SJF의 실제 구현에는 여러 현실적인 문제가 있기에 SJF 알고리즘은 사용되지 않는다.
1. 어떤 프로세스가 얼마나 실행될지 예측이 힘들다.
ex)
- 현재 크롬과 멜론을 실행시키는 중이라고 해보자
- 노래를 틀어놓은 채 크롬에서는 이메일만 확인한 후 브라우저를 종료할 수도 있고 반대로 인터넷 쇼핑을 계속해서 할 수도 있다.
- 이처럼 프로세스의 종료 시간을 예측하는 것은 사실상 불가능이라고 할 수 있다.
2. Burst Time이 긴 프로세스는 아주 긴 시간 동안 실행되지 않을 수 있다.
- SJF는 Burst Time이 짧은 프로세스부터 먼저 실행되기 때문에 Burst Time이 긴 프로세스는 계속해서 뒤로 밀릴 수 있다.
- Burst Time이 긴 프로세스가 대기하는 동안에 그것보다 Burst Time이 짧은 프로세스가 중간에 계속해서 들어오게 된다면 Burst Time이 긴 프로세스는 하염없이 기다려야 한다.
'CS > 운영체제' 카테고리의 다른 글
#18 스케줄링 알고리즘 - MLFQ(Multi Level Feedback Queue) (0) | 2023.03.26 |
---|---|
#17 스케줄링 알고리즘 - RR(Round Robin Scheduling) (0) | 2023.03.19 |
#15 스케줄링 알고리즘 - FIFO(First In First Out) / 평균 대기 시간 (0) | 2023.03.13 |
#14 스케줄링 목표 (0) | 2023.03.12 |
#13 다중큐 (0) | 2023.03.10 |
- Total
- Today
- Yesterday
- DART
- 자료구조
- 빅데이터 분석기사
- MongoDB
- db
- Phaser3
- git
- Stream
- jpa
- 코딩테스트
- Spring Boot
- node.js
- MySQL
- SQL
- 운영체제
- 프로그래머스
- SpringBoot
- 알고리즘
- 빅데이터
- 코테
- 메모리
- java
- Advanced Stream
- Phaser
- Java8
- nosql
- spring
- OS
- API
- 프로세스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |