Thread
정의
Execution Unit
Process 내의 실행 흐름
프로세스보다 작은 단위 : Finer Grain
Single Thread = Process
Process가 제공한 Proctction Domain은 없음
Thread 간 동일한 메모리 공유
프로세스 간에는 프로세스 도메인이 분리되어 있다. (보호O)
하나의 프로세스들 간에 Thread에서는 도메인이 분리되어 있지 않다. (보호X)
동기
one Process - one Control - one task
프로세스에서 할 작업을 여러개로 나눈후에 각각 Thread화
병렬적으로 작업을 완수할 수 있다.
Cooperative Process (Multi-process)와의 차이점
IPC가 필요 없다.
Context 전환비용이 적다
적은 비용으로 Cooperative Process와 동일한 기능 수행
Thread와 CPU Utilization
‘Thread 수’ 와 ‘Throughput’
Thread의 수가 증가할수록 CPU의 Utilization이 증가
임계점 이상에서는 다시 감소
Thread Switching 비용이 증가
프로그램이 허용할 수 있는 정도까지만
CPU의 수가 많을 수록 Thread 사용이 유리
Multi-processor 와 동일 : Process에서 여러 Thread를 Parallel 하게 실행
이걸 극대화 한것이 GPU
Process와 Threads
Process
= Single Thread : Thread 가 없는 것은 아님
Process 간의 Memory는 독립적 : 서로 영역에 접근 힘듬
메모리 프로텍션으로 묶인 것이 process
Process 간의 Switch 비용이 큼 (상대적으로 Heavy Weight)
Thread
하나의 프로세스 안에 여러개의 Thread가 존재
프로세스의 Code, Data 영역은 Thread간의 공유
Thread들은 같은 메모리 영역을 사용
Thread간 Switch비용 적음
index를 달리하던지, 사용하는 값을 다르게 해서 사용
Thread의 구성요소
Thread의 독립적, 고유정보 : 실행에 관련된 것들
Thread ID : Thread 식별자
Program Counter : 현재 실행중인 Instruction의 주소
각각 별도의 Core에서 실행될 수 있음
Register Set : CPU의 Register 값들
Stack
동일한 프로세스 내에 다른 Thread들과 공유하는 것
Code : Program의 Code Section
결국 같은 코드를 실행
Data : Process의 Data Section
File : Process에서 Open한 File
Thread의 고유 정보수가 더 적어, 전환비용이 적음
Multi-Threaded Program의 장점
Responsiveness (반응성 향상)
하나의 Thread가 Block되거나 시간이 오래 걸리더라도, 다른 Thread는 계속 실행
사용자 입장 : 프로그램이 중단되지 않고 Interactive(상호작용적)하게 동작하는 것처럼 느껴짐
Resource Sharing (자원 공유)
같은 프로세스 내의 Thread들은
메모리와 자원을 공유
합니다
IPC 없이도 가능 → 효율적, 빠름
Economy (경제성)
Process 생성 비용 > Thread 생성 비용
별도의 메모리 공간을 할당 X
프로세스 전환 비용 감소