Uni-programming vs Multiprogramming
Uni-programming
Processor가 I/O 명령이 끝날때까지 기다리는 방식으로 하나의 process가 끝날때까지 CPU를 점유하고 있는 방식이다.
그래서 Utilization이 좋지 않다.
Multiprogramming
Processor가 I/O 명령이 들어오면 진행 중이던 process가 다른 process에게 CPU를 넘겨주는 방식이다.(context switch)
multiprogramming을 위해서는 memory space가 커야한다.
두 방식에 차이점을 알기 위해서 그림으로 비교해본다.
위의 그림에서 보이는 것처럼 program A를 실행시켜서 I/O 명령이 들어오면 그 작업이 끝날 때까지 기다렸다가 A를 끝내고 나서 다른 program을 실행한다.
반면에 아래의 그림처럼 multiprogramming의 경우는 program A를 실행시켜서 I/O 명령이 들어오면 그 작업이 끝날 때까지 기다리는 것이 아니라 다른 프로그램 즉, program B를 실행하고, program B도 I/O 명령이 들어오면 기다리고 다시 I/O 명령이 끝난 A를 실행한다.
즉, utilization이 더 좋다.
Time Sharing
multi programming 방식은 throughput은 좋지만 response time이 좋지 않다는 단점이 있다. 그래서 이를 충족시키는 방식으로 나온 방법이 time sharing이다. time sharing이 나왔다고해서 multi programming 방식을 안쓰는 것은 아니다.
time sharing 방식은 일정 시간(time slice, time quantum)마다 실행 중인 process를 바꾸는(dispatcher를 통한 context switch) 방식이다.
Time Sharing vs Multiprogramming
time sharing 방식은 response time이 좋기 때문에, foreground processing, interactive processing에 쓰인다.
대신 context switch가 많이 일어나기 때문에 overhead가 크다.
multiprogramming 방식은 throughput이 좋기 때문에 background processing, batch processing에 쓰인다.
context switch가 적기 때문에 overhead가 적다.
- throughtput은 처리량으로 단위시간당 끝낸 job(process)의 수이다.