일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Kafka
- IT
- Spring
- spring webflux
- 운영체제
- Java
- mongoDB
- 컴퓨터구조
- JPA
- 네트워크
- react
- Heap
- MSA
- 자바
- redis
- 자료구조
- Galera Cluster
- 백준
- design pattern
- 디자인 패턴
- MySQL
- Proxy
- C
- JavaScript
- OS
- 파이썬
- Algorithm
- Data Structure
- c언어
- 알고리즘
Archives
- Today
- Total
시냅스
스케줄링 알고리즘 Scheduling algorithm 본문
스케줄링 알고리즘 (Scheduling algorithm)
- 준비 큐에 있는 어느 프로세스에 CPU 코어를 할당할 것인지를 결정
CPU Scheduling 문제점의 Solution
- FCFS : First come, Fist Seerved
- SJF : Shortest Job First (SRTF : Shortest Remaning Time First)
- RR : Round Robin, Time Sharing
- Priority Based
- MLQ : Multi Level Queue
- MLFQ : Multi Level Feedback Queue
FCFS
- 가장 간단, 먼저 요청 -> 먼저 할당
- CPU burst time 에 따라서 Waiting time이 달라짐
- Nonpreemptive
- Convoy Effect : 하나의 긴 프로세스를 처리하기 위해 뒤의 짧은 프로세스들이 오래 기다려야 하는 효과 -> 정렬시간에 따라 waiting time이 다를 수 있음
SJF
- Shortest Job First -> CPU Burst Time을 알기 어렵기 때문에 이론적 사용, 실제 사용 X
- 처리 시간이 긴 프로세스 앞에 시간이 짧은 프로세스를 놓으면
- waiting time 이 줄어들어 waiting time 측면에서 최적
- 정확한 CPU Burst Time을 얻을 수 없기 때문에 근사적 계산
- 예측 방법
- 과거에 많이 쓰면 현재도 많이 쓸 것이다 -> 지수적 평균
- Tn+1 = ATn + (1 - A)Tn
- 예측 방법
- 선점일 수도 있고, 비선점일 수도 있음
- 실행 중에도 짧은 게 들어오면 Context Switching
SRTF
- Shortest Remaining Time First -> Preemptive SJF
Round-Robin Scheduling
- Preemptive FCFS with a time quantum
- 보통 시간 할당량 (time quantum)은 10 ~ 100 ms
- Readyqueue -> circular queue
- Readyqueue를 circular로 돌면서 시간 단위로 allocate 한다.
- waiting time은 길지만, 다른 알고리즘과 혼용하기 때문에 필수적이다.
- time quantum에 의존적
Priority-base Scheduling
- 우선순위가 높은 순서로 CPU에 allocate
- 우선순위가 Equal이면 FCFS
- SJF는 CPU Burst Time을 기준으로 하는 Priority-base Scheduling
- 무한대로 대기하는 프로세스가 발생할 수 있다. (기아 상태)
- 이를 회피하기 위해 aging이라는 개념을 사용한다. 대기가 길면, priority가 증가
Combining RR and Priority
- 만약 Priority가 같은 것 -> RR
Multi Level Queue
- Priority-base가 단일 큐라면, multi level은 기아 상태를 해결하기 위해 priority에 따른 각각의 ready queue를 만들어 배치한다.
- RR 과 함께 사용할 때에도 효과적이다.
- 각 큐는 다른 알고리즘을 사용할 수 있다.
- 각 큐는 CPU 사용량이 다르다
- foreground queue 는 80%, background queue 20%
Multi Level Feedback Queue
- Multi Level Queue의 경우 프로세스가 다른 Queue에 이동하지 않는 반면, Multi Level Feedback Queue는 CPU Burst 성격에 따라 이동이 가능하다.
- 어떤 프로세스가 CPU 시간을 너무 많이 사용하면, 낮은 우선순위의 큐로 이동시키기 위함이다.
- 포그라운드(대화형)프로세스들은 높은 우선순위를 갖는다. (대체로 CPU Burst Time이 짧다.)
- 낮은 우선순위의 큐에서 너무 오래 대기하는 프로세스는 높은 우선순위의 큐로 이동할 수 있다. (기아 상태 예방)
'운영체제' 카테고리의 다른 글
다중 처리기 스케줄링 Multiple-Processor Scheduling (0) | 2022.04.21 |
---|---|
스레드 스케줄링 Thread Scheduling (0) | 2022.04.21 |
CPU 스케줄링 CPU Scheduling (0) | 2022.04.21 |
멀티 쓰레딩 Thread and Concurrency (0) | 2022.04.12 |
TIL : OS Thread (0) | 2021.11.19 |
Comments