#5 CPU SCHEDULING

 


 

* cpu and I/O Bursts in Program Execution




# cpu bursts : cpu만 실행 되는곳

  I/o bursts : I/O만 실행 되는곳


# 프로그램의 종류에 따라 cpu burts와 I/O bursts의 빈도가 달라진다.

cf> 주로 사람이 만지는 프로그램은 I/O bursts가 높아지고,

    과학 계산용 프로그램은 cpu bursts가 높다.


* cpu-bursts time의 분포

 

 


# 그래프 분석 : job의 종류가 섞여있다.

# cpu bursts가 짧은 경우(빨간색 네모) : 중간에 i/o가 많이 끼어드는 경우가 많았다. => I/O bound job

  cpu bursts가 긴 경우(파란색 네모)   : 중간에 i/o가 많이 끼어들지 않았다. => cpu bound job


!!!) 이렇듯 여러 종류의 job(=process)이 섞여 있기 때문에 cpu 스케줄링이 필요하다.

 

  - cpu 스케줄링의 중요한 역할 중에 하나는!!!

  : I/O bound job 처럼 사람하고 interaction 하는 job 에게 cpu를 우선적으로 주는것. (효율성을 위해!!)

    즉, interactive 한 job들을 오래 기다리게 하지 않는것


* 프로세스의 특성 분류

 

 


* CPU Scheduler & Dispatcher

 

 


# CPU 스케줄러 : 누구한테 CPU를 줄지를 정함.

 ???) CPU 스케줄러는 HW or SW?

     : CPU 스케줄러는 os kernel에 있는 스케줄링 해주는 code이다.


# Dispatcher : cpu를 누구한테 줄지 결정했으면, 그 친구에게 cpu를 넘겨주는 역할을 함.

  cf> 마찬가지로 kernel에 있는 code.


!!!과정))

 - 방금전에 cpu에서 돌아가던 process의 context를 save하고, 

 - 새로 cpu를 넘겨주는 process의 context를 펼쳐놓는다.

 - cpu 안에다가 register 값 세팅 해놓고,

 - 그런다음에 cpu를 넘겨준다.


# cpu 스케줄링이 필요한 경우 

 1. I/O 작업처럼 오래 걸리는 작업을 하는 경우

 2. cpu를 계속 쓰고 싶은데 timer interrupt가 발생해서 빼앗는 경우

 3. 오래 걸리는 작업이 끈낫을때 (device controller가 interrupt를 걸어서 ready상태로 만들어 줌.)

 4. 

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

#5-3. CPU SCHEDULING  (0) 2018.01.09
#5-2. CPU SCHEDULING  (1) 2018.01.08
#4. Process Management  (0) 2018.01.02
#3-3. Thread  (0) 2017.12.29
#3-2. Process  (0) 2017.12.27

+ Recent posts