운영체제에서 프로세스(Process) 와 스레드(Thread) 는 프로그램 실행의 핵심 단위입니다.
이번 글에서는 두 개념의 차이를 직관적으로 설명하고, 특히 멀티프로세스(Multi-Process) 와 멀티스레드(Multi-Thread) 의 차이까지 이미지와 함께 정리해보겠습니다.
1. 멀티프로세스와 멀티스레드란
1️⃣ 멀티프로세스(Multi-Process)
하나의 프로그램을 여러 개의 독립된 프로세스로 실행하는 방식입니다.
2️⃣ 멀티스레드(Multi-Thread)
하나의 프로세스 내부에서 여러 개의 스레드가 동시에 코드를 실행하는 방식입니다.
두 방식 모두 병렬 혹은 동시 실행을 위해 사용되지만, 자원을 공유하는 방식에 따라 구조적 차이가 있습니다.
2. 멀티프로세스 — 여러 프로세스를 동시에 실행
멀티프로세스는 동시에 여러 프로세스가 실행되는 형태입니다.
✔ 1️⃣ 웹 브라우저 탭
- 크롬에서 탭을 하나 더 열면 → 프로세스도 하나 더 생성
- 작업 관리자에서 보면 탭 수만큼 프로세스가 존재
✔ 2️⃣ 같은 프로그램을 여러 번 실행
예를 들어, hi.txt 파일을 읽고 출력하는 프로그램을
3개의 프로세스로 실행하면…
- 메모리에 프로그램이 3개 적재
- 동일 파일을 각각 읽고 화면에 출력
- 서로 독립적으로 실행됨
✔ 3️⃣ 특징
- 프로세스는 서로 메모리, 변수, 파일 핸들 등 자원을 공유하지 않는다
- 그래서 하나의 프로세스가 죽어도 다른 프로세스에는 영향 없음
- 하지만 메모리를 많이 소비함(오버헤드 큼)
3. 멀티스레드 — 한 프로세스 안에서 여러 스레드 실행

멀티스레드는 한 프로세스 내부에서 여러 흐름(thread) 이 동시에 실행되는 구조입니다.
1️⃣스레드는 무엇을 가지고 있을까?
각 스레드는 다음과 같은 실행 정보를 고유하게 가집니다.
- 스레드 ID
- 프로그램 카운터(다음 실행 명령의 주소)
- 레지스터 값
- 스택(Stack)
2️⃣ 하지만 아래의 자원들은 프로세스 전체가 공유함
- 코드 영역
- 데이터 영역
- 힙 메모리
- 파일 디스크립터 등
즉, 스레드는 실행 흐름만 분리되어 있을 뿐
같은 집(프로세스)에 살고 있는 여러 명의 작업자라고 보면 됩니다.
4. 멀티프로세스 vs 멀티스레드 — 가장 큰 차이: 자원 공유 여부

1️⃣ 멀티프로세스는?
- 서로 자원을 공유하지 않음
- 완전히 독립적으로 실행
- 한 프로세스의 문제 → 다른 프로세스에게 영향 없음
- 다만 cost가 큼 (메모리, 문맥교환)
2️⃣ 멀티스레드는?
- 같은 프로세스의 자원을 공유
- 협력, 통신이 매우 쉬움 (공유 변수 바로 사용 가능)
- 하지만 한 스레드 오류 → 프로세스 전체가 죽을 수 있음
5. 어떤 상황에서 무엇을 쓰면 좋을까?
1️⃣ 멀티프로세스를 사용하면 좋은 경우
- 안정성이 중요할 때 (한 작업의 오류가 전체에 영향 주면 안 될 때)
- 보안 분리가 필요한 경우
- CPU 활용을 극대화하고 싶을 때 (프로세스는 독립적이라 OS가 병렬 처리 최적화 가능)
2️⃣ 멀티스레드가 좋은 경우
- 데이터 공유가 잦고 빠른 협력이 필요한 경우
- 메모리 효율이 중요할 때
- 웹 서버처럼 요청 처리 속도가 중요한 경우
정리하면
| 구분 | 멀티프로세스 | 멀티스레드 |
| 메모리 공유 | 없음 | 있음 |
| 안정성 | 높음(독립적) | 낮음(전체 영향 가능) |
| 자원 소모 | 많음 | 적음 |
| 통신 난이도 | 높음 (IPC 필요) | 낮음 (공유 변수 사용) |
| 사용 예시 | 웹 브라우저 탭, 서버 다중 프로세스 | 게임 엔진, 웹서버 워커, 백드라운드 작업 |
프로세스와 스레드는 운영체제를 공부할 때 꼭 이해해야 하는 핵심 개념입니다.
특히, 멀티프로세스(MP)와 멀티스레드(MT)의 차이는 자원을 공유하느냐, 독립적으로 실행하느냐의 차이이며
이를 잘 이해하면 시스템 구조를 설계할 때 더 나은 선택을 할 수 있습니다.
'컴퓨터 과학' 카테고리의 다른 글
| [운영체제] 동기화와 교착 상태 - 임계구역 (0) | 2025.11.29 |
|---|---|
| [운영체제] 프로세스와 스레드 - 프로세스 간 통신 (0) | 2025.11.27 |
| [운영체제] 프로세스와 스레드 - 프로세스의 상태 (0) | 2025.11.25 |
| [운영체제] 프로세스와 스레드 - 문맥교환 (0) | 2025.11.25 |
| [운영체제] 프로세스와 스레드 - 커널영역 (0) | 2025.11.25 |