부연설명) 동기식 입출력과 비동기식 입출력


- 구현방법1 : CPU 가 이전에 실행하던 프로세스를 계속해서 기다림 → 그 외의 일을 하지 못함
- 구현방법2 : CPU 가 어차피 이전 프로세스를 실행하지 못하므로 다른 프로세스를 실행함 → 그 외의 일 실행
Thread
- A thread (or lightweight process) is a basic unit of CPU utilization
- Thread 의 구성
- program counter : 현재 프로그램의 어느 부분을 실행하고 있는지 가리키는 정보
- register set
- stack space
- Thread 가 동료 thread 와 공유하는 부분(=task)
- code section
- data section
- OS resources
- 전통적인 개념의 heavyweight process 는 하나의 thread 를 가지고 있는 task 로 볼 수 있다


- CPU 에 띄운 하나의 프로세스에서 여러 코드(위치)를 실행하는 단위
- 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가
blocked(waiting)
상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running
) 되어 빠른 처리를 할 수 있다
- 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput) 과 성능 향상을 얻을 수 있다
- 스레드를 사용하면 병렬성을 높일 수 있다 → CPU 가 여러개 있는 PC 일 경우에만 가능

- 여러 스레드가 PCB 를 공유하여 메모리 절약
- CPU 관련 정보(빨간색 박스)만 각각의 스레드가 별도로 관리함
Single and Multithreaded Processes