SJF (Shortest Job First) 스케줄링 알고리즘 이란?
SJF(Shortest Job First), 또는 최소 작업 우선 스케줄링은
프로세스의 실행 시간(Burst Time)이 가장 짧은 작업을 먼저 실행하는 알고리즘이다.
이 스케줄링 전략은 평균 대기 시간을 최소화하는 데 효과적이라는 이론적 배경을 가지고 있다.
SJF의 장점
1) 효율성
SJF는 Burst Time이 짧은 작업을 우선적으로 처리함으로써 전체적인 작업 완료 시간을 단축시킨다.
이로 인해 시스템의 처리량이 증가하고 평균 대기 시간이 감소하는 효과가 있다.
SJF의 단점
1) Burst Time 예측의 어려움
프로세스의 실행 시간을 미리 정확히 예측하는 것은 매우 어렵다.
사용자 상호작용이나 외부 이벤트에 따라 프로세스의 수행 시간이 크게 달라질 수 있기 때문이다.
이는 SJF 알고리즘의 실제 구현을 복잡하게 만드는 요인이다.
2) 기아 현상 (Starvation)
SJF는 실행 시간이 긴 프로세스가 무기한으로 대기하는 문제를 일으킬 수 있다.
새로운 짧은 작업이 계속해서 도착한다면,
실행 시간이 긴 프로세스는 CPU를 할당받지 못하고 계속 대기하는 상태에 놓일 수 있다.
이러한 현상을 기아 현상이라고 하며,
특히 실시간 시스템에서 치명적인 문제가 될 수 있다.
SJF의 사용성
SJF 스케줄링은 이론적으로는 매우 유용하지만,
위에서 언급한 문제들로 인해 현대 운영 체제에서는 제한적으로 사용된다.
특히, 대화형 시스템이나 공정성을 요구하는 환경에서는 다른 스케줄링 알고리즘을 선호한다.
그러나 일괄 처리 시스템이나 특정 비대화형 응용 프로그램에서는 여전히 유용할 수 있다.
SJF 스케줄링 알고리즘은 그 구조적 간결함과 효율성으로 인해 주목받지만,
실제 환경에서의 구현과정에서 발생하는 예측 불가능성과 공정성 문제로 인해 그 사용이 제한적이다.
이러한 한계를 극복하기 위해 보다 동적이고 적응적인 스케줄링 방식이 필요하다.
'운영체제' 카테고리의 다른 글
[운영체제] MLFQ (Multi-Level Feedback Queue) 스케줄링 알고리즘 (0) | 2024.05.30 |
---|---|
[운영체제] Round Robin (RR) 스케줄링 알고리즘 (0) | 2024.05.29 |
[운영체제] FIFO(First In, First Out) 스케줄링 알고리즘 (0) | 2024.05.27 |
[운영체제] 컴퓨터 시스템 스케줄링의 주요 목표 (0) | 2024.05.24 |
[운영체제] CPU 스케줄링 - 다중 큐 (0) | 2024.05.23 |