CS/컴퓨터공학 프로세스 vs 스레드 차이 총정리

✨ 개요

프로그램이 실행되면 프로세스(Process)가 만들어지고, 그 안에서 실제 일을 나눠 하는 흐름 단위가 스레드(Thread)입니다.
두 개념의 경계를 정확히 잡아두면 동시성 문제(데드락, 경쟁 조건)부터 성능 병목까지 훨씬 명확히 보입니다.


1. 요약

구분 프로세스 (Process) 스레드 (Thread)
정의 실행 중인 프로그램의 독립 실행 단위 프로세스 내부의 경량 실행 흐름
주소공간 분리됨(코드/데이터/힙/스택 각자 가짐) 공유(코드/데이터/힙 공유, 스택은 개별)
격리/안전 강함(다른 프로세스 메모리 직접 접근 불가) 약함(같은 프로세스 내 공유 메모리로 인한 경쟁 위험)
생성/스위칭 비용 큼(페이지 테이블/커널 구조체 교체) 비용 작음(레지스터/스택 포인터 위주)
통신 IPC 필요(파이프, 소켓, 공유메모리 등) 변수/컬렉션 등 메모리 공유 + 락/원자성
대표 사용 서로 다른 앱/서비스 한 작업의 병렬화, 비동기 I/O, UI+백그라운드 분업

2 메모리 구조와 공유 범위

├─ Code / Data / Heap ← 동일 프로세스의 모든 스레드가 공유
├─ Thread #1 ─ Stack1 ← 각 스레드는 자신의 스택(호출 프레임/지역변수)
├─ Thread #2 ─ Stack2
└─ Thread #n ─ StackN

결론: 스레드는 협업에 유리하지만 락·원자연산·메모리 가시성을 정확히 다뤄야 합니다.


3 컨텍스트 스위칭과 비용

3.1 프로세스 컨텍스트 스위치

3.2 스레드 컨텍스트 스위치(동일 프로세스 내)

실무 팁: I/O 대기 많은 워크로드는 스레드/비동기 I/O로 이득. 순수 CPU 바운드는 프로세스 분리(다중 코어 병렬)나 쓰레드+적절한 스케줄링/핀ning 등을 함께 고려.


4. PCB와 TCB (운영체제 관점 핵심)

운영체제는 스케줄러가 PCB/TCB를 보고 누구를 언제 CPU에 태울지 결정합니다.


5. 동시성과 동기화의 필수 포인트


6. 언제 무엇을 쓰나?


7. 실무 체크리스트



Related Posts