Learning
토픽 10 / 85·프로세스 관리

스레드 (Thread)

스레드 (Thread)

프로세스 내부의 실행 흐름 단위로, 프로세스의 코드·데이터·힙을 공유하지만 각자의 스택·레지스터·PC를 가지며 CPU 스케줄링의 기본 단위

목적: 경량 병렬 실행, 빠른 생성·전환, 자원 공유, 응답성 향상

특징: 프로세스 내 공유 메모리, 경량, 빠른 컨텍스트 스위칭, 통신 용이

구성요소: 스레드 ID, PC, 레지스터 세트, 스택, 상태

공유 자원: 코드, 데이터, 힙, 파일, 전역 변수

독립 자원: 스택, 레지스터, PC, 스레드 로컬 스토리지

스레드 모델

  • 사용자 수준 스레드(User-Level): 사용자 공간 라이브러리, 빠름, 커널 인식 못함, M:1 매핑
  • 커널 수준 스레드(Kernel-Level): 커널이 관리, 느림, 진짜 병렬, 1:1 매핑
  • 하이브리드(Hybrid): M:N 매핑, 유연성

멀티스레딩 모델

  • Many-to-One(M:1): 다수 사용자 스레드 → 1개 커널 스레드, 병렬 불가
  • One-to-One(1:1): 1개 사용자 스레드 → 1개 커널 스레드, 진짜 병렬, Linux/Windows
  • Many-to-Many(M:N): 다수 → 다수, 유연, 복잡

시간 복잡도: 생성·전환 프로세스보다 10-100배 빠름

장점: 빠른 생성·전환, 자원 공유, 통신 용이, 응답성 향상, 경제적

단점: 동기화 필요, 한 스레드 크래시 시 전체 프로세스 종료, 디버깅 어려움

적용사례: 웹 서버(스레드 풀), GUI(메인+워커), 데이터베이스, 게임, 브라우저

비교: 스레드(공유/가벼움/통신쉬움) vs 프로세스(독립/무거움/안전)

연관: 프로세스, 멀티스레딩, 동기화, TCB, pthread