CS지식/운영체제

TIL 정리_73

ran4 2022. 4. 30. 21:25

 

Thread

프로세스 내부에 CPU 수행 단위가 여러 개 존재하는 것을 말한다

 

주소공간의 구조 (Thread 추가)

Thread1Stack/ Thread2Stack / Thread3Stack

data

code

 

Thread의 구성

  • program counter
  • register set
  • stack space

-> program counter가 코드의 어느 부분을 가리키는지, register의 값이 어떻게 되는지를

stack에 쌓는다

 

Thread가 동료 쓰레드와 공유하는 부분(task)

  • code section
  • data section
  • OS resources

 

정통적인 개념의 heavyweight proces는 하나의 Thread를 가지고 있는 task라고 볼 수 있다

프로세스 안에 쓰레드를 여러 개 두는 것이 가볍기 때문에 쓰레드로 관리하는 것을

lightweight process라고 한다

 

Thread의 특징

다중 쓰레드로 구성된 task 구조에서는 하나의 서버 쓰레드가 blocked 상태인 동안에도

동일한 task 내의 다른 쓰레드가 실행되어 빠른 처리를 할 수 있다

-> 웹 브라우저에서 웹 페이지를 불러옴과 동시에 다른 작업도 가능하다

 

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

-> 자원 절약이 가능하다

 

쓰레드를 사용하면 병렬성을 높일 수 있다

-> 주로 연산이 이루어지는 상황에서 유리하다

*blocked = waiting 상태, throughput = 처리율, running = 실행

 

프로세스마다 하나의 PCB가 만들어지고, 이를 운영체제가 관리한다

프로세스 안에 쓰레드가 여러 개 존재하고 각 쓰레드는 CPU 수행과 관련된 정보를 별도로 가지고 있다 //stack

 

Thread의 장점

CPU가 1개인 경우에도 적용 가능한 일반적인 경우

응답성(Responsiveness)

네트워크 요청을 한 쓰레드가 blocked 되는 동안 다른 쓰레드가 응답을 한다

-> 비동기

자원 공유(Resource Sharing)

같은 일을 하는 프로그램이 여러개인 경우 하나의 프로세스 안에 CPU 단위를 여러 개 두어 자원을 효율적으로 사용 가능하다

경제성(Economy)

프로세스를 만드는 것은 비용이 많이 들지만 프로세스 안에 쓰레드를 여러 개 추가하는 것은 부담이 적다

-> 쓰레드를 생성하는 것이 비용이 적게 든다

 

CPU가 여러 개인 경우

쓰레드가 여러 개인 경우 병렬적으로 일을 처리할 수 있다 = 효율적으로 실행 가능하다

 

 

쓰레드의 구현

운영체제 커널의 지원을 받는 쓰레드

-> 커널쓰레드

쓰레드가 여러 개 있다는 사실을 커널이 알고 있다.

 

라이브러리의 형태로 구현한 쓰레드

-> 유저 쓰레드

라이브러리를 통해서 지원된다

프로세스 안에 쓰레드가 여러 개라는 사실을 운영체제가 모른다

유저 프로그램이 스스로 여러개의 쓰레드를 관리한다

-> 구현상의 제약점이 존재한다

'CS지식 > 운영체제' 카테고리의 다른 글

TIL 정리_75  (0) 2022.05.02
TIL 정리_74  (0) 2022.05.01
TIL 정리_72  (0) 2022.04.29
TIL 정리_71  (0) 2022.04.28
TIL 정리_70(운영체제)  (0) 2022.04.27