4.1 Overview - p.160

구분 프로세스 (Process) 스레드 (Thread)
정의 실행 중인 프로그램의 독립된 실행 단위 프로세스 내의 실행 흐름 단위
메모리 독립된 주소 공간 (Code, Data, Stack 모두 분리) Code, Data, Heap은 공유 / Stack만 개별
생성 비용 크다 (자원 복제 필요) 작다 (프로세스 내 공유 구조 활용)
통신 방식 프로세스 간 통신(IPC) 필요 공유 메모리로 직접 접근 가능
안정성 하나의 프로세스가 죽어도 다른 프로세스는 영향 없음 하나의 스레드 오류가 전체 프로세스에 영향

4.1.1 Motivation

프로세스와 스레드의 개념 비교

스레드의 정의

즉, 한 프로세스 내 여러 스레드는 공유 자원(code, data, files) 을 함께 사용하지만,

각자의 PC, 레지스터, 스택은 따로 갖는다.

image.png

구분 Single-Threaded Process Multithreaded Process
구조 하나의 실행 흐름만 존재 여러 실행 흐름(스레드) 존재
공유 자원 전체 프로세스가 독립적 코드, 데이터, 파일은 공유
개별 자원 레지스터, PC, 스택 각 스레드가 개별 보유
특징 순차적 수행 병렬적 수행 가능

예시: 웹 서버