728x90
스레드 관리(Thread Management)
1. 프로세스(Process)와 스레드(Thread)
프로세스
- 어떠한 목적을 위해 연산을 하는 과정
- 자원을 할당받고 그 자원을 제어
스레드
- 프로세스가 돌아가는 과정 중 "제어" 부분 의미
- 하나의 프로세스에 여러 개의 스레드 존재 가능
- 스레드는 프로세스와 다르게 하나의 자원을 여러 스레드가 공유 가능
2. 스레드(Thread)
- LWP, Light Weight Process
- 프로세서(CPU) 활용의 기본 단위
- 구성요소
- Thread ID
- Register set : 제어를 위해 알고 있어야 하는 정보
- Stack: 자신만의 작업 영역
스레드의 장점
- 사용자 응답성 (Responsiveness)
- 일부 스레드 처리가 지연되어도, 다른 스레드는 작업을 계속 처리할 수 있다.
- 자원 공유 (Resource sharing)
- 자원을 공유하므로 효율성이 증가한다.
- 경제성 (Economy)
- 프로세스의 생성, Context Switch에 비해 효율적이다.
- 멀티 프로세서(multi-processor) 활용
- 병렬처리를 통해 성능이 향상된다.
3. 스레드의 구현
사용자 수준 스레드 (User Thread)
- 사용자 영역의 스레드 라이브러리로 구현
- 다대일(n:1) 매핑
- 커널은 스레드의 존재를 모름
- 커널의 관리/개입를 받지 않음
- 생성 및 관리의 부하가 적음
- 높은 이식성(Portability)
- 커널은 프로세스 단위로 자원 할당
- 하나의 스레드가 block 상태가 되면, 모든 스레드 대기(Single-threaded Kernel인 경우)
- 커널의 관리/개입를 받지 않음
커널 수준 스레드 (Kernel Threads)
- OS(Kernal)가 직접 관리
- 커널 영역에서 스레드의 생성과 관리 수행
- 커널이 각 스레드를 개별적으로 관리
- 일대일(1 : 1) 매핑
혼합형 (n : m) 스레드
- n개 사용자 수준 스레드, m개의 커널 스레드 (n > m)
- 사용자가 원하는 수만큼 스레드 사용
- 커널 스레드는 할당된 하나의 사용자 스레드가 block 상태가 되어도, 다른 스레드 수행 가능(병행 처리)
- 효율적이면서 유연
728x90
반응형