현대 운영체제(Windows, Linux, macOS 등) 는
하나의 프로세스가 여러 개의 스레드(thread) 를 가질 수 있도록 지원함.
현대 시스템은 멀티코어(Multicore) → 여러 CPU 코어를 동시에 활용 가능
스레드를 사용하면 프로그램의 병렬 실행(parallelism) 가능
즉, 하나의 프로그램이 여러 일을 동시에 처리(concurrent execution) 할 수 있음
| 구분 | 프로세스 (Process) | 스레드 (Thread) |
|---|---|---|
| 정의 | 실행 중인 프로그램의 독립된 실행 단위 | 프로세스 내의 실행 흐름 단위 |
| 메모리 | 독립된 주소 공간 (Code, Data, Stack 모두 분리) | Code, Data, Heap은 공유 / Stack만 개별 |
| 생성 비용 | 크다 (자원 복제 필요) | 작다 (프로세스 내 공유 구조 활용) |
| 통신 방식 | 프로세스 간 통신(IPC) 필요 | 공유 메모리로 직접 접근 가능 |
| 안정성 | 하나의 프로세스가 죽어도 다른 프로세스는 영향 없음 | 하나의 스레드 오류가 전체 프로세스에 영향 |
즉, 한 프로세스 내 여러 스레드는 공유 자원(code, data, files) 을 함께 사용하지만,
각자의 PC, 레지스터, 스택은 따로 갖는다.

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