TanzDev

TIL 42 (CS 스케쥴링) 본문

기록보드/TIL

TIL 42 (CS 스케쥴링)

Tanz-dev 2024. 3. 20. 00:07

스케쥴링 종류

선점 스케쥴링(Preemptive Scheduling)

OS가 나서서 CPU사용권을 '선점'하고, 특정 요건에 따라 각 프로세스의 요청이 있을 때 프로세스에게 분배하는 방식입니다.

  • 가장 자원이 필요한 프로세스에게 CPU를 분배하며 상황에 따라 강제로 회수할 수도 있습니다.
  • 따라서 빠른 응답시간을 요하는 대화식 시분할 시스템에 적합하며 긴급한 프로세스를 제어할 수 있다.

선점1.Priority Scheduling(우선순위 스케쥴링)

 💡 Priority Scheduling 특징

  • 정적/동적으로 우선순위를 부여하여 우선순위가 높은 순서대로 처리
  • 우선 순위가 낮은 프로세스가 무한정 기다리는 기아 현상 발생 가능
  • Aging 방법으로 기아현상 문제 해결 가능 

선점2.Round Robin(라운드로빈)

💡 FCFS에 의해 프로세스들이 보내지면 각 프로세스는 동일한 시간의 Time Quantum 만큼 CPU 할당

 

정해진 시간 할당량 만큼 프로세스를 할당한 뒤, 작업이 끝난 프로세스는 준비완료 큐(순환 큐)의 가장 마지막에 가서 재할당을 기다리는 방법입니다. (회전식)

  • 시간 할당량이 중요한데, 너무 작으면 빈번한 문맥 전환(Context Switching)이 발생하고, 너무 길면 FCFS와 다를 바 없어진다.
  • 스케쥴링 예시

 

미리 주어진 프로세스의 우선순위에 따라서 스케쥴링하는 방식이다. 2번에서 다룬 SJF도 Priority Scheduling의 일종이다.(최소 버스트 시간 기준)

  • 그러나 우선순위가 낮은 프로세스는 할당되지 않기도 하는데, 이를 **기아(Starvation)**이라고 부릅니다.
  • 이를 방지하기 위한 해결법으로는 **노화(Aging)**이 있는데 기다리는 시간에 따라 우선순위를 증가시켜주는 방식입니다. 마찬가지로 우선순위가 같으면 FCFS를 적용합니다.
  • 스케쥴링 예시

선점3.Multilevel-Queue(다단계 큐)

준비완료 큐를 여러개의 큐로 분류하여 각 큐가 각각 다른 스케쥴링 알고리즘을 가지는 방식. 메모리 크기, 우선순위, 유형 등 프로세스의 특성에 따라 하나의 큐에 영구적으로 할당된다. 따라서 큐와 큐 사이에도 스케쥴링이 필요하다. 우선순위 방식 혹은 시분할 방식으로 한다.

우선순위 방식

고정 우선순위의 선점형 방식으로 구현되며, 따라서 우선순위에 따른 큐의 스케쥴링은 절대적이다. 예를 들어,

우선순위가 높은 Forground Queue

  • 대화형 프로세스를 위한 큐
  • Round Robin

우선순위가 낮은 Background Queue

  • 연산작업을 처리하는 프로세스 큐
  • FCFS

여기서 Forground큐가 비어있지 않는 한 Background큐는 먼저 실행될 수 없으며, Background큐가 먼저 실행중이더라도 Forground큐에 프로세스가 들어오면 선점된다.

'기록보드 > TIL' 카테고리의 다른 글

TIL 44 (프로세스와 쓰레드)  (0) 2024.03.21
TIL 43 (CS 프로세스 생성주기)  (0) 2024.03.20
TIL 41 (CS)  (0) 2024.03.18
TIL 40 (알고리즘 문제 마무리)  (3) 2024.03.16
TIL 39 (알고리즘 문제)  (1) 2024.03.14