주소 공간을 독립으로 갖는지, 그리고 무엇을 공유하는지가 다릅니다. 프로세스는 자기 주소 공간과 자원을 따로 갖고, 스레드는 그것을 공유하면서 실행 흐름(스택과 레지스터)만 따로 갖습니다.
프로세스 vs 스레드
핵심 비교
| 구분 | 프로세스 | 스레드 |
|---|
| 메모리 | 독립 공간 | 코드/데이터/힙 공유 |
| 생성 비용 | 높음 (fork) | 낮음 |
| 통신 | IPC 필요 (파이프, 소켓) | 공유 메모리 직접 접근 |
| 안정성 | 한 프로세스 죽어도 OK | 한 스레드 죽으면 전체 영향 |
| 컨텍스트 스위칭 | 느림 (메모리 맵 교체) | 빠름 |
메모리 구조
프로세스 A 와 B 는 각자 독립된 공간을 가집니다.
| 영역 | 프로세스 사이 | 같은 프로세스의 스레드 사이 |
|---|
| 코드 | 독립 | 공유 |
| 데이터 | 독립 | 공유 |
| 힙 | 독립 | 공유 |
| 스택 | 독립 | 스레드마다 따로 가진다 |
무엇이 실제로 갈리나
표로 외우면 면접에서 막힙니다. 하나가 죽었을 때와 값을 나눌 때 무슨 일이 생기는지가
전부입니다.
| 질문 | 프로세스 | 스레드 |
|---|
| 하나가 비정상 종료하면 | 나머지는 살아 있다 | 대개 전체가 죽는다 |
| 값을 나누려면 | 통로를 만들어야 한다 | 그냥 보인다 |
| 값을 나눌 때 위험 | 낮다 | 동시에 고치면 깨진다 |
| 만드는 비용 | 크다 | 작다 |
둘째와 셋째가 한 몸입니다. 그냥 보이는 것이 편해서 쓰는데, 그 편함이 곧 동시에 고쳐서
깨지는 원인입니다. 편한 만큼 잠금이 필요해집니다.
문맥을 바꾸는 비용
번갈아 돌리려면 지금 상태를 넣어 두고 다른 것을 꺼내야 합니다.
스레드끼리 바꾸는 것이 프로세스끼리 바꾸는 것보다 싸다
주소 공간을 안 바꿔도 되기 때문이다
그래도 공짜는 아니다. 너무 많이 만들면 바꾸는 데 시간을 쓴다
셋째가 스레드를 무한히 늘리지 않는 이유입니다. 개수를 정해 두고 재사용합니다.
실무 선택 기준
- 멀티 프로세스: 안정성 중요 (Chrome 탭, Nginx worker)
- 멀티 스레드: 성능 중요 (Java 서버, 게임 서버)
- 이벤트 루프: I/O 바운드 (Node.js, Redis)
Q.프로세스와 스레드의 차이를 설명해주세요
독립된 주소 공간을 갖는지가 다릅니다.
| 항목 | 프로세스 | 스레드 |
|---|
| 주소 공간 | 독립 | 공유 |
| 생성 비용 | 크다 | 작다 |
| 통신 | 별도 수단이 필요하다 | 메모리를 그대로 공유 |
| 한쪽이 죽으면 | 다른 프로세스는 무사 | 프로세스 전체가 죽는다 |
| 문맥 교환 | 주소 공간까지 바꾼다. 비싸다 | 레지스터와 스택만. 싸다 |
주소 공간 분리가 모든 차이의 뿌리입니다. 분리돼 있으니 안전하고 무겁고, 공유하니 빠르고 위험합니다.
흔한 실수: 스레드를 "가벼운 프로세스"로만 답하는 것. 무게 차이는 결과이고 원인은 무엇을 공유하는가입니다. 그리고 공유가 주는 위험(경쟁 조건, 한 스레드의 오류가 전체를 죽임)을 함께 말하는 것이 좋습니다.
Q.멀티 프로세스 vs 멀티 스레드, 언제 뭘 쓰나요?
| 상황 | 고를 것 | 이유 |
|---|
| 안정성이 최우선 | 멀티 프로세스 | 하나가 죽어도 나머지가 산다 |
| 데이터 공유가 잦다 | 멀티 스레드 | 메모리를 그대로 쓴다 |
| 생성과 소멸이 빈번 | 멀티 스레드 | 생성 비용이 훨씬 싸다 |
| 격리가 필요하다 | 멀티 프로세스 | 플러그인, 브라우저 탭 |
| 언어에 전역 잠금이 있다 | 멀티 프로세스 | CPU 병렬이 스레드로 안 나온다 |
브라우저가 탭마다 프로세스를 쓰는 이유가 첫 번째와 네 번째입니다. 한 탭이 죽어도 다른 탭이 살고, 악성 페이지가 다른 탭의 메모리를 볼 수 없습니다.
실무에서는 섞어 씁니다. 프로세스를 코어 수만큼 띄우고 각 프로세스 안에서 스레드나 이벤트 루프를 쓰는 구성이 흔합니다.
흔한 실수: 스레드가 항상 빠르다고 답하는 것. 공유 자원 경합이 심하면 잠금 대기로 오히려 느려지고, 프로세스로 나눠 각자 처리하는 편이 빠른 경우가 있습니다.
먼저 스스로 답해보고 아래 답변과 견줘보세요. 막히는 부분은 문제로 확인할 수 있어요.
읽었으면 문제로 확인해보세요
운영체제 문제를 풀면 틀린 문제가 자동으로 노트에 쌓입니다. 가입 없이 5문제를 먼저 풀어볼 수도 있어요.