Thread 란?
프로세스는 작업을 하기 위한 자원을 요청해 할당받고 이 자원을 제어하여 원하는 목적을 얻어내는 과정이다.
이 과정에 있어 제어부분만 따로 떼어내어 것을 Thread라 이해하자
하나의 프로세스 안에 여러개의 스레드가 존재할 수 있으며
이 프로세스들은 자원을 공유한다.
스레드의 개념
Light weight Processs
Process는 원래 자원과 제어가 필요한데 여기서 제어만 따로 떼어내었기 때문에 가벼운 프로세스라고도 할 수 있다.
프로세서(CPU) 활용의 기본단위
구성요소
> 1. TID(Threst ID)
2. Register Set(Program Counter, Stack Pointer 등)
3. Stack(local data)
제어 요소 외에 코드, 데이터, 기타 자원은 프로세스 내의 다른 스레드와 공유한다.
전통적 프로세스는 단일 스레드 프로세스
현재 는 멀티 스레드
스레드의 장점
1. 사용자 응답성(Responsiveness)
> 여러개의 스레드가 있으면 일부 스레드의 처리가 지연되어도 다른 스레드는 독립적 작업공간에서 일하기에 계속할 수 있다.
2. 자원을 공유(Resource sharing)
자원을 공유하기 때문에 효율성이 증가( 커널의 개입을 피할 수있다 -> context switch를 줄일 수 있다.)
3. 경제성(Economy)
프로세스를 생성하거나 컨텍스트 스위칭에 비해 효율적이다.
4. 멀티 프로세서 활용
동시에 여러 작업을 진행가능하는 병렬 처리를 통해 성능 향상을 할 수 있다.
스레드(Thread) 구현
1. 사용자 수준 스레드(User threads)
스레드를 라이브러리 레벨로 구현한 것으로 이 라이브러리가 스레드의 생성 스케쥴링 등을 한다.
ex) POSIX threads, Win32 Threads, Java thread API 등이 있다.
커널은 이 스레드의 존재를 모르므로 커널의 개입을 받지 않아 생성 및 관리에 있어 부하가 적고 유연한 관리가 가능하며 이식성이 높다는 장점이 있다.
하지만 커널은 프로세스 단위로 자원을 할당하기 때문에 single-threaded kernel의 경우 하나의 스레드가 block 될 경우 모든 스레드가 대기하는 단점이 있다.
2. 커널 수준 스레드(Kernel Threads)
커널 영역에서 스레드의 생성 관리를 OS(kernel)이 직접 관리하겠다는 것이다.
커널이 관리하니 Context switching 등 오버헤드가 크다는 단점이 있다.
하지만 커널이 각 스레드를 개별적으로 관리해 주기 때문에 프로세스 내의 스레드들이 병행 수행이 가능하고 하나의 스레드가 block상태가 되어도 다른 스레드는 계속해서 작업 수행이 가능하다는 이점이 있다.
3. 혼합형(n:m) 스레드(Multi-Threading Model)
사용자 수준 스레드와 커널 수준 스레드의 장점을 합쳐 혼합형 스레드가 나왔다.
n개의 사용자 수준 스레드 m개의 커널 스레드로 구성되어있고 n> m의 조건이 있다.
혼합형 스레드 모델에서는사용자는 원하는 만큼의 스레드를 사용하고 커널 스레드는 자신에게 할당된 하나의 사용자 스레드가 block이 되어도 다른 스레드 수행하는 병행 처리가 가능하므로 효율적이면서도 유연한 장점이 있다.
'OS > os 공부' 카테고리의 다른 글
6.Process Synchronization & Mutual Exclusion (0) | 2021.12.27 |
---|---|
5. 프로세스 스케쥴링 (0) | 2021.12.26 |
3. 프로세스 관리 (0) | 2021.12.25 |
2. 운영체제 개요(Operating system overview) (0) | 2021.12.24 |
1. 운영체제_컴퓨터 시스템 오버뷰 (0) | 2021.12.24 |