#5-3. CPU SCHEDULING


cf> 여태까지 스케줄링은 큐에서 한줄서기를 하면서 cpu사용을 기다려 왔지만,

      Multilevel queue와 Multilevel feedback queue는 여러줄 서기를 할 수 있다!!


* Multilevel Queue

 


# 밑에 그림을 통해 우선순위를 알수 있다.
: 맨 위에 줄이 우선순위가 높으며, 밑으로 갈수록 우선순위가 낮아진다.

 

 

 

# system process : 시스템과 관련된 일을 하는 프로세스
  interactive Process: 사람하고 관련된 일을 하는 프로세스
  interative editing process : 그것보다는 살짝 인터렉션이 떨어지는 프로세스
  batch process : cpu만 오랫동안 사용하는 프로세스를 여기서는 batch process라고 얘기를 하는것 같다.
  student process : 학생을 무시하는건가....?

=> 여기는 완전 계급제!
 즉, 맨 위에 부터 비어있나 확인을 해서 밑으로 내려간다. 밑에 있는 프로세스는 영원히 cpu할당을 못 받을 수 도 있다.(starvation 발생)

 

cf> 반면에!!
Multilevel Feedback Queue는 완전 계급제는 아니다. 방탕하게 살면 우선순위가 떨어지기도 하고 열심히 살면 우선순위가 올라가기도 한다!!

 (다음에 나오는 Multilevel Feedback Queue 그림 참고하기!!)

 

 

# 고려해야 할점?

 

 - Ready queue를 여러 개로 분할
  v. foreground (interactive)
  v. background (batch-no human interaction)

 

 - 각 큐는 독립적인!! 스케줄링 알고리즘을 가짐.
  v. foreground  => RR
  v. background  => FCFS

 # 줄에 특성에 맞는 queue별 스케줄링을 채택! (이렇게 채택된 이유를 알겠지?)

 

 - 큐에 대한 스케줄링이 필요
  v. Fixed priority scheduling
    # 이 방식은 우선순위를 아주 강하게 주어 우선순위만을 사용하는 방식인데, 이렇게 되면 우선순위가 낮은 프로세스들은 starvation이 발생한다. 이에대한 해결책이 Time slice!!

  v. Time slice


  - 각큐에 CPU TIME을 적절한 비율로 할당
     ex> 우선수위 높은 RR은 80%주고, 낮은 FCFS는 20%주고!


* Multilevel Feedback Queue

# (Multilevel queue와 비교하여)고려해야될 점
(사진의 빨간색 글씨 부분들!!! (중요!))

 

 

 

# 우선순위가 높으면 RR의 quantum을 짧게 해주며, 우선순위가 낮아질수록 quantum을 높여줘서 나중에는 FCFS가 되게끔 한다.

 

 

 

-----------------------------------------------------------------------------------------------------------------------
# 여기까지는 CPU가 하나일때의 CPU SCHEDULING 이었다면, 지금부터의 내용은
CPU가 여러개 일 경우,
Thread가 여러개일 경우,
등등 특이한 case의 cpu스케줄링을 알아 보겠습니다.


 

* Multiple-Processor Scheduling
: 이 부분은 화두만 보고 넘어가자!

 

 

 

# Load sharing : 하나의 줄에만 부하되는것을 막는 것.

# Symmetric Multiprocessing : cpu가 모두 대등한 것.

# Asymmetric Multiprocessing : 하나의 cpu가 컨트롤을 담당하고 나머지가 그 cpu를 따르는 것.

 

 

* Real-Time Scheduling
: 반드시 데드 라인을 보장해야 한다.

 

# 그때 그때 스케줄링하기보다는 real time job들이 정해져 있고, 그것들을 미리 스케줄링해서 데드라인이 보장되도록 적재적소에 배치되도록 하는 그런 시스템을 쓰고 있다.

 

cf> real time job : dead라인이 있는 job!
    (정해진 시간안에 완료해야하는 작업이 있는 job)

 

 

 

# hard는 데드라인이 꼭 지켜져야 하고
  soft는 데드라인을 지켜야하는 의무가 좀더 부드럽다.


* Thread Scheduling

cf> Thread : 프로세스 하나 안에 cpu 수행단위.

# User level Thread : 사용자 프로세스가 직접 쓰레드를 관리하고 os는 그 쓰레드를 모르는 상황. => 그래서 os가 프로세스에게 cpu사용권을 주면 그 프로세스 내에서 어떤 쓰레드에게 cpu사용권을 줄지를 결정하는 것. => "Local Scheduling"


# Kernel level Thread : os가 쓰레드의 존재를 이미 알고 있는 상황. => 그래서 kernel의 단기 스케줄러가 cpu사용권을 결정하는 것. => "Global Scheduling"

 

 

 

* 알고리즘 성능 평가

 

cf> trace : 실제 프로그램을 통해 추출한 input data.

 

 

 

 

'cs > os' 카테고리의 다른 글

#6-2. Process Synchronization  (0) 2018.01.15
#6-1. Process Synchronization  (0) 2018.01.11
#5-2. CPU SCHEDULING  (1) 2018.01.08
#5. CPU SCHEDULING  (0) 2018.01.04
#4. Process Management  (0) 2018.01.02

+ Recent posts