#3-3. Thread

 


* PCB


 

 

# 프로세스마다 하나의 pcb가 만들어져서 os가 관리 하게 된다.

# 쓰레드는 프로세스 마다 가지고 있는 정보 중에서, cpu수행과 관련있는 정보만 가지고 있게 된다. => pc, register

 

 

** 쓰레드가 별도로 가지고 있는 정보들과 공유하는것들을 사진으로 알아보도록 하자.

 

 

 

 

# 쓰레드는 주소공간에서 data, code는 공유하고 stack 부분만 별도로 가지고 있게 된다.
# 쓰레드는 pcb에서 pc, register 정보만 별도록 가지고 있게 된다.

 

 

* Single and Multithread Process

 

 

#공유된 파란색 부분과 독자적으로 가지는 빨간색 부분!

 

 

* 쓰레드의 장점!!


--- cpu가 1개 일때도 얻는 장점! ---

 

1. 응답성(빠르다)

 

# 예)) 내가 웹브라우저를 띄워 놓고 어떤 포털사이드의 홈페이지 주소를 치게 되면 제일먼저 html 문서가 날라오게 된다.

그 문서를 web browser 화면에 display 하려고 봤더니 그 안에는 여러가지 이미지가 있다. 그거를 웹 브라우저가 해석을 해서 이미지들을 다시 웹서버에 요청을 한다. 그래서 그 이미지들이 도착을 하면 여러 다른 텍스트들도 집어 넣고 중간중간 이미지도 넣어가지고 하나의 웹 페이지를 완성해서 사용자에게 보여주게 된다.
 근데 그러한 과정에서 제일 먼저 html 문서를 읽어온 다음에 그 안에 있는 이미지들을 다시 웹서버에게 요청을 한다. 그러면 그게 오래 걸리는 작업이기 때문에 프로세스를 block 시킨다. 그럼 사용자 입장에서는 답답하다. 왜나하면 프로세스가 block 이 되어서 화면에 띄우는 걸 못한다.

이렇게 하지않고 웹 브라우저를 여러개의 쓰레드를 사용해서 만들게 되면 하나의 쓰레드만 block되고 다른 쓰레드가 일을 하게 된다. 그래서 더 빨리 결과를 볼 수 있게 된다.

 

-> 일종의 비동기식 입출력이 된다.

 

2. 자원 공유 (Resource Sharing)

 

# 하나의 프로세스를 만들고 그 안에 cpu 수행 단위만 여러개를 두게 되면, code, data 각종 자원은 쓰레드들이 공유 하기때문에 자원을 효율적으로 쓸수 있게 된다.

 

3. 경제성 (응답성과는 약간 다른 '빠르다'의 의미)

 

# 프로세스 내부에서 쓰레드 간의 cpu 스위칭이 일어나는 것은 굉장히 간단하다.

why)) 동일한 주소공간을 사용하기 때문에

<비교 : 문맥교환은 오버헤드가 크다.>
=> 같은일을 하는 작업이라면 프로세스를 여러개 만드는것보다 프로세스 안에 쓰레드를 여러개 두는것이 효율적이다.

 

--- cpu가 여러개 일때 얻는 장점! ---

 

4. 병렬성

 

# 프로세스는 하나지만 쓰레드가 여러개 있다면, 각각의 쓰레드들이 cpu를 점유해서 연산속도가 올라간다.
 => 결과를 더 빨리 얻을 수 있다. (멀티 프로세서 환경에서 효울적)

 

 

* 쓰레드 구현 방법

 

1. 커널 쓰레드 : 쓰레드가 여러개 있다는 사실을 운영체제 커널이 알고 있다. 그래서 하나의 쓰레드에서 다른 쓰레드로 cpu가 넘어가는것도 커널이 cpu 스케줄링 하듯이 넘겨주게 된다.

 

2. 유저 쓰레드 : 라이브러리르 통해서 지원된다. 프로세스 안에 여러 쓰레드가 있다는것은 os는 모르고 유저 프로그램이 관리 하는것.

 

# 커널의 지원을 받으면 커널 쓰레드.
  사용자 수준에서 쓰레드를 구현하게 되면 유저 레벨 쓰레드

 

3. real- time 쓰레드

 

 

'cs > os' 카테고리의 다른 글

#5. CPU SCHEDULING  (0) 2018.01.04
#4. Process Management  (0) 2018.01.02
#3-2. Process  (0) 2017.12.27
#3-1. Process  (0) 2017.12.27
#2-2. System Structure & Program Execution  (0) 2017.12.25

+ Recent posts