4 스레드 관리

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