Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- GIT
- 공룡게임
- cookie
- react
- dfs
- mongoose
- nestjs
- flask
- game
- TypeScript
- nodejs
- MySQL
- typeORM
- Sequelize
- 정렬
- Dinosaur
- Python
- JavaScript
- Queue
- Bull
- Nest.js
- OCR
- Express
- 자료구조
- class
- AWS
- jest
- 게임
- MongoDB
Archives
- Today
- Total
포시코딩
[운영체제] 3. 프로세스 관리 (2) - Thread 본문
728x90
키워드
thread, 스레드
Thread(스레드)
- 프로세스 내부의 CPU 수행 단위가 여러 개 있는 경우
- 프로세스 하나에 CPU 수행 단위만 여러 개 두고 있는 것을 스레드라 부름
- "A thread (or lightweight process) is a basic unit of CPU utilization"
구성
스레드가 독립적으로 가지는 부분
- program counter
- register set
- stack space
thread 끼리 공유하는 부분(=task)
- code section
- data section
- OS resources
전통적인 개념의 heavyweight process는 하나의 스레드를 가지고 있는 task로 볼 수 있다.
장점
- 하나의 프로세스 안에 스레드를 여러 개 두게 되면 스레드 하나가 blocked(waiting) 상태일 때
다른 스레드가 CPU를 잡고 실행(running)을 할 수 있어서 응답 시간이 빨라지는 장점이 존재
-> 하나의 스레드가 다른 작업을 하는 동안 또 다른 스레드가 별도의 작업을 하여 사용자로 하여금 빠른 응답성을 제공 - 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있음
- 스레드를 사용하면 병렬성을 높일 수 있다.(CPU가 여러 개 달린 컴퓨터에서 누릴 수 있는 장점)
응답성(Responsiveness)
- 사용자 입장에서 빠름
- ex) 브라우저에서 웹사이트 요청 시 한 스레드가 이미지를 불러오는 동안 다른 스레드가 텍스트를 먼저 뿌려주는 걸 생각
자원 공유(Resource Sharing)
- 똑같은 일을 하는 프로그램이 여러 개 있을 때 별도의 프로세스로 사용하기보단,
하나의 프로세스로 만들고 그 안에 CPU 수행 단위만 여러 개를 두면 code, data, 각종 자원은 스레드가 공유하니
자원을 효율적으로 쓰는 효과를 얻을 수 있다.
경제성(Economy)
- 빠름(응답성과는 조금 다른)
- 프로세스를 하나 만드는 행위는 오버헤드가 상당히 큼
하지만 프로세스 안에 스레드를 하나 추가하는건 오버헤드가 크지 않음 - 프로세스 간에 컨텍스트 스위치는 오버헤드가 크지만
프로세스 내부에서 스레드 간에 CPU switching이 일어나는 건
동일한 주소 공간을 쓰고 있기 때문에 상대적으로 간단하다. (몇 배로 차이)
Utilization of MP Architectures
- MP(=Multi Processor)
- 위 세가지(응답성, 자원공유, 경제성)는 CPU가 하나 있는 환경에서도 적용 가능한 얘기였다면
네번째는 CPU가 여러 개 있는 환경에서 얻을 수 있는 장점을 얘기
구현
Kernel Threads
- 프로세스 안에 스레드가 여러 개 있다는 사실을 운영체제가 알고 있음
- 하나의 스레드에서 다른 스레드로 CPU가 넘어가는 것도 커널이 CPU 스케줄링을 하듯 넘겨줌
User Threads
- 라이브러리를 통해 지원
- 프로세스 안에 스레드가 여러 개 있다는 사실을 운영체제가 모름
- 유저 프로그램이 스스로 여러 스레드를 관리(라이브러리의 지원을 받아)
Real-Time Threads
728x90
'CS (Computer Science)' 카테고리의 다른 글
[운영체제] 3. 프로세스 관리 (4) (0) | 2023.04.28 |
---|---|
[운영체제] 3. 프로세스 관리 (3) - 생성, 종료 (0) | 2023.04.28 |
[운영체제] 3. 프로세스 관리 (1) - Process (0) | 2023.04.20 |
[운영체제] 2. 컴퓨터 시스템의 구조 (2) (0) | 2023.04.20 |
[운영체제] 2. 컴퓨터 시스템의 구조 (1) (0) | 2023.04.20 |