반응형
컴퓨터공학과 운영체제(OS) 수업이나 전공 면접, 정보처리기사 시험에서 "운영체제의 핵심 개념"을 물어볼 때 무조건 나오는 질문이 있습니다. 바로 프로세스(Process)와 스레드(Thread)의 개념과 차이점입니다.
"둘 다 프로그램 실행 단위인 것 같은데, 정확히 무엇이 다를까?"
궁금하셨던 분들을 위해 메모리 구조 차이부터 멀티프로세스/멀티스레드의 장단점, 시험 핵심 포인트까지 한눈에 보기 쉽게 정리해 드립니다!
1. 프로세스(Process) 란?
프로세스는 '메모리에 올려져 현재 실행 중인 프로그램(Program in Execution)'을 의미합니다.
- 특징:
- 운영체제로부터 독립된 메모리 영역(Code, Data, Heap, Stack)을 할당받습니다.
- 다른 프로세스의 메모리 영역에 직접 접근할 수 없으며, 접근하려면 IPC(Inter-Process Communication, 예: 파이프, 소켓, 공유 메모리 등)라는 별도의 통신 메커니즘을 사용해야 합니다.
- 한 프로세스가 오류로 강제 종료되어도 다른 프로세스에는 영향을 주지 않습니다.
💡 프로그램 vs 프로세스
- 프로그램: 하드디스크(SSD)에 저장되어 있는 실행되지 않은 파일 상태 (정적)
- 프로세스: 프로그램이 메모리에 적재되어 CPU를 할당받고 실행 중인 상태 (동적)
2. 스레드(Thread) 란?
스레드는 '프로세스 내에서 실제로 작업을 수행하는 작은 실행 흐름의 단위'입니다.
- 특징:
- 프로세스 하나가 생성되면 최소 하나 이상의 스레드(메인 스레드)를 가집니다.
- 스레드들은 자신이 속한 프로세스의 Code, Data, Heap 메모리 영역을 서로 공유합니다.
- 단, 각 스레드는 자신만의 독자적인 Stack 영역과 Register를 할당받아 별도의 함수 호출과 실행 흐름을 유지합니다.
- 메모리를 공유하기 때문에 스레드 간 통신이 매우 빠르지만, 한 스레드가 오류를 일으키면 프로세스 전체가 종료될 수 있는 위험이 있습니다.
3. 핵심 차이: 메모리 공유 구조 (시험 서술형 1순위)
시험이나 면접에서 가장 중요하게 다루는 부분이 바로 "메모리 공유 방식"입니다.
- 프로세스 메모리 구조:
- Code, Data, Heap, Stack 영역 전체가 프로세스마다 독립적으로 존재합니다.
- 스레드 메모리 구조:
- Code, Data, Heap 영역은 같은 프로세스 내의 스레드끼리 공유합니다.
- Stack 영역 및 Register Set만 스레드마다 독립적으로 할당됩니다.
💡 스레드마다 Stack을 독립적으로 가지는 이유는?
Stack은 함수 호출 시 매개변수, 지역변수, 리턴 주소를 저장하는 공간입니다. 각 스레드가 독립적인 함수 호출과 실행 흐름을 가지기 위해 Stack 영역은 개별적으로 유지되어야 합니다.
4. 멀티 프로세스 vs 멀티 스레드 비교
| 구분 | 멀티 프로세스 (Multi-Process) | 멀티 스레드 (Multi-Thread) |
| 자원 공유 | 자원을 공유하지 않음 (독립적 메모리) | Code, Data, Heap 영역을 모든 스레드가 공유 |
| 통신 비용 (IPC) | 프로세스 간 통신(IPC) 필요로 비용이 큼 | 공유 메모리를 통해 매우 빠르고 간단함 |
| 컨텍스트 스위칭 | 캐시 메모리 초기화 등으로 오버헤드가 큼 | 프로세스보다 오버헤드가 훨씬 적고 빠름 |
| 안전성 (신뢰성) | 한 프로세스가 죽어도 다른 프로세스에 영향 없음 | 한 스레드에 문제 발생 시 전체 프로세스 영향 |
| 대표적인 예 | 구글 크롬의 탭(Tab) 관리 | 웹 브라우저의 다운로드+문서 편집 동시 진행 |
5. 한눈에 비교하는 차이점 (시험 핵심 요약)
시험 직전 이것만 정리하면 끝나는 요약표입니다!
| 구분 | 프로세스 (Process) | 스레드 (Thread) |
| 정의 | 실행 중인 프로그램 (운영체제의 작업 단위) | 프로세스 내에서 실행되는 흐름의 단위 |
| 메모리 할당 | 독립된 메모리 공간 (Code/Data/Heap/Stack) | Stack만 독립적, 나머지는 프로세스 자원 공유 |
| 생성/종료 비용 | 무겁고 상대적으로 느림 | 가볍고 상대적으로 빠름 |
| 데이터 공유 | IPC 통신 메커니즘 이용 | 전역 변수/힙 영역을 통한 직접 공유 |
6. 시험 단골 출제 유형 체크
- Q. 스레드가 프로세스 내에서 독립적으로 가지는 메모리 영역은 무엇인가?
- 👉 Stack 영역 (및 PC Register) 입니다.
- Q. 멀티 스레드 환경에서 한 스레드가 예외를 일으켜 비정상 종료되었을 때의 영향은?
- 👉 해당 스레드가 속한 프로세스 전체가 영향을 받아 강제 종료될 수 있습니다.
- Q. 컨텍스트 스위칭(Context Switching) 오버헤드가 멀티 스레드에서 더 작은 이유는?
- 👉 스레드 간에는 메모리 주소 공간(Code, Data, Heap)을 공유하므로, 캐시 메모리를 비우지 않고 레지스터/스택 정보만 교체하면 되기 때문입니다.
반응형
'전공과목 > 운영체제' 카테고리의 다른 글
| [운영체제] 가상 메모리(Virtual Memory) 개념과 페이지 교체 알고리즘(FIFO, LRU, LFU) 완전 정리 (0) | 2026.08.16 |
|---|---|
| [운영체제] 데드락(Deadlock, 교착상태) 개념, 발생 조건 4가지 및 해결 방법 완전 정리 (0) | 2026.08.15 |
| [운영체제] 윈도우에서 unistd.h fork() 함수 사용하기 (0) | 2024.04.30 |
| [운영체제] 프로세스란? (1) | 2024.04.30 |
| [운영체제] 폰 노이만 구조란? (0) | 2024.04.30 |