프로그래밍[Univ]/운영체제

[OS] CPU Scheduling(Sort-term Scheduling) Part 2

Cloud Travel 2012. 4. 30. 19:11

* 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 집합중에서 하나 선택적 실행