Linux:Kernel:Scheduling
Multitasking
멀티태스킹 운형체제는 아래와 같은 방식이 있다.
- 협동형 멀티태스킹 (Cooperative Multitasking)
- 선점형 멀티태스킹 (Preemptive Multitasking)
정책 (Policy)
스케줄러가 무엇을 언제 실행할 것인지를 정하는 동작. 최적화를 위해 프로세스를 아래와 같이 두 가지로 분류한다.
- 입출력중심 프로세스: 대부분의 GUI프로그램 (키보드나 마우스를 통해 사용자 동작을 기다리는 데 대부분의 시간을 사용한다.)
- 프로세서중심 프로세스: ssh-keygen, MATLAB과 같은 많은 수학적 연산을 필요로 하는 프로그램.
프로세스 우선순위
리눅스 커널은 두 가지 별개의 우선순위 단위를 가지고 있다.
- Nice value: -20 ~ +19 (Default 0): 값이 클수록 우선순위가 낮다. ps명령어를 사용하여 확인할 수 있다.1 (값이 클수록 시스템의 다른 프로세스에 더 친절 - nice - 해진다는 의미)
- 실시간 우선순위: 0 ~ 99: 값이 클수록 우선순위가 높다. POSIX.1b에 따라 구현된다. ps명령으로 확인 가능하다.2
타임슬라이스 (Timeslice)
타임슬라이스는 프로세서 동작 시간을 실행 가능한 프로세스에게 잘라서 나눠준다는 뜻이다.
스케줄러 클래스
용어정리
- 선점 (Preemption)
- 실행 중인 프로세스를 강제로 중지시키는 작업.