#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 |