2024. 1. 21. 23:24ㆍ프로그래밍 공부/OS
프로세스(Process)와 스레드(Thread)
자원(resources)
1. 할당↓ ↑ 2. 제어(여러개) 스레드
프로세스
스레드(Thread)
single
코드
제어 정보 지역데이터 스택 ↔ 전역데이터
(SP,PC,상태 등) 힙(Heap)
<Process> <Resource>
multi
Thread2 제어정보 지역 ↑ ↔ 코드
(SP, PC, 상태 등) 데이터 스택(Stack)
Thread1 제어정보 지역 ↑ ↔ 전역
(SP, PC, 상태 등) 데이터 스택(Stack) 데이터
Threadn 제어정보 지역 ↑ ↔ 힙(Heap)
(SP, PC, 상태 등) 데이터 스택(Stack) ↓
<Process> <Resorce>
스레드(Thread)
↑ 스레드1 스택(Stack)
↓ ←스레드 1의 stack pointer (SP)
스레드2 스택(Stack)
↓ ←스레드 2의 stack pointer (SP)
스레드3 스택(Stack)
같은 프로세스의 스레드들은 ↓ ←스레드 3의 stack pointer (SP)
동일한 주소 공간 공유 ↑
힙(Heap)
데이터
←스레드 1의 program pointer (PC)
코드 ←스레드 2의 program pointer (PC)
↓ ←스레드 3의 program pointer (PC)
<프로세스의 메인 공간>
스레드(Thread)
Light Weight Process(LWP) 자원, 제어 자원 제어제어제어
프로세서(e.g, CPU) 활용의 기본 단위
구성요소
- Thread ID
- Register set (PC, SP 등)
- Stack (i.e. local data)
제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 스레드들과 공유
전통적 프로세스 = 단일 스레드 프로세스
Single-thread vs Multi-threads
스레드의 장점
사용자 응답성(Responsiveness)
일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능
자원 공유 (Resource sharing)
자원을 공유해서 효율성 증가 (커널의 개입을 피할 수 있음)
예) 동일 address space 에서 스레드 여러 개
경제성 (Economy)
프로세스의 생성, context switch에 비해 효율적
멀티 프로세서(multi-processor) 활용
병렬처리를 통해 성능 향상
스레드 사용의 예
화면 출력
사용자 입력
스피커/마이크
스레드의 개념
스레드의 구현
사용자 수준 스레드
커널 수준 스레드
사용자 수준 스레드(User Thread)
사용자 영역의 스레드 라이브러리로 구현됨
스레드의 생성, 스케줄링 됨
POSIX threads, Win32 threads, Java thread API 등
커널을 스레드의 존재를 모름
커널의 관리(개입)를 받지 않음
생성 및 관리의 부하가 적음, 유연한 관리 가능
이식성(portability)이 높음
커널은 프로세스 단위로 자원 할당
하나의 스레드가 block 상태가 되면, 모든 스레드가 대기
(single-threaded kernel의 경우)
사용자 수준 스레드(User Thread)
사용자 영역 :프로세스, 사용자 수준 스레드, 스레드 라이브러리, 스레드 제어 블록
커널 영역: 커널 수준 스레드, 프로세스 제어 블록
하드웨어: 프로세서
커널 수준 스레드(Kernel Thread)
사용자 영역 :프로세스, 사용자 수준 스레드
커널 영역: 커널 수준 스레드(일대일 매칭), 프로세스 제어 블록, 스레드 제어 블록(
하드웨어: 프로세서
OS(Kernel)가 직접 관리
커널 영역에서 스레드의 생성, 관리 수행
Context switching 등 부하(Overhead)가 큼
커널이 각 스레드를 개별적으로 관리
프로세스 내 스레드들이 병행 수행 가능
하나의 스레드가 block 상태가 되어도, 다른 스레드는 계속 작업 수행 가능
Multi-Threading Model
다대일(n:1) 모델
- 사용자 수준 스레드
일대일(1:1) 모델
- 커널 수준 스레드
다대다(n:m) 모델
- n > m
- 혼합형 스레드
혼합형 (n: m) 스레드
n개 사용자 수준 스레드 - m개의 커널 스레드 (n > m)
사용자는 원하는 수만큼 스레드 사용
커널 스레드는 자신에게 할당된 사용자 스레드가 block 상태가 되어도,
다른 스레드 수행 가능
병행 처리 가능
효율적이면서도 유연함
혼합형 (n: m) 스레드
사용자 영역 :프로세스, 사용자 수준 스레드, 스레드 라이브러리
커널 영역: 경량 프로세스, 커널 수준 스레드
하드웨어: 프로세서
Summary
스레드(Thread)의 개념
스레드의 개념
사용자 수준 스레드
n:1 모델
커널 수준 스레드
1:1 모델
혼합 수준 스레드
n:m 모델
'프로그래밍 공부 > OS' 카테고리의 다른 글
| 6 프로세스 동기화 & 상호배제 (0) | 2024.01.24 |
|---|---|
| 5 프로세스 스케줄링 (0) | 2024.01.22 |
| 3 프로세스 관리 (0) | 2024.01.19 |
| 2 운영체제 개요 (0) | 2024.01.19 |
| 1 컴퓨터 시스템 개요 (0) | 2024.01.19 |