← 전체 강의 목록

01강 · OPERATING SYSTEM BASICS

프로세스와 스레드의 차이

집과 그 안에 사는 사람의 비유로 메모리 공유, 문맥 교환, 동기화를 한 번에 연결해 봅니다.

프로세스는 공간, 스레드는 흐름

프로세스는 자원을 담은 독립된 실행 공간이고, 스레드는 그 안에서 실제로 일을 진행하는 실행 흐름입니다.

VISUAL 01 · MEMORY

메모리를 나누는 방식

버튼을 눌러 “프로세스끼리 분리”와 “스레드끼리 공유”를 비교해 보세요.

프로세스 A주소 공간 A
Code독립
Data독립
Heap독립
Stack독립
프로세스 B주소 공간 B
Code독립
Data독립
Heap독립
Stack독립

두 집의 주소 공간은 나뉘어 있습니다. 데이터를 주고받으려면 IPC가 필요합니다.

Stack이 따로 있다는 것은 각 스레드가 함수 호출과 지역 변수를 기억하며 독립적인 실행 흐름을 가질 수 있다는 뜻입니다.

VISUAL 02 · CONTEXT SWITCH

문맥 교환은 이사와 교대의 차이

CPU가 작업 A를 멈추고 작업 B를 실행할 때 어떤 상태를 바꾸는지 확인합니다.

프로세스 전환: 다른 집으로 이사 주소 공간과 실행 상태 관련 정보를 함께 바꾸므로 준비할 것이 많습니다.
작업 A → B
비용이 큰 편

스레드 전환도 공짜는 아니지만, 같은 주소 공간을 유지한 채 실행 흐름 중심으로 바꾸는 경우가 많아 프로세스 전환보다 가벼운 편입니다.

COMPARE

나란히 비교하기

기준프로세스스레드
비유서로 다른 집한 집에 사는 사람
Code · Data · Heap프로세스마다 독립같은 프로세스 안에서 공유
Stack프로세스마다 독립스레드마다 따로 가짐
통신IPC가 필요함공유 메모리 접근이 가능함
오류 영향주소 공간이 분리되어 번짐이 적은 편공유 메모리 오류가 전체에 영향을 줄 수 있음
문맥 교환비용이 큰 편비용이 작은 편

FRONTEND CONNECTION

Chrome 탭은 프로세스일까, 스레드일까?

정답은 “탭 하나를 둘 중 하나로 단정할 수 없다”입니다. Chrome은 여러 프로세스가 협력하고, 각 프로세스 안에서 여러 스레드가 움직이는 구조를 사용합니다.

Browser창, 탭, 사용자 입력을 관리하는 본체
Renderer페이지 HTML, CSS, JavaScript를 화면으로 만듦
GPU그래픽과 화면 합성을 담당
Utility네트워크나 파일 같은 기능을 분리해 처리

하나의 탭 화면을 그리는 렌더러 프로세스 안에도 네트워크 대기, 렌더링, 작업 처리 등을 맡는 여러 스레드가 있을 수 있습니다.

VISUAL 03 · SYNCHRONIZATION

공유에는 잠금 규칙이 필요하다

두 스레드가 서로 다른 열쇠를 쥔 채 상대 열쇠를 기다리면 데드락이 됩니다.

스레드 1아직 잠금을 잡지 않음
스레드 2아직 잠금을 잡지 않음

잠금을 잡는 순서를 정하면 서로 기다리는 일을 줄일 수 있습니다.

CHECK YOUR UNDERSTANDING

이제 내 말로 설명해 보기

  1. 같은 프로세스의 두 스레드가 공유하는 메모리 영역은 무엇인가요?
  2. Stack이 스레드마다 따로 있다는 사실은 실행 흐름과 어떤 관계가 있나요?
  3. 프로세스끼리 데이터를 공유할 때 IPC가 필요한 이유는 무엇인가요?
  4. 두 스레드가 서로 상대의 잠금을 기다리는 상태를 무엇이라고 하나요?
  5. Chrome 탭을 곧바로 프로세스 하나라고 부르면 안 되는 이유는 무엇인가요?
정답과 해설 보기

Code, Data, Heap은 공유하고 Stack은 각자 가집니다. Stack이 따로 있으므로 각 스레드는 자기 함수 호출과 지역 변수를 기억하며 독립적인 실행 흐름을 가질 수 있습니다.

프로세스는 주소 공간이 분리되어 있어 서로의 데이터를 바로 읽을 수 없으므로 IPC가 필요합니다. 서로 잠금을 기다리는 상태는 데드락이며, 잠금 순서를 통일하는 방법으로 예방할 수 있습니다.

Chrome은 여러 프로세스와 그 안의 여러 스레드가 함께 동작하는 멀티프로세스 구조이므로 탭과 프로세스를 일대일로 볼 수 없습니다.

NEXT REVIEW

답변을 보내 주세요

위 질문에 자신의 말로 답하면 제가 채점하고, 헷갈린 부분을 다시 설명해 드립니다. 특히 “프로세스와 스레드의 메모리 공유 차이”와 “데드락을 피하는 방법”을 먼저 답해 보세요.