#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 |