Timesharing이란?
Timesharing 시스템은 Multi Programming의 개념을 확장한 것입니다.
Multi Programming은 한 프로그램을 실행할 때 그 프로그램이 더 이상 실행하지 못하는 즉, CPU를 사용하지 못하는 상황이 될 때까지 계속 CPU를 사용합니다.
그런데 이런 방식은 비교적 짧은 시간만 CPU를 사용하면 되는 프로그램에게는 비효율적인 결과를 가져다주게 됩니다.
만약, 프로그램 C는 1분만 CPU를 사용하면 되는데 프로그램 A는 10분, B는 5분을 사용해야 한다고 하면 프로그램 C는 단 1분을 실행하기 위해 15분을 기다려야 하기 때문에 C의 입장에서는 매우 비효율적인 시스템이 되는 것이죠.
Multi Programming의 이러한 문제점을 개선하기 위해 나온 것이 Timesharing 시스템입니다.
각 프로그램에게 CPU를 일정한 시간 단위로 번갈아 사용할 수 있도록 하는 시스템입니다.
✔️ 각 프로그램이 CPU를 사용할 수 있는 시간은 *타임 슬라이스*(=타임 콘텀) 라고 합니다.
cf) 타임 슬라이스는 보통 100ms 정도 입니다.
Timesharing vs Multi Programming
위 그림은 이전 글에서 봤던 Multi Programming을 나타내는 그림입니다.
Timesharing도 위 그림처럼 프로그램들이 번갈아 가며 실행하는 방식입니다.
하지만, Multi Programming과 다르게 Timesharing은 각 프로그램이 일정한 시간(타임 슬라이스)만큼 CPU를 사용하고나면 반드시 다른 프로그램에게 CPU를 넘겨야 합니다.
타임 슬라이스는 매우 짧기 때문에 차례가 빨리 돌아오게 됩니다.
그래서 실제로는 여러 프로그램이 번갈아 실행되고 있지만,
프로그램 입장에서는 CPU를 마치 혼자서 사용하는 것처럼 느껴지게 되죠.
여기서 Multi Programming 과 Timesharing의 중요한 차이점이 있습니다.
Multi Programming은 프로그램마다 CPU가 주어졌을 때 실행하는 시간이 다릅니다.(위 그림에서는 같게 그린것뿐)
하지만, Timesharing에서는 CPU가 주어졌을 때 실행하는 시간이 모든 프로그램에서 같습니다.
Timesharing에서는 각 프로그램에게 CPU가 주어졌을 때 실행하는 시간이 모두 같은 것이 원칙이기 때문입니다.
✅ 정리
Multi programming과 Timesharing의 공통점과 차이점
공통점
-> 여러 프로그램이 CPU를 번갈아 사용하면서 실행하게 된다.
차이점
-> Multi Programming에서는 CPU가 주어졌을 때 실행하는 시간이 프로그램마다 다르지만,
Timesharing에서는 CPU가 주어졌을 때 실행하는 시간이 모두 같다.
반응 시간(Response-Time)
프로그램의 실행이 시작할 때까지 기다리는 시간을 반응 시간이라고 합니다.
Timesharing에서는 아주 짧은 시간만 실행을 하고, 다음 프로그램으로 넘어간다고 했었죠.
따라서 모든 프로그램이 실행을 시작하기 까지의 시간이 매우 짧아지게 됩니다.
반면에 Multi Programming은 앞에 실행한 프로그램들이 필요한 시간만큼 실행을 하고, 다음 프로그램으로 넘어가기 때문에 반응 시간이 길어지게 됩니다.
예를 들어 보자면, 프로그램 A, B, C 이렇게 3개의 프로그램이 있을 때,
Timesharing에서는 타임 슬라이스가 0.1초라고 한다면, 반응 시간은 각각 0.1초, 0.2초, 0.3초가 됩니다.
하지만, Multi Programming에서는 각각의 프로그램을 실행하는데 차례대로 10분, 5분, 1분이 걸린다면 반응 시간은 각각 10분, 15분, 16분이 되게됩니다.
따라서 Multi Programming은 Timesharing에 비해서 반응 시간이 매우 길어지게 되는 것이죠.
처리량(Throughput)
단위 시간동안 실행을 마친 프로그램의 수를 처리량이라고 합니다.
Timesharing은 타임 슬라이스마다 프로그램을 바꿔 실행을 하게 됩니다.
실행하는 프로그램을 바꾸는 과정을 Context Switch라고 하는데, Timesharing은 Context Switch가 자주(타임 슬라이스마다)일어나기 때문에 같은 시간 동안 Multi Programming보다 실행한 프로그램의 수가 적을 수 밖에 없습니다.
Multi Programming가 프로그램을 실행하는 동안 Timesharing은 프로그램을 실행했다가 Context Switch를 했다가를 반복하기 때문입니다.
따라서 Multi Programming은 Timeshraing보다 처리량이 많아지게 됩니다.
Batch-Processing vs Interactive-Processing
Multi Programming과 Timesharing은 각각 장단점이 있기 때문에 어떤 것이 더 좋다고 할 수는 없습니다.
Multi Programming은 Batch Processing(=Background Processing) 에 적합한 방식이고,
Timesharing은 Interactive Processing(=Foreground Processing)에 적합한 방식입니다.
Batch Processing은 실행 시간이 오래 걸리는 프로그램들을 여러 개 모아 차례로 실행하는 방법으로, 이 방식에서는 얼마나 오랫동안 실행이 될지 알 수 없기 때문에 프로그램 입장에서도, 사용자 입장에서도 기다리는 것이 무의미합니다.
일괄 처리 방식(Batch Processing)은 보통 사용자가 운영체제 실행을 요청하고 한참 뒤에 결과를 확인하는 그런 일에 사용됩니다.
따라서 일괄 처리 방식에서는 Multi Programming이 사용되는 것이죠.
바로바로 결과를 보여줄 필요가 없으니까요.
반면에 사용자와 대화하듯이 바로바로 결과를 보여줘야하는 작업들이 있습니다.
예로는 문서 편집이나 웹 브라우저 링크 등이 있습니다.
이런 작업들을 Interactive Processing(Foreground Processing)이라고 하는데요.
이 작업들을 처리하는 데는 반응 시간(Response Time)이 짧은 Timesharing이 적합하게 됩니다.
⚠️ 주의
-> Timesharing이 Multi Programming보다 반응 시간이 짧아서 결과를 바로바로 보여주는 것이지 Multi Programming보다 CPU가 일을 더 빨리 처리한다는 의미가 아닙니다.
✅ 정리
Multi Programming vs Timesharing
Multi Programming | Timesharing |
-> 반응 시간(Response Time)이 길다 (단점) -> 처리량(Throughput)이 많다 (장점) -> Batch Processing, Background Processing에 사용된다 |
-> 반응 시간(Response Time)이 짧다 (장점) -> 처리량(Throughput)이 적다 (단점) -> Interactive Processing, Foreground Processing에 사용된다 |
'운영체제' 카테고리의 다른 글
[운영체제] OS-Architecture(Monolithic Kernel, Micro Kernel) (0) | 2023.04.04 |
---|---|
[운영체제] 운영체제의 구성 (0) | 2023.04.03 |
[운영체제] Multi Programming vs Multi Processing (0) | 2023.04.02 |
[운영체제] SMP(Symmetric Multi Processing) (0) | 2023.04.02 |
[운영체제] Uni Programming, Multi Programming (0) | 2023.04.01 |