토픽 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