오래 못 할 짓 하지 않기

[ 운영체제 ] 13. 리눅스 스케줄러 본문

3학년 1학기/운영체제 (OS)

[ 운영체제 ] 13. 리눅스 스케줄러

쫑알bot 2024. 4. 19. 00:40
728x90

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 taskvruntime이 낮다. =  우선 순위는 높음

- Exhuast될 때까지 도는 CPU task vruntime이 높다. =  우선 순위는 낮음

 

(출처)

한동대학교 고윤민교수님 - 운영체제