CS/OS

[운영체제] 1-2. 멀티 프로그래밍

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

Simple Batch System

일련의 프로그램을 순서대로 진행하는 시스템

 

 

Uni programming

하나의 프로그램에 대해서 모두 처리한 후에, 다른 프로그램을 실행하는 과정을 의미합니다.

 

지금부터 많은 예를 들 때, 은행 창구를 예로 들어보겠습니다. uni programming은 직원 한명에 의자가 딱 하나 있는 것입니다.

 

여기에서 직원은 CPU를 의미하고, 의자는 메인 메모리라고 생각해봅시다. 이렇게 되면 고객 한 명밖에 처리하지 못하는데, 고객이 어떤 서류를 작성해야한다면 그러한 순간에 직원은 고객이 모든 서류 작성을 마칠 때까지 기다리게됩니다. 

 

이러한 순간은 굉장한 낭비가 됩니다. CPU가 일을 처리하는 시간보다 입출력을 기다리는 시간이 더 많은 비율을 차지하게 되기 때문이죠.(보통 입출력은 많은 시간이 소모됩니다.)

 

Uni-programming

 

Multi programming

그래서 등장한 것이, multi programming입니다.

 

 

이 방법은 의자가 1개가 아닌 3개가 있는 것입니다. 하지만 직원은 한명만 있다고 해봅시다.

 

이 때는, 직원이 한 고객의 일을 처리하고 그 고객이 서류를 작성하게 되면 다른 고객을 처리하면서 진행하게 됩니다. 이렇게 되면 고객이 서류를 작성하는 시간동안 직원은 다른 고객을 처리하게 되므로, uni programming보다 더 직원이 일을 많이 하게 됩니다.

 

Multi-programming

 

그렇다면 의자를 무수히 많이 놓음으로써, 일의 처리를 빨라지게 하면 될텐데 왜 그러지 못할까요??

-> 의자가 너무 많아지면 은행이 커야하니까.. (그러니까 메모리의 크기가 더욱 커져야하기 때문입니다.)

 

 

Process Scheduling

직원은 아무 기준없이, 어떤 고객을 처리할 지 진행하지 않습니다. scheduling 기법을 통해서, 어떤 고객을 먼저 처리해야할 지 결정하고 다음 순서에 해당 고객을 처리하게 됩니다. 이후에 이 부분에 대해서는 더 자세하게 다룹니다.

 

우리는 이러한 기법은 Process Scheduling, Job Scheduling, CPU Scheduling이라고 합니다.