job scheduler
로 불림swapping
을 다룸. 프로세스도 메모리가 부족시, 하드디스크의 스왑영역을 쓰기도하는 데, 이 swap영역과 메모리사이임.CPU scheduler
로 부름.세가지로 나뉘나, 주제가 CPU Scheduler이므로, 이 Short term Scheduler 기준으로 설명을함.
CPU 스케줄러가
ready state의 프로세스들을
다 모아서 어떤 프로세스가 실행되는지 관리하는 것.
일반적으로 리눅스는 CFS라는 알고리즘으로 프로세스를 관리하는 듯 하다.
CFS stands for "Completely Fair Scheduler," and is the new "desktop" process
scheduler implemented by Ingo Molnar and merged in Linux 2.6.23. It is the
replacement for the previous vanilla scheduler's SCHED_OTHER interactivity
code.
Completely Fair Scheduler 의 약자로,
직역시 완전 공평한 스케줄러다.
어떤 프로세스던, 공평한 실행시간을 주는 것이다. minimum time 과 maximum time을 기준으로, 한 프로세스당 최소시간과 최대시간내의 시간을 준다.
이 시간을 virtual runtime이라 한다.
프로세스 실행시간을 말함.
컨텍스트 스위칭하는 시간등의 다른시간을 제외하고 오로지 프로세스가 실행되는 시간을 말한다.
리눅스에서
ps
에서 나온 pid로
chrt -p pid
를 쳐보면, priority 와 policy를 볼 수 있다.
policy는 위의 설명처럼, 어떤 알고리즘을 써서 관리하는지에 대한 내용이고,
priority는 말 그대로 우선순위이다.
리눅스는 프로세스 실행순서를 정할때
priority
priority
차이가 없다면, 스케쥴링 policy(알고리즘)에 따라 처리한다.대표적인 policy로
세가지가 있다.
일반적으로 대부분 SCHED_OTHER로 되어 있을 것이다.
우선순위가 더 중요하고, 같은 policy끼리는 알고리즘에 맞게 실행된다.