← Blog로 돌아가기

2026년 5월 7일

CS / Theory / OS

[OS] 멀티프로그래밍과 멀티프로세싱

앞선 글에서 프로세스가 무엇인지 살펴봤다. 그렇다면 운영체제는 여러 프로세스를 어떻게 동시에 처리할까. 이 글에서는 CPU 활용 방식의 발전 흐름과 함께, 멀티프로그래밍과 멀티프로세싱의 차이를 살펴본다.



목차


[1] 유니프로그래밍
[2] 멀티프로그래밍
[3] 멀티태스킹
[4] 멀티프로세서와 멀티프로세싱
[5] 개념 비교 정리
전체 흐름 정리



[1] 유니프로그래밍


유니프로그래밍(Uniprogramming)은 메모리에 프로세스를 하나만 올려 실행하는 방식이다. 초기 컴퓨터에서 사용하던 방법이다.

TEXT
[CPU] ──── [프로세스 A 실행] ↓ I/O 요청 발생 [CPU] ──── [대기 중... 아무것도 안 함] ↓ I/O 완료 [CPU] ──── [프로세스 A 재개]

문제는 I/O 대기 시간이다. 프로세스가 파일을 읽거나 네트워크 응답을 기다리는 동안 CPU는 아무것도 하지 않고 대기한다. 프로그램 실행 시간 중 상당 부분이 I/O 대기라는 점을 고려하면, CPU 자원이 심각하게 낭비된다.



[2] 멀티프로그래밍


멀티프로그래밍(Multiprogramming)은 메모리에 여러 프로세스를 동시에 올려두는 방식이다. 한 프로세스가 I/O를 기다리는 동안 CPU가 다른 프로세스를 실행해 유휴 시간을 줄인다.

TEXT
[CPU] ── [프로세스 A 실행] ↓ A가 I/O 요청 [CPU] ── [프로세스 B 실행] ↓ B가 I/O 요청 [CPU] ── [프로세스 C 실행] ↓ A의 I/O 완료 [CPU] ── [프로세스 A 재개]

CPU가 쉬는 순간을 최소화해 처리 효율이 크게 향상된다.


멀티프로그래밍의 목표

멀티프로그래밍의 핵심 목적은 CPU 이용률(CPU Utilization) 을 높이는 것이다. I/O 대기 때문에 낭비되던 CPU 시간을 다른 프로세스에 활용한다.

단, 이 방식은 프로세스 전환이 I/O 발생 시점에만 일어난다. 한 프로세스가 I/O 없이 CPU를 오래 점유하면 다른 프로세스는 계속 기다려야 한다. 이 한계를 해결한 것이 멀티태스킹이다.



[3] 멀티태스킹


멀티태스킹(Multitasking)은 여러 프로세스를 짧은 시간 단위(타임 슬라이스)로 번갈아 실행하는 방식이다. I/O 발생 여부와 관계없이, 일정 시간이 지나면 강제로 다음 프로세스로 전환한다.

TEXT
시간 → [A 실행] [B 실행] [C 실행] [A 실행] [B 실행] ... 10ms 10ms 10ms 10ms 10ms

전환 속도가 매우 빠르기 때문에 사용자 입장에서는 여러 작업이 동시에 실행되는 것처럼 느껴진다. 실제로는 CPU가 프로세스들 사이를 빠르게 오가고 있는 것이다.


멀티프로그래밍 vs 멀티태스킹

두 개념은 비슷해 보이지만 목적이 다르다.

구분멀티프로그래밍멀티태스킹
목적CPU 이용률 극대화응답 시간 단축, 사용자 경험 향상
전환 시점I/O 발생 시일정 시간마다 (타임 슬라이스)
초점CPU 효율동시성 체감

멀티태스킹은 앞서 살펴본 시분할 시스템의 개념과 직접 연결된다. 프로세스 전환이 일어날 때마다 컨텍스트 스위칭이 수행된다.



[4] 멀티프로세서와 멀티프로세싱


지금까지는 CPU가 하나인 환경을 가정했다. 멀티프로세서는 한 단계 더 나아간다.


멀티프로세서 (Multiprocessor)

컴퓨터에 CPU가 여러 개 있는 하드웨어 구조다. 오늘날 대부분의 컴퓨터는 하나의 CPU 안에 여러 개의 코어(Core) 를 탑재한 멀티코어 구조를 사용한다.

TEXT
[CPU 코어 1] ── [프로세스 A] [CPU 코어 2] ── [프로세스 B] [CPU 코어 3] ── [프로세스 C] [CPU 코어 4] ── [프로세스 D]

멀티프로세싱 (Multiprocessing)

여러 CPU(코어)를 이용해 여러 작업을 실제로 동시에 처리하는 방식이다. 멀티태스킹이 빠른 전환으로 동시성을 흉내 낸다면, 멀티프로세싱은 진짜로 병렬 처리한다.


멀티태스킹 vs 멀티프로세싱

구분멀티태스킹멀티프로세싱
CPU 수1개여러 개 (멀티코어)
동시 실행빠른 전환으로 동시처럼 보임실제로 동시에 실행
특징동시성 (Concurrency)병렬성 (Parallelism)


[5] 개념 비교 정리


지금까지 살펴본 네 가지 개념을 한 번에 정리하면 다음과 같다.

개념핵심 아이디어등장 배경
유니프로그래밍프로세스 1개만 실행초기 컴퓨터 방식
멀티프로그래밍I/O 대기 중 다른 프로세스 실행CPU 이용률 향상
멀티태스킹타임 슬라이스로 번갈아 실행응답성 향상, 사용자 경험 개선
멀티프로세싱여러 CPU로 실제 병렬 실행처리 속도 향상


전체 흐름 정리


TEXT
유니프로그래밍 → 문제: I/O 대기 중 CPU 낭비 멀티프로그래밍 → 해결: I/O 대기 시 다른 프로세스 실행 → 한계: CPU 독점 프로세스가 있으면 다른 프로세스는 대기 멀티태스킹 → 해결: 타임 슬라이스로 강제 전환, 응답성 개선 → 한계: CPU 1개로는 실제 병렬 처리 불가 멀티프로세싱 → 해결: 여러 CPU(코어)로 진짜 동시 실행

CPU 활용 방식의 역사는 결국 "어떻게 하면 CPU를 더 효율적으로, 더 공평하게 쓸 수 있을까" 에 대한 고민의 연속이었다.



다음 글에서는 운영체제가 각 프로세스를 추적하고 관리하는 자료구조인 PCB를 살펴볼 예정이다.

댓글

댓글을 불러오는 중...