오래 못 할 짓 하지 않기
[ 운영체제 ] 13. 리눅스 스케줄러 본문
Linux Scheduler
● ver 2.5 이상
▶ O(1) Scheduling algorithm 구현 : Processor를 고르는 시간만 쓰인다.
● ver 2.6 이상
▶ Completely Fair Scheduler (CFS) Scheduling
● CFS 알고리즘
: 모든 프로세스가 공평하게 CPU 할당을 받을 수 있는 알고리즘
각각의 class마다 다른 Priority가 있다.
- 기본적으로 priority가 100~139 범위에 있는 프로세스들
→CFS 알고리즘
- priority가 0~99 범위에 있는 프로세스들 ( real-time 프로세스 )
→FIFO 알고리즘 OR Round Robin 알고리즘
즉 스케줄러는 우선순위가 높은 Class에 있는 애들 중에서 우선순위가 높은 프로세스를 뽑는다.
● 특징
1. CFS 스케쥴러는 Nice value에 따라 CPU 작동 시간을 비율적으로 할당받는다.
Nice value : -20 ~ 19 , 기본값0.
이게 높을수록 양보함. = priority가 낮다.
2. CPU Time의 비율은 Targeted latency 값에 맞춰 할당된다.
3. Scheduler는 각각의 task(process)가 얼마나 실행됐는지 기록한다.
- 각각의 task는 vruntime으로 기록한다.
▶ CFS는 ready 상태의 프로세스 중 vruntime이 최소인 프로세스를 다음에 실행할 프로세스로 선택 한다.
우선순위가 높은 애들이면 vrun time이 낮다.(헷갈리는데 맞음. 왜냐? 지금까지 실행 안 했다는 뜻이니까. 지금까지 CPU 써본 시간이 적다 이 뜻 )
4. Priority가 높은 task는 Priority가 낮은 task를 선점할 수 있다.
이를 종합해보았을 때
- 짧은 시간만 도는 IO task는 vruntime이 낮다. = 우선 순위는 높음
- Exhuast될 때까지 도는 CPU task는 vruntime이 높다. = 우선 순위는 낮음
(출처)
한동대학교 고윤민교수님 - 운영체제
'3학년 1학기 > 운영체제 (OS)' 카테고리의 다른 글
[ 운영체제 ] 15. 동기화와 관련된 문제 해결 (0) | 2024.04.30 |
---|---|
[ 운영체제 ] 14. 동기화 (Synchronization) (0) | 2024.04.19 |
[ 운영체제 ] 12. Scheduling ( Multiple - Process / Real - Time CPU ) (1) | 2024.04.16 |
[ 운영체제 ] 11. Scheduling Algorithms (0) | 2024.04.12 |
[ 운영체제 ] 10. CPU Scheduling (0) | 2024.04.09 |