스레드(Threead)의 개념
스레드 구조
스레드 주소 공간
Single-thread vs Multi-threads
스레드 장점
사용자 응답성 (Responsiveness)
일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능
자원 공유 (Resource sharing)
자원을 공유해서 효율성 증가(커널의 개입을 피할 수 있음)
경제성 (Economy)
프로세스의 생성, context switch에 비해 효율적
멀티 프로세서 (Multi-processor) 활용
병렬처리를 통해 성능 향상
스레드 사용 예
스레드 구현
사용자 수준 스레드 (User threads)
사용자 영역의 스레드 라이브러리로 구현
스레드 생성, 스케줄링 등
커널은 스레드의 존재를 모름
커널의 관리(개입)를 받지 않음
생성 및 관리의 부하가 적음, 유연한 관리 가능
이식성 높음
커널은 프로세스 단위로 자원 할당
하나의 스레드가 block 상태가 되면, 모든 스레드가 대기
커널 수준 스레드 (Kernel threads)
OS(Kernel)이 직접 관리
커널 영역에서 스레드의 생성, 관리 수행
Context switching 등 부하(Overhead)가 큼
커널이 각 스레드를 개별적으로 관리
프로세스 내 스레드들이 병행 수행 가능
하나의 스레드가 block 상태가 되어도, 다른 스레드는 계속 작업 수행 가능
혼합형 (n:m) 스레드
n개 사용자 수준 스레드, m개 커널 스레드
사용자는 원하는 수 만큼 스레드 사용
커널 스레드는 자신에게 할당된 하나의 사용자 스레드가 block 상태가 되어도, 다른 스레드 수행 가능
병행 처리 가능
효율적이면서 유연함
[출처] https://drive.google.com/file/d/1AKOc4AkPfJa9ndkNrA_7heYAzUBDbEox/view