본문 바로가기
CS/운영체제

[OS] CPU 스케줄링 알고리즘

by yoon_seon 2023. 9. 8.

CPU 스케줄링 알고리즘

  1. 선입 선처리 스케줄링
  2. 최단 작업 우선 스케줄링
  3. 라운드 로빈 스케줄링
  4. 최소 잔여 시간 우선 스케줄링
  5. 우선순위 스케줄링
  6. 다단계 큐 스케줄링
  7. 다단계 피드백 큐 스케줄링

선입 선처리 스케줄링(FIFO)

  • CPU를 먼저 요청한 프로세스부터 CPU 할당
  • 준비큐에 삽입된 순서되로 처리되는 비선점형 스케줄링이다.
  • 부작용으로 호위효과가 있다.
    • 호위효과 : 다른 프로세스들이 하나의 긴 프로세스가 CPU를 양도하기를 기다리는 것

 

최단 작업 우선 스케줄링(SJF 스케줄링)

  • 준비 큐 프로세스 중 CPU 이용시간이 짧은 프로세스부터 실행
  • 호위효과를 방지할 수 있다.

 

라운드 로빈 스케줄링

  • 선입 선처리 스케줄링에 타임 슬라이스가 지정되어있는 방식이다.
  • 레디 큐에 삽입된 순서로 실행하되 타임 슬라이스만큼 실행되며 타임 슬라이스보다 긴 프로세스는 타임아웃으로 다시 준비상태가 된다.
  • 선점형 스케줄링 방식이다.

 

최소 잔여 시간 우선 스케줄링(SRT 스케줄링)

  • 최단 작업 우선 스케줄링 + 라운드 로빈 스케줄링
  • 작업 시간 짧은 프로세스부터 처리하되 타임슬라이스만큼 실행된다.

 

우선순위 스케줄링

  • 프로세스마다 우선순위를 부여하며 우선순위가 높은순으로 실행되는 방식
  • 최단 작업 우선 스케줄링는 작업 시간 짧은순으로 우선순위 부여한다고 볼 수 있고 최소 잔여 시간 스케줄링은 남은 시간 짧은 순으로 우선순위가 부여된다고 볼 수 있기 때문에 우선순위 스케줄링은 범용적이라고 볼 수 있다.
  • 아사현상을 야기할 수 있다.
    • 아사현상 : 우선순위가 높은 프로세스를  실행하느라 우선순위가 낮은 프로세스의 실행이 계속 연기되는 현상
    • 예를들어  각 우선순위가 1 2 5 7 8 인 프로세스가 준비상태에 있을 때 갑자기 우선순위가 높은 프로세스가 준비큐에 들어온다면 뒤에있는 우선순위가 낮은 프로세스가 계속 연기된다.
    • 아사현상을 해결하는 방법은 에이징 기법이다.
    • 에이징 기법 : 대기시간이 점차 길어지면 우선순위를 높히는 방식

 

다단계 큐 스케줄링

  • 우선순위별 준비 큐를 여러개 사용하는 방식
  • 프로세스 유형별로 큐 구분 가능(CPU 바운드, I/O 바운드, 실시간 프로세스 등)
  • 큐 별 다른 스케줄링 알고리즘 적용 가능
  • 큐 별 다른 타임슬라이스 적용 가능
  • 다단계 큐 스케줄링 방식은 프로세스가 큐 간의 이동이 불가능하기 때문에 아사현상을 야기할 수 있다. 이것을 방지하기 위해 다단계 피드백 큐 스케줄링 방식이 있다.

 

다단계 피드백 큐 스케줄링

  • 프로세스가 큐 간의 이동 가능 및 에이징 기법 적용
  • 정해진 타임슬라이스동안 실행이 끝나지 않으면 낮은 우선순위 큐로 이동한다. 이후 에이징 기법을 통해 우선순위가 높아지는 식으로 작동한다.
  • CPU 바운드 프로세스는 CPU를 점유하는 시간이 길기 때문에 자연스럽게 우선순위가 내려간다. 반대로 I/O 바운드 프로세스는 높은 우선순위에서 끝난다. 그렇기 때문에 CPU 바운드, I/O 바운드 프로세스를 구분할 수 있다.

'CS > 운영체제' 카테고리의 다른 글

[OS] 프로세스 동기화  (0) 2023.09.09
[OS] 리눅스 스케줄링  (0) 2023.09.08
[OS] CPU 스케줄링  (0) 2023.09.08
[OS] 스레드  (0) 2023.09.08
[OS] 프로세스 생성과 상태  (0) 2023.09.07

댓글