프로세스는 자원을 할당받고 자원을 제어해서 우리가 원하는 목적을 달성한다.
이 때 프로세스가 이 자원을 제어하는 작업을 Thread로 표현된다.
또 하나의 프로세스 안에 스레드는 여러개가 될 수 있다. (제어가 여러개)
프로세스 내 스레드들 각각 스택들을 가지고 있으며 동일한 주소 공간을 공유한다.
Thread
- Light Weight Process(LWP) =>자원은 공유하고 제어부분만 가지고 있기 때문에 가볍다.
- CPU 활용의 기본 단위
- 구성요소 => Thread ID, Register set, Stack
장점
- 자원 공유(Resource sharing) => 효율성 증가(커널의 개입을 피할 수 있다)
- 사용자 응답성(Responsiveness) => 일부 스레드의 처리가 지연되도, 타 스레드는 작업O
- 경제성(Economy) => context switch에 비해 효율적
- 멀티 프로세서 활용 => 병렬처리를 통해 성능 향상
스레드의 구현은 ( 사용자 수준 스레드 / 커널 수준 스레드 ) 로 나뉜다.
사용자 수준 스레드(User Thread) => 사용자 영역의 스레드 라이브러리로 구현된다.(n:1)
커널 수준 스레드(Kernel Threads) => OS(kernel)가 직접 관리하며 context switching(1:1)
등 부하가 크지만 병행 수행이 가능하다.
두가지 다 장단점이 있어 이 두가지의 장점을 합친 혼합형(n:m) 스레드가 나왔고,
이는 사용자가 원하는 수만큼 스레드 사용이가능하며 효율적이면서 유연한 구조다.
'CS > OS' 카테고리의 다른 글
Process Scheduling 2(기본 스케줄링 및 알고리즘) (0) | 2022.02.04 |
---|---|
Process Scheduling 1 (0) | 2022.02.02 |
프로세스(Process) 관리, 자원(Resource)의 개념 (0) | 2022.01.29 |
운영체제의 역할˙구분 (0) | 2022.01.28 |
운영체제(OS)의 기본 (1) | 2022.01.28 |