* Schedulers
- Scheduler : 프로세스 상태의 변화를 결정하는 것
* Long-term scheduler and Short-term scheduler
- Disk와 메모리사이에 존재하는 long-term scheduler와
메모리와 CPU사이에 존재하는 short-term scheduler가 존재한다.
ⓐ Long-term scheduler
- Disk에 있는 Job을 언제 메모리 큐로 보낼 것인가를 결정하는 스케쥴러
- Job scheduler라고도 부른다.
- Process가 종료되면(Memory 여유가 생길 때) Job을 불러들인다.
- 몇초 또는 몇분에 한번씩 발생한다.
- 느린 편이다.
ⓑ Short-term scheduler
- Memory에 있는 것을 언제 CPU로 보낼 것인가를 결정하는 스케쥴러
- CPU scheduler라고도 한다.
- Timer interrupt에 의해 많은 빈도로 실행된다.
- milliseconds단위로 발생한다.
- 매우 자주 실행되므로 빨라야 한다.
※ 대부분의 PC는 short-term scheduler만 존재한다.
* LT-scheduler
- Long-term scheduler에서 어떤 타입의 process를 메모리에 올릴 것인가(실행할 것인가)?
> 결론적으론 두개의 process타입을 모두 실행해주는 것이다. Why?
※ Process type
ⓐ I/O bound process : 대부분의 시간을 I/O event에서 실행한다.(ex) 채팅)
ⓑ CPU bound process : 대부분의 시간을 계산하는 과정(CPU)에서 실행한다.(ex) 3D graphic)
- 만약, I/O bound process를 우선적으로 실행시켜주면 I/O device queue는 꽉 차고,
Ready Queue는 비어있고, CPU도 놀고 있는 상태가 된다.
> 실행 효율이 50%가 된다.(각각의 queue(ready, I/O device)를 50% 효율로 잡는다면...)
- 만약, CPU bound process를 우선적으로 실행시켜주면 Ready queue도 꽉 차고, CPU도 지속적으로 활동한다.
CPU관점에서는 자신의 performance가 향상된다.
> But, 이 또한 반대편 queue(I/O device queue)가 비어있기 때문에 실행 효율이 50%라고 할 수 있다.
- LT-scheduler : I/O bound process와 CPU bound process를 섞어서 실행시켜준다.
> Ready Queue와 I/O device queue가 모두 충분히 사용되기 때문에 System performance가 좋다.
* Medium Scheduling : Swapping
- 위에서 대부분의 PC는 short-term scheduler만 사용한다고 보았다.
그렇다면 메모리가 한계에 다다랐을 때 process를 어떻게 실행 한 것인가?
> Medium scheduling : swapping 기법을 사용한다.
- 실행중인 프로세스를 잠시 디스크 단계로 내린다.(swap out)
후에 요청한 프로세스를 실행한 후에 디스크 단계로 내려간 프로세스를 reload(재실행)해준다. (swap in)
- 어떤 것을 swap할 것인지는 medium scheduling 기법에 모두 포함되 있다.
* Context Switch
- PCB의 모든 정보를 Context라고하며, 이것이 CPU에 Load되고 Save되는 과정을 Context switch라고 한다.
- Context Switch는 순수한 오버헤드이다.
> 꼭 필요한 과정인데 시간 낭비인 것. 무언가를 하기 위해서 실행되는 낭비.
따라서, context switch는 빠르게 실행되야 한다.
- Context Switch를 빠르게 하기 위한 방법
> 메모리 속도를 높인다.
> 레지스터 수를 줄인다
> Context Switch의 특수한 명령어를 수행한다.
※ 위에서 register수를 줄인다고 해야 빨라진다고 했는데, 반대로 register를 늘리면서 register를 여러 집합으로
나누면 performance가 증가하게 된다.