동기식 입출력과 비동기식 입출력
- 동기식 입출력
- 프로세스가 입출력이 진행될때, instruction이 실행이 안될때
- I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
- 구현 방법1
- I/O 끝날때까지 CPU를 낭비시킴
- 매시점 하나의 I/O만 일어날수 있음
- 구현 방법2
- I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음
- I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움
- 다른 프로그램에게 CPU를 줌
- 비동기식 입출력
- 프로세스가 입출력이 진행될때 instruction이 실행이 될 수 있을때
- I/O 가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
- 두 종류 모두 I/O의 완료는 인터럽트로 알려줌
Thread
- Thread is basic unit of CPU utilization
- 프로세스에서 CPU의 수행단위
- Thread의 구성
- program counter
- register set
- stack space
- Thread가 동료 thread와 공유하는 부분(=task)
- code section
- data section
- OS resources
- 전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있다.
- Process 하나에 프로세스 실행단위를 여러개를 두는게 Thread, 각 Thread마다 Program Counter와 register를 별도로 유지
- Thread는 Stack은 별도, Process가 사용하는 state(상태), 자원은 공유하지만, PC와 register는 별도로 유지
- 다중 스레드로 구성된 태스크 구조에서는 하나의 서버스레드가 blocked(waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행되어 빠른 처리를 할 수 있다.
- 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율과 성능 향상을 얻을 수 있다.
- 스레드를 사용하면 병렬성을 높일 수 있다.(CPU가 여러개일때 가능)
- 프로세스는 한개이기 때문에 PCB는 1개이고, Thread마다 별도의 PC와 Register를 따로 가지고 있다.
- 스레드의 장점
- 응답성 : Responsiveness
- 리소스 공유 : Resource Sharing
- 경제성 : Economy → createing & CPU switching thread
- Solaris의 경우 2가지 overhead가 각각 30배, 5배
- Utilization of MP Architectures
- each thread may be running in parallel on diffrent processor
Implementation of Treads
- Kernal Threads
- 커널 스레드는 운영체제 커널이 스레드가 여러개인 것을 인지하고 있고, 스레드 변환시, CPU 스케쥴링과 컨텍스트 스위칭에 의해 작동된다.
- Windows 95/98/NT
- Solaris
- Digital UNIX, Mach
- User Threads
- 라이브러리로 지원되는 스레드
- 프로세스 내에 스레드가 여러개인걸 운영체제가 모르는 상황
- 구현상의 제약점이 있다.