All'alba vincerò

At dawn, I will win!

CS/운영체제

쓰레드(Thread)

나디아 Nadia 2025. 4. 28. 19:41

쓰레드 (Thread)

: 운영체제가 프로세스 안에서 작업을 처리하는 더 작은 실행 단위

  • 운영체제가 작업을 처리하는 단위는 프로세스 내의 쓰레드임

https://goodgid.github.io/What-is-Thread/

 

 

 

쓰레드 등장 이유

  • 프로세스 단위 실행의 오버헤드와 느린 통신 문제를 해결하기 위해
     하나의 프로세스 안에서 여러 개의 쓰레드를 만들어서 작업 분산
  • 사용자가 운영체제에게 작업을 요구하면, 그만큼 프로세스의 수가 늘어남 
    프로세스가 생성되면 PCB가 생성되고, 메모리에 code, data, stack, heap 영역을 만들어줘야 함
    → 프로세스가 많아지면, 프로세스 수만큼 PCB, code, data, stack, heap 영역도 만들어줘야 하기 때문에 너무 무거워짐

 

 

 

쓰레드가 생겨난 배경 예시

  • 웹 브라우저를 실행하면 프로세스 1개가 생성된다.
    • 탭을 하나 더 열면  기존 프로세스를 복사해서 새로운 프로세스를 만든다.
    • 탭을 20개 열면  프로세스 복사가 20번 일어나고, 각각의 PCB(Process Control Block), 코드(code), 데이터(data), 스택(stack), 힙(heap) 영역이 20개씩 생긴다.
      ⇒ 결과적으로 웹 브라우저가 메모리를 많이 차지하게 된다.
  • 이 웹 브라우저의 탭들끼리 통신하려면 IPC(Inter Process Communication)를 써야 한다.
    하지만 IPC는 통신 비용이 크고 느리다.
    이 문제를 해결하기 위해 "쓰레드"가 등장했다.

  • 실제 웹 브라우저 예시
    구글 크롬 프로세스 방식 탭 1개마다 프로세스 1개 생성됨
    ex) 탭 100개 → 프로세스 100개 생성  PCB, code, data, stack, heap 영역 100개 생성
    파이어폭스 쓰레드 방식 처음 4개의 탭까지만 프로세스 생성 → 추가적인 탭은 생성된 프로세스 내에 쓰레드를 추가하는 식
    ex) 탭 100개 → 프로세스 4개 생성 + 이 4개의 프로세스 내에 100개의 쓰레드 존재

 

 

 

쓰레드 특징

  • 프로세스 내에 존재
  • 1개 이상의 쓰레드가 있을 수 있음
    • 1개의 프로세스에 1개의 쓰레드가 있을 수 있고, 10개의 쓰레드가 있을 수도 있음
  • 한 프로세스 내의 쓰레드들은 그 프로세스의 PCB, code, data, heap 영역을 공유함
     단, stack은 공유하지 않음!!! (쓰레드마다 하나씩 있음)
  • 쓰레드는 코드, 데이터, 힙 영역을 공유하기 때문에 메모리 사용량이 훨씬 적고, 탭 간 통신도 빠르다.
  • 각 쓰레드는 쓰레드 ID를 가지고 있고, TCB(Thread Control Block)으로 관리됨

https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html#google_vignette

 

 

 

프로세스와 쓰레드의 장단점

프로세스

✅ 장점

  • 안정성: 프로세스는 서로 독립적이므로, 하나의 프로세스에 문제가 있어도 다른 프로세스에 영향 없음

 

❌ 단점

  • 오버헤드가 큼
    → 각각의 프로세스는 서로 고유한 자원을 갖고 있음 
     code, data, stack, heap 영역을 전부 따로 두고 있고, 프로세스 간의 통신을 하려면 IPC를 이용해야 함 
    ⇒ 오버헤드가 크고, 속도가 느림

 

 

 

쓰레드

✅ 장점

  • 오버헤드가 낮음
    → 한 프로세스 내에서 stack 영역을 제외한 모든 메모리 공간을 공유하기 때문
  • 쓰레드 간 통신이 쉬움
    데이터 공유가 가능하기 때문

 

❌ 단점

  • 안정성 낮음
    → 하나의 프로세스 내에 있기 때문에, 해당 프로세스에 문제가 생기면 모든 쓰레드가 영향을 받음
  • 데이터가 공유되는 공간에서 문제가 생길 수 있음