Foundry
운영체제
기초
핵심

프로세스 vs 스레드

메모리 구조, 컨텍스트 스위칭, 통신 방식 비교

프로세스 vs 스레드

핵심 비교

구분프로세스스레드
메모리독립 공간코드/데이터/힙 공유
생성 비용높음 (fork)낮음
통신IPC 필요 (파이프, 소켓)공유 메모리 직접 접근
안정성한 프로세스 죽어도 OK한 스레드 죽으면 전체 영향
컨텍스트 스위칭느림 (메모리 맵 교체)빠름

메모리 구조

프로세스 A 와 B 는 각자 독립된 공간을 가집니다.

영역프로세스 사이같은 프로세스의 스레드 사이
코드독립공유
데이터독립공유
독립공유
스택독립스레드마다 따로 가진다

실무 선택 기준

  • 멀티 프로세스: 안정성 중요 (Chrome 탭, Nginx worker)
  • 멀티 스레드: 성능 중요 (Java 서버, 게임 서버)
  • 이벤트 루프: I/O 바운드 (Node.js, Redis)
면접에서 이렇게 나옵니다

Q.프로세스와 스레드의 차이를 설명해주세요

독립된 주소 공간을 갖는지가 다릅니다.

항목프로세스스레드
주소 공간독립공유
생성 비용크다작다
통신별도 수단이 필요하다메모리를 그대로 공유
한쪽이 죽으면다른 프로세스는 무사프로세스 전체가 죽는다
문맥 교환주소 공간까지 바꾼다. 비싸다레지스터와 스택만. 싸다

주소 공간 분리가 모든 차이의 뿌리입니다. 분리돼 있으니 안전하고 무겁고, 공유하니 빠르고 위험합니다.

흔한 실수: 스레드를 "가벼운 프로세스"로만 답하는 것. 무게 차이는 결과이고 원인은 무엇을 공유하는가입니다. 그리고 공유가 주는 위험(경쟁 조건, 한 스레드의 오류가 전체를 죽임)을 함께 말하는 것이 좋습니다.

Q.멀티 프로세스 vs 멀티 스레드, 언제 뭘 쓰나요?

상황고를 것이유
안정성이 최우선멀티 프로세스하나가 죽어도 나머지가 산다
데이터 공유가 잦다멀티 스레드메모리를 그대로 쓴다
생성과 소멸이 빈번멀티 스레드생성 비용이 훨씬 싸다
격리가 필요하다멀티 프로세스플러그인, 브라우저 탭
언어에 전역 잠금이 있다멀티 프로세스CPU 병렬이 스레드로 안 나온다

브라우저가 탭마다 프로세스를 쓰는 이유가 첫 번째와 네 번째입니다. 한 탭이 죽어도 다른 탭이 살고, 악성 페이지가 다른 탭의 메모리를 볼 수 없습니다.

실무에서는 섞어 씁니다. 프로세스를 코어 수만큼 띄우고 각 프로세스 안에서 스레드나 이벤트 루프를 쓰는 구성이 흔합니다.

흔한 실수: 스레드가 항상 빠르다고 답하는 것. 공유 자원 경합이 심하면 잠금 대기로 오히려 느려지고, 프로세스로 나눠 각자 처리하는 편이 빠른 경우가 있습니다.

먼저 스스로 답해보고 아래 답변과 견줘보세요. 막히는 부분은 문제로 확인할 수 있어요.

읽었으면 문제로 확인해보세요

운영체제 문제를 풀면 틀린 문제가 자동으로 노트에 쌓입니다. 가입 없이 5문제를 먼저 풀어볼 수도 있어요.