이화여자대학교 반효경 교수님의 운영체제 수업 6강과 7강을 듣고 정리한 내용이다.
<동기식 입출력과 비동기식 입출력>
- 입출력이 끝날 때까지 아무일도 하지 않으면, 동기식 입출력 (=입출력 실행하지 않고, 기다리기만 함)
- 사용자 프로세스가 입출력 요청을 한 뒤, 입출력이 진행되는 동안 그 프로세스가 곧바로 CPU를 잡아 instruction(명령)을 진행하면, 이것이 비동기식 입출력(=요청은 하되, 다른 명령도 실행)
- 구현방법은 좀 더 효율적으로 쓰기 위한 것이며, 구현방법 2가 좀 더 일반적으로 얘기하는 동기식 입출력
<Thread>
" A thread (or lightweight process) is a basic unit of CPU utilization."
- 프로세스 내부에 CPU 수행 단위가 여러 개 있는 경우, 프로세스를 별도로 두는 것보다 프로세스 안에 thread를 여러개 두는 것이 더 가벼움
- Thread의 구성(;Thread가 독립적으로 가짐)
- program counter
- register set
- stack space
- Thread가 동료 thread와 공유하는 부분(=task)
- code section
- data section
- OS resources
※ CPU 수행 단위가 여러개 있게 되면, Stack도 별도로 가짐!
- 전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 올 수 있음
- 위의 그림처럼, 프로세스는 하나만, 프로그램 카운터만 여러개 띄워놓음
- 프로세스 하나에 CPU 수행단위만 여러개 두고 있는 것이 쓰레드
- 다중 쓰레드로 구성된 태스크 구조에서는 하나의 서버 쓰레드가 blocked(waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있음
- 동일한 일을 수행하는 다중 쓰레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있음
- 스레드를 사용하면 병렬성을 높일 수 있음
- 쓰레드를 이용하면 빠른 응답정 제공과 자원을 절약할 수 있는 장점이 있음
- 같은 일을 하는 프로세스를 여러개 띄워놓게 되면, 각각의 메모리에 올라가야하므로 메모리 낭비가 심함
- 하지만, 하나의 프로세스에 하나의 쓰레드만 놓게 되면, 성능 향상이나 자원 절약이 가능함
- Process는 하나기 때문에 PCB도 하나로 생성
- Process 안에 쓰레드가 여러개면, CPU 수행과 관련된 내용(program counter, registers)만 copy
<Single and Multithreaded Program>
- code, data, stack과 같은 자원들은 쓰레드들끼리 공유
- CPU 수행과 관련된 정보(register set, stack)을 쓰레드마다 별도로 가짐
<Benefits of Threads>
- Responsiveness
- eg) Multi-threaded WEB - if one thread is blocked(eg. network), another thread continues(eg.display)
- Resource Sharing
- n threads can share binary code, data, resource of the process
- Economy(경제성)
- creating & CPU switching thread (rather than a process)
- solaris의 경우, 위 두가지 overhead가 각각 30배, 5배
- Utilization of MP Architectures
- each thread may be running in parallel on a different processor
- CPU가 여러개 있는 환경에서 얻을 수 있는 장점
<Implementation of Threads>
- Some are supported by Kernel (=Kernel Threads)
- Windows 95/98/NT
- Solaris
- Digital UNIX, Mach
- Others are supported by library(=User Threads)
- POSIX Pthreads
- Mach C-threads
- Solaris threads
→ Some are real-time threads
'운영체제' 카테고리의 다른 글
8. Process Management 2 (0) | 2022.02.12 |
---|---|
7. Process Management 1 (0) | 2022.02.12 |
4. System Structure & Program Execution 2 (0) | 2022.01.29 |
3. System Structure & Program Execution 1 (0) | 2022.01.21 |
1. 강의 소개 (0) | 2022.01.21 |