TanzDev
TIL 42 (CS 스케쥴링) 본문
스케쥴링 종류
선점 스케쥴링(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 |