한글로는 다중 프로그래밍, 다중 태스킹이라고도 하는데
사실 용어가 중요한 것이 아니라 개념이 중요한 것이니까 한 번 알아보자
하나의 프로그램으로는 CPU나 I/O 장치를 항상 바쁘게 할 수 없다.
-> I/O 유휴상태가 발생한다
다시 말해서, 계속 작동하게 할 수 없다는 말이다.
++그래서 사람들이 생각했다. 그럼 사용 안하는 시간에 다른 프로그램도 돌릴 수 있지 않을까??
그래서 한 번에 둘 이상의 프로그램을 돌리는 것이 바로 다중프로그래밍이다. (Multiprogramming)
CPU가 항상 한 개의 프로그램을 돌릴 수 있게 해서 CPU의 이용률을 높인 것이다.
++ 한 프로그램이 이용안 할 때 다른 프로그램이 실행된다는 뜻이다.
** 우리는 Multiprogramming에서 실행중인 프로그램을 프로세스(Process)라고 말한다.
// 다른 글에서도 나옴
다시 컴퓨터 용어로 말하자면
1프로세스가 지금 실행 중이라고 치자. 근데 1프로세스가 실행을 하다가 대기해야할 경우가 생겨
그러면 1프로세스가 CPU를 쓰지 않으니까 CPU는 유휴상태(쓰이지 않는 상태) 잖아
그래서 2프로세스가 지금 CPU를 쓰는 거지.
다시 대기상태가 풀리면 1프로세스는 CPU자원을 다시 돌려받는 거지
결국 프로세스가 2개 이상이면 CPU가 쉴 일이 없다는 얘기다.
그렇다면 이제 Multitasking 우리가 맨날 쓰는 단어 멀티태스킹에 대해 알아볼까?
다중 프로그래밍과 아주 흡사하고 거기서 파생된 단어다.
CPU가 여러 프로세스를 전환하며 프로세스를 실행하는 것이고 전환이 아주 빨라서 사용자에게 빠른 응답 시간(response time)을 제공하고 사용자는 그래서 여러 프로그램이 동시에 실행되는 것처럼 보인다.
**사실 CPU 스케줄링과 가상메모리 개념을 배워야 하는데... 나중에 글 쓸거니까 읽었으면 좋겠다.
**프로세스가 실행될 때 일반적으로는 프로세스가 완료되거나 I/O를 수행하기 전 짧은 시간 동안만 실행된다는 것이 문제라고 생각할 수 있는데 예를 들어 우리가 글씨를 쓴다고 헸을 때, 빠른 사람은 1초에 7자를 친다고 하자?
근데 컴퓨터한테는,,, 다 인식하기에 충분한 시간이란 것이다.
//아무리 컴퓨터한테 짧은 시간이라고 해도 우리가 그 사이에 하는 연산은 컴퓨터가 충분히 할 수 있다는 것이다.
요약해보자면
멀티프로그래밍은
그냥 CPU가 쉬지 않게 해주는 방법
멀티태스킹은
동시에 여러 프로그램이 돌아가는 것처럼 보여주는 방법
(보여주는 것 뿐만 아니라 연산도 하니까)
'컴퓨터(Computer Science) > 운영체제(Operation System)' 카테고리의 다른 글
프로세스 스케줄링(Process scheduling)이란? (0) | 2020.05.29 |
---|---|
프로세스(process)란 무엇인가? [운영체제] (0) | 2020.05.29 |
프로세스에서의 동기화 (Process Synchronization) [운영체제] (0) | 2020.05.28 |
동기화, 모니터 : Synchronization, Monitor [운영체제] (0) | 2020.05.28 |
Critical Section, 임계구역이란? [운영체제] (0) | 2020.05.28 |