2026년 5월 7일
CS / Theory / OS[OS] 멀티프로그래밍과 멀티프로세싱
앞선 글에서 프로세스가 무엇인지 살펴봤다. 그렇다면 운영체제는 여러 프로세스를 어떻게 동시에 처리할까. 이 글에서는 CPU 활용 방식의 발전 흐름과 함께, 멀티프로그래밍과 멀티프로세싱의 차이를 살펴본다.
목차
[1] 유니프로그래밍
[2] 멀티프로그래밍
[3] 멀티태스킹
[4] 멀티프로세서와 멀티프로세싱
[5] 개념 비교 정리
전체 흐름 정리
[1] 유니프로그래밍
유니프로그래밍(Uniprogramming)은 메모리에 프로세스를 하나만 올려 실행하는 방식이다. 초기 컴퓨터에서 사용하던 방법이다.
[CPU] ──── [프로세스 A 실행]
↓ I/O 요청 발생
[CPU] ──── [대기 중... 아무것도 안 함]
↓ I/O 완료
[CPU] ──── [프로세스 A 재개]문제는 I/O 대기 시간이다. 프로세스가 파일을 읽거나 네트워크 응답을 기다리는 동안 CPU는 아무것도 하지 않고 대기한다. 프로그램 실행 시간 중 상당 부분이 I/O 대기라는 점을 고려하면, CPU 자원이 심각하게 낭비된다.
[2] 멀티프로그래밍
멀티프로그래밍(Multiprogramming)은 메모리에 여러 프로세스를 동시에 올려두는 방식이다. 한 프로세스가 I/O를 기다리는 동안 CPU가 다른 프로세스를 실행해 유휴 시간을 줄인다.
[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 발생 여부와 관계없이, 일정 시간이 지나면 강제로 다음 프로세스로 전환한다.
시간 → [A 실행] [B 실행] [C 실행] [A 실행] [B 실행] ...
10ms 10ms 10ms 10ms 10ms전환 속도가 매우 빠르기 때문에 사용자 입장에서는 여러 작업이 동시에 실행되는 것처럼 느껴진다. 실제로는 CPU가 프로세스들 사이를 빠르게 오가고 있는 것이다.
멀티프로그래밍 vs 멀티태스킹
두 개념은 비슷해 보이지만 목적이 다르다.
| 구분 | 멀티프로그래밍 | 멀티태스킹 |
|---|---|---|
| 목적 | CPU 이용률 극대화 | 응답 시간 단축, 사용자 경험 향상 |
| 전환 시점 | I/O 발생 시 | 일정 시간마다 (타임 슬라이스) |
| 초점 | CPU 효율 | 동시성 체감 |
멀티태스킹은 앞서 살펴본 시분할 시스템의 개념과 직접 연결된다. 프로세스 전환이 일어날 때마다 컨텍스트 스위칭이 수행된다.
[4] 멀티프로세서와 멀티프로세싱
지금까지는 CPU가 하나인 환경을 가정했다. 멀티프로세서는 한 단계 더 나아간다.
멀티프로세서 (Multiprocessor)
컴퓨터에 CPU가 여러 개 있는 하드웨어 구조다. 오늘날 대부분의 컴퓨터는 하나의 CPU 안에 여러 개의 코어(Core) 를 탑재한 멀티코어 구조를 사용한다.
[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로 실제 병렬 실행 | 처리 속도 향상 |
전체 흐름 정리
유니프로그래밍
→ 문제: I/O 대기 중 CPU 낭비
↓
멀티프로그래밍
→ 해결: I/O 대기 시 다른 프로세스 실행
→ 한계: CPU 독점 프로세스가 있으면 다른 프로세스는 대기
↓
멀티태스킹
→ 해결: 타임 슬라이스로 강제 전환, 응답성 개선
→ 한계: CPU 1개로는 실제 병렬 처리 불가
↓
멀티프로세싱
→ 해결: 여러 CPU(코어)로 진짜 동시 실행CPU 활용 방식의 역사는 결국 "어떻게 하면 CPU를 더 효율적으로, 더 공평하게 쓸 수 있을까" 에 대한 고민의 연속이었다.
다음 글에서는 운영체제가 각 프로세스를 추적하고 관리하는 자료구조인 PCB를 살펴볼 예정이다.
댓글
댓글을 불러오는 중...