CS Fundamentals
프로세스와 스레드의 차이에 대해서 설명해주세요
메모리 구조, 컨텍스트 스위칭 비용, IPC vs 스레드 통신, Race Condition까지. 운영체제 면접 단골 질문을 인터랙티브 시각화로 완벽히 준비합니다.
2026년 3월 10일 · 약 12분 읽기
Q. "프로세스와 스레드의 차이를 설명하고, 각각 어떤 상황에서 사용하는지 말씀해주세요."
예상 꼬리질문
답변 가이드
"프로세스는 독립된 메모리 공간(Code·Data·Heap·Stack 모두 독립)을 가진 실행 단위이고, 스레드는 프로세스 내에서 Code·Data·Heap을 공유하고 Stack만 독립으로 소유하는 경량 실행 단위입니다."
"컨텍스트 스위칭 비용은 프로세스가 스레드보다 5~10배 큽니다. 프로세스 전환 시 TLB 플러시와 페이지 테이블 교체가 필요하지만, 스레드는 같은 주소 공간을 쓰기 때문에 이 과정이 불필요합니다."
"격리와 안정성이 중요하면 멀티프로세싱, 빠른 통신과 메모리 효율이 중요하면 멀티스레딩을 선택합니다. 단, 스레드는 공유 메모리로 인한 Race Condition에 주의해야 합니다."
운영체제 면접 단골 질문 "프로세스와 스레드의 차이가 뭐냐"에 막힘없이 답할 수 있나요?
단순히 "스레드가 더 가볍다"는 답은 절반짜리입니다. 메모리 구조부터 통신 방식, 동시성 문제까지 — 인터랙티브 시각화로 직접 체험하며 완전히 이해해 봅시다.
1. 메모리 구조 — 무엇을 공유하고 무엇을 독립적으로 갖는가
꼬리질문: "프로세스와 스레드의 메모리 구조 차이를 설명해주세요"
프로세스와 스레드의 가장 근본적인 차이는 메모리 공유 방식입니다. 프로세스는 Code·Data·Heap·Stack 4개 영역 모두 독립적으로 소유합니다.
반면 스레드는 같은 프로세스 내에서 Code·Data·Heap을 공유하고, Stack만 각자 독립적으로 갖습니다.
탭을 전환하며 두 구조의 차이를 직접 확인해 보세요.
각 프로세스는 완전히 독립된 주소 공간을 가집니다
2. 컨텍스트 스위칭 — 프로세스 전환이 왜 더 비싼가
꼬리질문: "컨텍스트 스위칭 비용이 프로세스와 스레드에서 왜 다른가요?"
OS는 여러 프로세스·스레드를 번갈아 실행하며 동시 실행의 환상을 만듭니다. 이 전환을 컨텍스트 스위칭이라 하는데, 프로세스는 4단계(상태 저장 → TLB 플러시 → 페이지 테이블 로드 → 상태 복원)가 필요합니다.
스레드는 같은 주소 공간을 쓰기 때문에 TLB 플러시 없이 2단계만으로 끝납니다. 이것이 스레드 컨텍스트 스위칭이 5~10배 저렴한 핵심 이유입니다.
단계별 차이와 상대적 비용을 시뮬레이션으로 체감해 보세요.
상대적 비용 비교
3. 통신 — 커널을 거치느냐, 메모리를 직접 읽느냐
꼬리질문: "프로세스 간 통신(IPC)과 스레드 간 통신의 차이는 무엇인가요?"
프로세스는 독립된 주소 공간 때문에 IPC(Inter-Process Communication) 없이는 데이터를 주고받을 수 없습니다. Pipe·Message Queue·Shared Memory·Socket 등 방식마다 속도와 복잡도가 다릅니다.
반면 스레드는 공유 메모리에 직접 접근하므로 IPC 오버헤드가 없습니다. 단, 동기화가 필수입니다.
IPC 방식을 선택하며 데이터 흐름 경로를 비교해 보세요.
단방향 바이트 스트림. 부모-자식 프로세스 간 통신에 주로 사용.
4. Race Condition — 공유 메모리의 함정
꼬리질문: "Race Condition이 무엇이고 어떻게 해결하나요?"
공유 메모리는 속도를 얻는 대신 Race Condition 위험을 감수합니다. 두 스레드가 동시에 counter를 읽어 각자 +1 하면 결과가 2가 아닌 1이 될 수 있습니다.
Mutex로 임계 구역을 보호하면 한 스레드씩 순서대로 실행되어 정확한 결과를 보장합니다.
"동기화 없음"과 "Mutex 사용"을 토글하며 결과 차이를 직접 확인해 보세요.
5. 언제 무엇을 쓸까? — 실무 선택 가이드
꼬리질문: "멀티프로세싱과 멀티스레딩 중 어떤 상황에서 무엇을 선택하나요?"
격리와 안정성이 중요하면 멀티프로세싱(Chrome 탭, Nginx worker, Python GIL 우회)을, 빠른 통신과 메모리 효율이 중요하면 멀티스레딩(Spring Boot, GUI, DB Connection Pool)을 선택합니다.
정답은 없으며 요구사항에 따라 판단해야 합니다.
카드를 클릭하며 실제 사례별 선택 이유를 확인해 보세요.
면접 체크리스트
이 항목들을 자신 있게 설명할 수 있다면 프로세스·스레드 질문은 준비 완료입니다.
- - 프로세스: 독립 메모리(Code·Data·Heap·Stack 모두), 강한 격리, 높은 생성·통신 비용
- - 스레드: Code·Data·Heap 공유, Stack만 독립, 낮은 비용, 동기화 복잡성
- - 컨텍스트 스위칭: TLB 플러시 유무가 비용 차이의 핵심 (프로세스 5~10배 더 비쌈)
- - 통신: IPC(커널 경유, 느림) vs 공유 메모리(직접 접근, 동기화 필요)
- - Race Condition: 공유 메모리의 함정 — Mutex·Semaphore로 임계 구역 보호
참고 자료
- Naver D2 — Java 쓰레드와 동시성 프로그래밍 — Java 멀티스레딩의 실무적 개념을 잘 정리한 한국어 글
- OSTEP — Operating Systems: Three Easy Pieces — 무료 OS 교과서. 프로세스·스레드·동시성 챕터가 매우 친절하게 설명
- Go Blog — Goroutines and Concurrency — 고루틴으로 M:N 스레딩을 추상화한 Go의 접근 방식
의견을 들려주세요
서비스 개선에 큰 도움이 됩니다. 익명으로 자유롭게 남겨주세요.