Skip to Content
Suffering builds character
아카이브13.프로세스,스레드특징프로세스와 스레드4. 2개 이상의 프로그램을 동시에 실행하기

4. 2개 이상의 프로그램을 동시에 실행하기

CPU는 한 시점에 하나의 명령어만 실행하기 때문에 마치 하나의 프로그램만 실행할 수 있는 것처럼 느껴질 수 있으나,

실제로 사용자가 컴퓨터를 사용하는 상황을 떠올려보면,
음악을 들으면서 동시에 Excel에 텍스트를 타이핑할 수 있음

유튜브 뮤직도 Excel도 결국 소스 코드로 작성된 하나의 프로그램인데,
CPU는 한 시점에 한 가지의 명령어만 수행할 수 있다면,

어떻게 가능한 것일까?

각 프로세스들 마다 시간을 짧게 분할하여 실행

운영체제의 CPU 스케줄링 기법 중 하나인 시분할 알고리즘을 활용,
실행 중인 각 프로세스들을 매우 짧은 시간 동안 빠르게 번갈아가면서 실행

두 프로세스가 상당히 빠른 속도로 번갈아가며 실행되기 때문에, 사용자 입장에서는 마치 동시에 실행되고 있는 것처럼 느껴짐
→ 애니메이션이 수많은 프레임들을 빠르게 표현하여 움직이는 것처럼 보여지는 것과 비슷한 맥락

Note

시분할 알고리즘
시분할(Time-Slicing)은 각 프로세스에 정해진 시간(시간 조각, time slice)을 할당한 후,
그 시간이 만료되면 다음 프로세스에게 CPU를 넘기는 방식

이를 통해 다수의 프로그램들이 동시에 실행되는 것처럼 보이도록 할 수 있음

이처럼 Windows, Mac, Linux와 같은 현대 운영체제는 서로 다른 프로그램들을 (사용자 입장에서) 동시에 실행되는 것처럼 동작시킬 수 있음

💡
Tip

Microsoft의 초창기 운영체제, MS-DOS

과거 MS DOS 운영체제의 경우에는 단일 작업(Single tasking)만 가능하도록 설계된 운영체제
따라서 자바 프로그램을 실행할 경우, 메모장과 같은 다른 프로그램은 실행할 수 없었음

MS-DOS는 메모리와 CPU를 하나의 프로세스에 완전히 할당,
동시에 여러 프로그램을 실행할 수 있는 멀티태스킹은 지원하지 않음

예를 들어, 사용자가 edit 명령어로 텍스트 편집기를 실행하면, 텍스트 편집기가 종료되기 전까지 다른 작업을 실행할 수 없었음

Last updated on