운영체제/운영체제 정리

3. 다중 프로그래밍이란?

100win10 2019. 9. 4. 23:45


이전에는 하나의 프로그램만 실행되고 CPU는 시간이 빠르고 다른 I/O 장치 등은 시간이 오래 걸리기에 CPU가 낭비 되는 시간이


많았다.






C언어를 USER PROGRAM으로  예를 들면 Cpu가 동작하다가 I/O를 실행하다 다시 CPU를 동작한다. 이때 CPU는 아무 일도 하지 않고 놀게 되는데



이 시간이 매우 아깝게 버려지는 것. 그래서 메모리에 여러 개의 프로그램을 돌리는 식으로 바뀌게 되었다.







처음 USER PROGRAM 1을 실행하다가 I/O를 만나면 바로 USER PROGRAM 2로 내려가게 된다. 어느 순간에도


CPU가 놀지 않도록 즉 USER PROGRAM2가 I/O를 만나면 CPU는 USER PROGRAM 3로 가게 되는 것.  그러면 CPU에 이용율이 굉장히 올라갈 수


있다. 이런 식으로 메모리에 여러가지 프로그램을 올리는 것을 다중 프로그래밍 ( multi programming ) 이라고 한다. 



이렇게 다중 프로그래밍이 나오면서 생각할 것들이 생기게 됬는데 


프로그램 3개중 무엇을 먼저 실행 시키는게 좋을까? 운영체제의 목적중 하나는 성능 향상인데 1-2-3 과 2-1-3이 성능이 다르게 나온다면 


어떻게 더 좋은 성능을 만들게 될건가? CPU SCHEDULING 을 생각해야 되고


메모리에 어떤 식으로 USER PROGRAM을 배치 해야 하고


프로그램이 종료될 시 빈 공간이 생길텐데 이 빈공간을 어떻게 처리할지에 대한 메모리 관도 생각하여야 한다.



그러면 시공유 시스템(Time-Sharing System)이란?


예를 들어 각 ms초마다 user1 user2 user3 user1 user2 user3 . . 으로 cpu를 번갈아 할당하는 것을 말하며 시간이 지나면 자동으로 넘어가는


강제 절환의 특징을 가지는 것이 시공유 시스템이다.