CS/OS
[운영체제] Process 3
HYJJ
2022. 1. 24. 16:12
Thread
빠른 응답성 제공 장점.
자원 절약 장점 : 같은 프로세스를 띄워놓으면 메모리 낭비가 심함.
(if 웹 브라우저 여러개 띄우거나, 파일을 여러개 띄워놓는 경우)
여러 개의 CPU있는 경우 쓰레드 사용하면 병렬성 높일 수 있음.
: 프로세스마다 가지고 있는 정보를 각 스레드마다 갖고 있게 됨.
스레드는 프로세스 안에서 독자적으로 가져야할 정보만 갖게 됨.
장점
- Responsiveness : 멀티 쓰레드인 경우 멀리 있는 서버에서 그림 파일이나 html 들고오는 동안, 포털 사이트 홈페이지 주소를 검색하게 되면 html 문서가 날아오게 됨. 웹 브라우저에 표시하려고 했더니 안에 있는 이미지 존재. 이미지를 다시 웹 서버에 요청. 이미지를 다 요청하면 TEXT, 이미지를 넣어서 사용자에게 보여주게 됨. (i/o가 끝나기 전에 CPU를 얻어서 결과와 무관하게 실행. -> 일종의 비동기식 입출력)
- Resource Sharing (자원 공유) : 동일한 일을 하는 프로그램이 여러개 일 때 별도의 프로세스를 사용하는 것보다 하나의 프로세스를 만들고 CPU 실행 단위를 여러 개 두게 되면 code, data, thread 공유하게 되면서 자원 효율적으로 사용할 수 있음.
- Economy (경제성) : 프로세스를 하나 만들 떄 오버헤드가 큼. 대신 프로세스에 스레드만 추가하는 것은 오버헤드가 크지 않음. (context switching 할 때 오버헤드 큼.) -> 스레드 간에 스위치가 일어나는 것은 간단.(동일한 주소공간을 사용하기에 대부분의 문맥은 사용가능함.)
- Uilization of MP Architectures : CPU가 여러개 있을 때 스레드 뒀을 때의 장점. 프로세스는 하나지만 스레드가 여러 개라면 서로 다른 CPU에서 병렬적으로 일을 할 수 있음. -> 더 빠른 결과 얻을 수 있음. (가령 큰 행렬을 곱하는 경우)
Implementation of Threads
- 어떤 스레드는 커널 지원 -> kernel threads (스레드가 여러 개 있다는 사실을 운영체제 커널이 알고 있음.)
: CPU 스케쥴링 하듯 넘겨줌. 커널이 스레드의 존재 알고 있음.
- 다른 스레드는 라이브러리 -> user threads
: 프로세스 안에 여러 개의 스레드가 있다는 것은 운영체제는 모름. (커널이 모름.)
프로세스 본인이 내부에서 CPU 수행단위 여러 개 두면서 관리. 구현 상의 제약점 존재.
- real-time threads
: 실시간 기능 지원하는 스레드