본문 바로가기

Dev.Basic/운영체제

[OS] 3-2. Process II / Thread란 무엇인가 / Thread 종류

Chapter 3-2. Process II

Thread

A thread is basic unit of CPU utilization or lightweight process

= Program counter, register set, stack space

Thread 끼리 공유하는 부분

= code section, data section and OS resources


동일한 일을 하는 부분이 많은 프로세스를 여러 개 생성하는 것은 메모리 낭비이다. 그래서 프로세스는 하나만 생성하고 Program counter만 여러 개 생성한다. 즉 CPU수행 단위를 여러 개를 두는 것이다. 이것을 쓰레드(Thread)라고 한다.


각각 다른 Instruction을 수행하려면 Program counter 값이 존재해야 하고, 메모리에 어떤 레지스터 값들을 세팅해야 할텐데, 쓰레드마다 Program counter값과 레지스터 값들이 들어가는 것이다. 이렇게 스레드를 생성하여 스레드마다 다른 부분의 코드를 실행할 수 있게 하면 된다. 공유할 수 있는 것을 최대한 공유하는 목적으로 스레드를 생성한다. 일단 주소 공간을 공유하고 프로세스가 사용하는 각종 자원들도 공유한다.



레드를 생성하여 프로세스를 수행했을 때의 장점은 무엇이 있는가

Responsiveness

하나의 프로세스 안에 여러 스레드를 두게 되면, 즉 다중 스레드로 구성된 프로세스 내에서는 하나의 서버스레드가 blocked (or waiting)상태인 동안에도 동일한 프로세스 내의 다른 스레드가 실행되어 보다 빠른 처리가 가능하다. 웹 브라우저에서 네트워크를 통해 웹 페이지를 읽어올 때 읽어오는 작업이 오래 걸리기 때문에, 웹 브라우저 상태가 blocked상태가 된다. 하나의 스레드가 데이터를 읽어오는 동안에, 다른 스레드가 읽어온 데이터를 화면에 뿌려주는 역할을 하면 되는 것이다.


Resouce Sharing

하나의 프로세스 안에 여러 개의 스레드를 두면 메모리 낭비를 줄일 수 있다. 비슷한 작업에 대해서는 리소스를 공유한 결과이다


Economy

생성하고 switch 하는 면에서 프로세스보다 오버헤드가 적고 빠르다. 이를 경제적이라고 표현했다. 


Utilization of MP(MultiProcessor) Architectures

스레드를 생성하게 되면 병렬성(parallel)을 높일 수 있다. 이는 CPU가 여러 개인 컴퓨터에서만 얻을 수 있는 장점이지만 스레드를 통해 이 장점을 취할 수 있게 된다.




Thread의 종류에는 무엇이 있는가

Kernel Thread(커널 스레드)

프로세스 내 스레드가 여러 개라는 것을 운영체제가 알고 있는 스레드이다. 그래서 커널이 스레드 스케줄링을 맡아서 하게 된다.


User Thread(유저 스레드)

라이브러리 차원에서 지원되는 스레드이다. 프로세스 안에 스레드가 여러개 있다는 것을 운영체제가 모르기 때문에 커널 입장에서는 하나의 일반적인 프로세스로 인식된다.



Chapter 3-2. 끝

이 포스팅은 이화여대 반효경 교수님 강의를 듣고 요약한 내용을 담고 있습니다.