CS/operating system

Thread

superbono 2021. 3. 2. 16:33

A thread (or lightweight process) is a basic unit of CPU utilization.

하나의 프로세스 내부에 CPU 수행 단위가 여러개 인 것이 스레드이다.

 

<Thread>

쓰레드라는 것은 현재 CPU가 현재 어디를 수행하는가(Program Counter)만 여러개 두는 것이다. 프로세스 하나에 CPU 수행 단위만 여러 개임. instruction을 위해서는 현재 어느 부분 수행중인지 알려주는 PC가 있어야 하는데 현재 어느 부분을 수행 중인지 알려주는 Program Counter가 있어야 하는데 이것을 별도로 유지한다. PC, register stack 같은 것만 별도로 가지고 나머지는 공유한다.(죄다 별도로 가지면 낭비임)

 

* Thread의 구성

- program counter

- register set

- stack space

 

* Thread가 동료 thread와 공유하는 부분(=task)

- code section

- data section

- OS resources

 

* 전통적인 개념의 heavy weight process는 하나의 thread를 가지고 있는 task로 볼 수 있다. 프로세스를 여러개 두는 것 보다 쓰레드를 여러개 가지고 있는 프로세스를 가지고 있는 것이 당연히 경제적이다. 

* 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(waiting)상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다. -> 빠른 응답성

* 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다. 

* 스레드를 사용하면 병렬성이 높아지고, 자원이 절약된다(메모리 낭비를 방지한다.)

 

<Benefits of Threads>

* Resposiveness (응답성)

멀티 스레드, 만약 하나의 스레드 상태가 blocked 된 상태더라도 나머지 스레드들은 continue 된다. 일종의 비동기식 입출력 예를 들어 네이버 페이지가 연기된(network blocked)라도 display는 될 수 있음

 

* Resource Sharing

n threads can share binary code, data, resource of the process

 

* Economy (경제성)

- creating & CPU switching Thread (rather than a process)

- solaris의 경우 위 두가지 overhead가 각각 30배, 5배 

동일한 주소 공간 사용하기 때문에 스레드 스위칭이 부담이 적다.

 

* utilization of Multiprocessor Architectures

- each thread may be running in parallel on a different processor

 

<Implementation of Threads>

어떤 것들은 kernel에 의해서 지원된다 -> kernel Threead

커널이 스레드의 존재를 알고 스레드 넘겨주는거 커널이 CPU 스케줄링 하듯이 해준다.

- window 95/98/NT

- solaris 

- Digital UNIX, Mach

 

그 외의 것들은 library에 의해서 지원된다 -> user Thread

커널이 스레드의 존재를 모르고 커널이 지원하지 않고 사용자 수준에서 사용된다.

- POSIX P Thread

- Mach C Thread

- Solaris Threads

 

어떤 것들은 real time Thread라고 한다...

'CS > operating system' 카테고리의 다른 글

Cache (캐시)  (0) 2021.07.14
운영체제 입문 강의 및 책 추천  (0) 2021.03.10
File System Implementation  (0) 2021.03.01
File System (1/1)  (0) 2021.02.28
Process Synchronization: 프로세스 동기화 (2/2)  (0) 2021.02.28