CS/OS

[운영체제] 1-3. 타임 쉐어링

F12:) 2023. 9. 10. 21:53

Time Sharing

이전 글에서 설명했던 상황을 다시 떠올려봅시다. multi-programming 방법에서도 분명한 단점이 있습니다. 만약 우리가 A 고객과 B 고객이 있다고 해봅시다. B 고객은 2초면 끝나는 작업이고, A 고객은 2분이 걸린다고 한다면, B를 먼저 처리하고, A를 처리해야 B를 조금 더 빨리 끝내줄 수 있겠죠. 간단하게 설명하면 이러한 방식이 Time Sharing입니다.

 

정확히는 time quantum(하나의 프로세스에게 할당되는 최대 허용 시간)을 정해둡니다. 이러한 time quantum 내에 프로세스가 끝나지 않게 되면 다른 프로세스를 처리하는 swap을 합니다. 이렇게 함으로써 mean response time(하나의 프로세스가 CPU에게 처리되는데 걸리는 시간)을 줄일 수 있습니다.

 

program A가 끝나지 않아도, time quantum을 만족했으므로, 다음 프로세스 순서로 넘어가게 됩니다.

 

프로세스가 종료되지 않더라도, 입출력을 기다리는 wait 상태가 되면 time quantum을 채우지 않더라도 다른 프로세스로 swap됩니다.

 

 

Multi-programming vs Time-sharing

이 두개의 방식은 프로세스가 어떤 중요도를 갖고 처리되는지에 집중됩니다.

 

만약 어떤 프로세스가 오랫동안 CPU에게 할당되어 진행해야하는 작업이거나 throughput(단위 시간 당 완료한 작업의 수)이 중요한 작업이라면 Multi-programming 방식이 좋습니다. 하지만 response time이 중요한 interactive processing(사용자와 상호작용하는 프로그램 ex. 텍스트 편집기 등)이라면 Time Sharing을 사용하는 것이 좋습니다.

 

 

Symmetric multiprocessing(SMP)

CPU가 할당된 일을 진행하는데, 각 CPU가 같은 성격의 일을 진행하는 시스템을 의미한다. 즉, 비슷한 일들을 실행하는 CPU들로 이루어져있는 시스템을 의미한다. 무조건 같은 프로세스를 처리하는 것이 아니다. 프로세스 1~5까지가 사용자 프로그램을 실행하는데, 쓰인다고 한다면 그리고 CPU가 1~5의 작업들을 수행한다고 한다면 이 때, SMP 방식이라고 한다.

-> 반대되는 개념은 Asymmetric multiprocessing이다.

 

 

Multi-programming vs Multi-processing

이 두개의 개념은 엄연히 다릅니다. Multi-programming은 CPU 한개가 여러개의 작업을 순차적으로 실행하는 것을 의미하고, Multi-processing은 여러 개의 CPU가 여러개의 일을 수행하는 것을 의미합니다.