2019년 4월 25일
쓰레드 (Thread)
I. 자원 공유 Light-Weight Process, 쓰레드(Thread)
가. Thread의 개념
- 명령어 독립 실행 가능한 제어흐름으로, 프로세스의 자원을 공유하고 Task를 처리하는 프로세서 사용 기본 단위
– 스레드 간 독립적 실행 – 실행/종료 예측 불가능 – 프로세스 제어명령에 의해 실행 – 스택, 카운터, 레지스터 보유 – 프로세스 내 Heap 영역 공유 – Context Switching 부하 적음 |
나. Thread의 특징
특징 | 상세 설명 |
---|---|
자원공유 | – 부모 프로세스의 데이터 영역 공유 |
동기화 | – 한 프로세스 내 다른 Thread와 동기화 |
병렬성 | – 스레드 간 간섭 없이 독립적 병렬처리 |
분할과 정복 | – 프로세스는 제어담당, 스레드는 실행담당 |
다중 스레드 | – 하나의 프로세스 내 여러 스레드 존재가능 |
II. Thread의 유형 및 구현방식
가. Thread의 유형
항목 | 단일 스레드 | 다중 스레드 |
---|---|---|
개념도 | ||
구성도 | ||
맵핑방식 | 프로세스와 1:1 맵핑 | 프로세스와 1:N 맵핑 |
다중처리 | 단일 작업 처리 | 다중 작업 동시 처리 |
자원공유 | 모든 자원 단독 사용 | 코드, 데이터, 파일공유 |
나. Thread의 구현 방식
항목 | 사용자 레벨 스레드 | 커널 레벨 스레드 |
---|---|---|
개념도 | ||
맵핑방식 | 커널스레드와 1:N 맵핑 | 커널스레드와 1:1 맵핑 |
연산수행 | APP영역에서 모든 연산 | APP 및 커널영역 연산 |
수명관리 | 사용자 프로세스 관리 | 커널에 의해 생성/삭제 |
Data공유 | APP내 Heap, 코드공유 | 커널/전역 데이터 공유 |
시스템콜 발생 시 | 1개 스레드만 커널접근 다른 스레드 중지 발생 | 다중 프로세서에서 다중 스레드 커널 접근 |
장점 | 이식성, 오버헤드 감소 스케줄링 유연성 확보 | 커널 지원부족 해결 병렬 실행, 규모 확장 |
단점 | 동시성 불가, 확장제약, 스레드 보호 어려움 | 커널모드전환 오버헤드 시스템 간 이식성 저하 |
- 여러 사용자 수준 스레드에 여러 개의 커널 스레드가 맵핑되는 혼합 스레드에서 다대다 모델 구현
- 하나의 커널 스레드와 경량 프로세스(LWP) 연결
III. Thread와 Process 간 비교
항목 | Thread | Process |
---|---|---|
단위 | – CPU 사용 기본 단위 | – 자원 할당 기본 단위 |
실행 | – 독립적 | – 종속적 |
Call 방식 | – Library Call | – System Call |
정보 | – 자체 메모리 보유 | – PCB로 정보 공유 |
문맥교환속도 | – 높은 전환 속도 | – 낮은 전환 속도 |
문맥교환 부하 | – TCB기반 부하 경량화 | – PCB기반 높은 부하 – 프로세스 간 전환 |
다중처리 | – 하나의 프로그램 내 다수 작업 수행 | – 다수 프로그램을 동시 수행 |
부하여부 | – 부하 적음 | – Context Switching |
자원할당 | – CPU | – 프로세스, Task |
예측 | – 예측 어려움 | – 예측 가능 |
IV. Multi-Thread
가. Multi-Thread의 특징
특징 | Thread |
---|---|
CPU 이용 최대화 | – CPU자원을 idle없이 활용에 초점 |
대기/응답 최소화 | – 대기가 긴 작업 시 다른 작업 수행 |
수행 흐름 분리 | – 1작업 1스레드로 개념적 흐름 분리 |
나. Multi-Thread의 종류
종류 | 개념도 | 상세 설명 |
---|---|---|
Interleaved Multi-thread | – 클럭 사이클마다 스레드 간 스위칭 – 한 번에 두개 이상 스레드 처리 | |
Blocked Multi-thread | – 스레드 명령 latency 발생 시 연속 수행 – latency 사건 발생 시 다른 스레드로 전환 | |
Simultaneous Multi-thread (SMT) | – 슈퍼스칼라 CPU 성능 – 동시에 다수 명령어가 발송(issue) | |
Chip Multi-processing | – 다중 프로세스 형태 – 프로세스마다 2-issue 슈퍼스칼라 형태 – 프로세스는 스레드 할당 |