1. 프로세스(Process)
- 실행 중인 프로그램의 인스턴스
- 각각 독립적인 메모리 공간(Code, Data, Heap, Stack)을 가짐
- 하나의 프로세스는 여러 개의 쓰레드를 포함할 수 있음
- 프로세스 간의 통신은 상대적으로 어렵고 많은 비용이 듦
- 하나의 프로세스가 종료되면 그 안의 모든 쓰레드도 종료
2. 쓰레드(Thread)
- 프로세스 내에서 실행되는 작은 실행 단위
- 프로그램을 실행하는 핵심 역할
- 같은 프로세스 내에서 메모리(Heap, Data 영역)를 공유
- 독립적인 Stack과 레지스터를 가짐
- 프로세스보다 생성 및 종료 속도가 빠르고, 자원을 공유하기 때문에 통신 비용이 적음
3. 동작 방식
- 프로세스는 식당, 쓰레드는 영혼이 없는 직원, CPU 코어는 영혼에 비유
- 프로세스는 하나의 껍질 프로그램 (메모장, 롤, 그림판 등)
- 프로세스 내부의 최소 하나의 쓰레드가 동작하면서 프로그램을 실행
- CPU 코어가 쓰레드를 동작 시킴
- 한번에 하나의 쓰레드만 동작 시킬 수 있음
- CPU 코어가 빠른 속도로 여러 쓰레드를 번갈아서 동작 시키기 때문에 우리 눈에는 모든 프로그램이 실행 되는 것 처럼 보임
- 예전 컴퓨터는 CPU에는 하나의 코어만 존재했지만, 현재는 CPU에 여러 코어(멀티 코어) 존재하기 때문에 이러한 여러 프로그램을 실행하는 것이 훨씬 수월함
※ 쓰레드가 많을 수록 좋다?
- 쓰레드는 Heap 영역과 Data 영역을 공유하기 때문에 다른 쓰레드가 데이터를 먼저 사용하고 변경 시킬 위험이 있음
- CPU 코어가 하나의 쓰레드에서 다른 쓰레드로 옮기는 과정이 부담이 되는 작업임
- 그래서 상황에 맞게 적절한 쓰레드를 사용한는 것이 중요
'서버 > 서버 이론' 카테고리의 다른 글
Lock (0) | 2025.03.27 |
---|---|
InterLocked (0) | 2025.03.24 |
메모리 배리어 (0) | 2025.03.19 |
캐시 이론 (0) | 2025.03.18 |
쓰레드 (Thread) (0) | 2025.03.03 |