쓰레드 (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 간 비교

항목ThreadProcess
단위– 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 슈퍼스칼라 형태
– 프로세스는 스레드 할당

 

콘텐츠 사용 시 출처 표기 부탁 드리고, 궁금한 점이나 의견은 댓글 남겨주세요^^