본문 바로가기

운영체제

우선순위 스케줄링 (Priority Scheduling)

정의

  • 우선순위 스케줄링: 우선순위가 높은 프로세스에게 CPU를 할당하는 방식이다.

세부사항

  • SJF와의 관계: SJF(Shortest-Job-First) 스케줄링은 일반적인 우선순위 스케줄링의 특별한 경우로, CPU 버스트가 작은 프로세스에게 높은 우선순위를 부여한다.
  • 동일 우선순위 처리: 우선순위가 같은 경우 FCFS(First-Come, First-Served) 방식을 사용할 수 있다.

 

우선순위 유형

  • 정적 우선순위(Static Priority): 프로세스의 우선순위가 실행 동안 변하지 않습니다. 구현이 간단하며 오버헤드가 낮다.
  • 동적 우선순위(Dynamic Priority): 시스템의 상황에 따라 우선순위가 동적으로 변동된다. 응답성이 향상되지만 구현이 복잡하고 오버헤드가 많다.
  • 구매한 우선순위(Purchased Priority): 우선순위를 추가 비용을 지불하여 구매하는 방식이다.

 

스케줄링 방식

  • 비선점형(Non-preemptive): 실행 중인 프로세스와 비교하지 않고 계속 실행한다.
  • 선점형(Preemptive): 준비 큐에 있는 프로세스들과 실행 중인 프로세스의 우선순위를 새로 도착한 프로세스의 우선순위와 비교하여, 새로 도착한 프로세스의 우선순위가 더 높을 경우 새 프로세스를 실행한다.

 

문제점 및 해결책

  • 무한 대기 또는 아사 현상 문제: 일부 프로세스가 무한정 대기할 수 있는 문제다.
  • 해결책: 에이징(Aging) 이 있으며, 오래 기다린 프로세스의 우선순위를 높여준다.