* Multilevel Queue
- Queue를 여러개로 나눠서 관리. Queue끼리의 process 이동을 금지.
ex) Ready queue를 두개로 분할
Q에 대한 대답
ⓐ Fixed priority scheduling : foreground에 process가 있다면 무조건 foreground것부터 실행
ⓑ foreground 80%, batch 20% : 이와 같이 비율로 나눠서 실행
> 2가지의 방법이 발생하며, ⓐ의 경우에 starvation문제가 발생한다. 이 starvation을 해결하기 위해서
Multilevel feedback queue가 탄생
* Multilevel Feedback queue
- starvation을 방지하기 위해 aging효과를 준다.
- aging이 올라가면 priority가 높은 queue로 이동한다.
- Design issue
> 큐의 숫자
> 각 큐의 알고리즘
> 언제 프로세스가 높은 priority queue로 상승하는가?
> 언제 프로세스가 낮은 priority queue로 하강하는가?
> 새로운 프로세스의 위치는 어느 큐인가?
* Multiple-processor scheduling
- 가정 : Homogeneous(똑같은 종류의 CPU존재), SMP
- CPU마다 queue가 있다면? Load balance(CPU실행 process의 균형)를 맞추기가 힘들다.
- 어느 CPU에서 실행할지 지정하는 알고리즘
ⓐ cache affinity : 프로세스 친화도(이전 실행 프로세스 정보를 cache에 저장)에 의해서 하나의 process는
하나의 CPU에서 실행하는 것이 좋다.
ⓑ soft affinity : OS가 자동적으로 결정한다.
ⓒ hard affinity : 사용자가 결정한다.
ⓓ processor sets : processor 집합중에서 하나 선택적 실행