스레드
- 프로세스: 리소스를 제어하는 것
- 리소스 영역:
- 제어 영역 (스레드, 여러 개가 생길 수 있음):
- 제어 정보 (PC, Stack Pointer, …)
- 지역 데이터, 스택, …
- 하나의 리소스 영역을 공유
- 프로세스의 스레드는 동일한 메모리 공간을 공유
- [코드 - 데이터 - 힙 → … ← … - 스레드 3 스택 - 스레드 2 스택 - 스레드 1 스택]
- CPU 활용의 기본 단위
- Thread ID, Register Set (PC, SP), Stack(local data) 등으로 구성됨
- 장점
- 사용자 응답성 (스레드 하나가 지연되어도 다른 스레드는 작업 처리)
- 자원 공유, 경제성 (동일한 프로세스에서 자원을 공유하므로 Context Switching 없이 사용 가능)
- 멀티 프로세서 활용 (병렬 처리)
스레드 구현
사용자 수준 스레드 (n:1 mapping)
- 스레드 라이브러리 (POSIX, Win32, Java thread API등) 활용
- 커널은 스레드가 몇 개인지 모름 (라이브러리가 관리해주기 때문)
- 유연한 관리, 생성 및 관리 부하 적음, 이식성 높음
- 단점: 하나의 스레드가 block상태가 되면 모든 스레드가 대기
커널 수준 스레드 (1:1 mapping)
- 커널이 직접 관리하는 스레드
- 스레드들의 병렬 수행 가능
- 단점: 오버헤드가 큼 (Thread context switching이 존재)
혼합형 스레드 (n:m mapping)
- n개의 사용자 수준 - m개의 커널 스레드 (n > m)