서버/서버 이론

프로세스와 쓰레드

잼잼재미 2025. 3. 2. 12:44

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