멀티 프로그래밍이란?
- 컴퓨터공학
- 2016. 2. 12. 22:40
멀티 프로그래밍 (Multi-programming)
역시 용어의 단어부터 확인해봅니다. '멀티'+'프로그램' 이니깐 여러 개의 프로그램? 유추할 수 있겠죠?
멀티 프로그래밍은 단일 프로세서 상에서 여러 개의 프로그램이 동시에 실행되는 것을 말합니다.
그러나 프로세서는 한번에 한 작업만 수행할 수 있기 때문에 '동시'라는 말은 엄밀히 말해서 틀린 표현입니다.
그렇지만 OS 통제하에 한 프로그램이 일부 수행되고 나서, 또 다른 프로그램이 일부 수행되는 식으로 진행되는데 이 속도가 빠르고 시간 텀이 매우 작기 때문에 사용자 눈에는 '동시'에 일어나는 것처럼 보일 뿐입니다.
위의 그림을 보시면 알 수 있듯이 프로세서(여기서는 CPU)가 프로그램 여러 개를 동시에 수행하는 것을 알 수 있습니다. 이때
프로세서는 P1 조금 수행하다가 P2도 조금 수행하다가 이번엔 P3도 조금 수행해주고, P4도 조금 수행해주고, 다시 P1 조금 수행해주고... 이런식으로 진행됩니다.
그럼 왜 운영체제는 멀티 프로그래밍을 지원할까요?
그 이유는 운영체제의 최대 목적인 'Reduce Idling Time'에 부합하기 때문입니다.
프로세서 하나가 프로그램1개를 완전히 끝내고 다른 프로그램을 수행하도록 지원을 한다면 운영체제의 목적에 어긋나기 때문입니다.
가령, P1을 처리하는 중에 사용자의 입력을 요구하는 부분이 있다고 가정합시다. 이런 경우에는 사용자가 입력을 해주지 않으면 프로세서는 P1을 완전히 끝내지 못합니다. 사용자가 입력을 해주어야 다음 과정으로 넘어갈 수 있기때문이죠.
이렇게 P1이 끝나지 않으면 다음 작업 순서인 P2,P3,P4 역시 기다릴 수 밖에 없는 것이고, 이 기다리는 시간동안 CPU(프로세서)가 일을 하지 못하고 쉬는 셈이 되는 거죠.
하지만 멀티 프로그래밍으로 처리를 한다면, P1 입력이 들어올 때까지 무한정 기다리는 것이 아니고, P2도 조금 수행하고, P3도 조금 수행하고, P4도 조금 수행하고 ... 하다보니 CPU가 조금이라도 더 일을 하는 셈이 되는 것이고 아무래도 더 효율이 좋겠죠.
멀티 프로그래밍과 멀티 태스킹을 헷갈려 하실 수도 있습니다.
여러 일을 동시에 교대로 처리한다는 점에서 멀티 프로그래밍과 멀티 태스킹은 그 의미가 같습니다. 다만 관점에따라 태스크와 프로그램을 구분할 수 있기 때문에 완전히 같다고는 하기 어렵습니다.
멀티 프로그래밍은 멀티 태스킹을 구현하는 스케쥴링의 한 방식이라고 생각하면 좋을 듯하고, 최근에는 멀티 프로그래밍이라는 용어보다 멀티 태스킹이라는 용어를 쓰는 것이 일반적임을 알아두었으면 좋겠습니다.
'컴퓨터공학' 카테고리의 다른 글
하이퍼 스레딩이란? - (1) (2) | 2016.02.15 |
---|---|
멀티 스레딩이란? (0) | 2016.02.15 |
멀티태스킹이란? (2) | 2016.02.12 |
멀티 프로세싱이란? (2) | 2016.02.12 |
CPU, 프로세서, 코어... 같은 용어인가? (4) | 2016.02.12 |
이 글을 공유하기