2026-02-08
프로세스와 스레드
프로세스(Process)
실행 중인 프로그램의 독립적인 단위
운영체제로부터 자원을 할당받은 작업의 단위

- 프로그램(.exe, .app)을 실행하면 → 프로세스 생성
- OS로부터 자원을 독립적으로 할당받음
⇒ 프로세스는 자원과 메모리를 독립적으로 소유한다.
자원 구조
- 코드(Code/Text)
- 데이터(Data)
- 힙(Heap)
- 스택(Stack)
- 독립된 메모리 공간
스레드(Thread)
프로세스 내부에서 실행되는 작업 흐름의 단위
프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위

- 하나의 프로세스는 하나 이상의 스레드를 갖는다.
- 스레드들은 자원을 공유
- 여러 작업을 동시에 처리 가능
- 같은 프로세스의 메모리 공유
스레드가 가지는 것
- 스택(Stack)
- 프로그램 카운터(PC)
- 레지스터
공유하는 것
- 코드 영역
- 힙
- 데이터 영역
프로세스 vs 스레드
프로세스는 안정성, 스레드는 성능에 유리하다.
| 구분 | 프로세스 | 스레드 |
|---|---|---|
| 메모리 | 독립 | 공유 |
| 안정성 | 높음 | 낮음 |
| 생성 비용 | 큼 | 작음 |
| 컨텍스트 스위칭 | 느림 | 빠름 |
| 통신 | IPC 필요 | 공유 메모리로 가능 |
- 스레드를 쓰는 이유
- 메모리 낭비 줄임
- 작업 병렬 처리
- 속도 향상
- 프로세스를 여러개 쓰는 이유
- 각 작업을 격리시켜 안정성 확보
- 한 프로세스가 장애 나도 전체 영향 줄어듬
멀티프로세스 / 멀티스레드
- 멀티프로세스
- 여러 프로세스를 동시에 실행
- 하나 죽어도 다른 프로세스 영향 없음
- 메모리 사용량 큼
- 예 ) 브라우저의 탭 구조
- 멀티스레드
- 하나의 프로세스 안에서 여러 스레드 실행
- 자원 공유 → 성능 좋음
- 동기화 문제 발생 가능
- 예) 웹 서버 요청 처리, 게임 루프
컨텍스트 스위칭(Context Switching)
CPU가 실행 중인 작업을 멈추고 다른 작업으로 전환하는 과정
발생 위치
- 프로세스 ↔ 프로세스
- 스레드 ↔ 스레드
비용
- 프로세스 전환 > 스레드 전환
- 컨텍스트 스위칭 비용은 자원 범위가 클수록 증가한다.
스레드의 문제점: 동기화
- 여러 스레드가 공유 자원에 동시에 접근
- 데이터 불일치 발생
- 멀티스레드는 성능 이점이 있지만 동기화 비용과 복잡도가 따른다.
해결
- Mutex
- Semaphore
- Lock
참고
⇒ 백엔드는 프로세스 / 스레드 구조를 직접 설계
⇒ 프론트엔드는 브라우저가 관리
요약
- 프로세스: 실행중인 프로그램
- 스레드: 프로세스 내부의 실행 흐름 단위
- 프로세스는 자원과 메모리를 분리해 안정성을 확보하고,
- 스레드는 자원을 공유해 성능을 높인다
참고자료
- https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4
- https://velog.io/@raejoonee/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4
- https://jaehyuuk.tistory.com/213