동기식 입출력(Synchronous I/O) vs 비동기식 입출력(asynchronous I/O)의 차이?
Process 내부에 CPU 수행 단위가 여러개 있는 경우
보통 Code-Data-Stack을 띄워놓고 실행하는데, 각 Thread마다 program counter가 가리키는 값을 나눠가진다.
Thread의 구성(=light weight process)
Thread가 공유하는 부분(=task)

다중 스레드로 구성된 구조에서는 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다.
ex. 웹 페이지를 읽어오는 경우
동일한 일을 수행하는 다중 스레드가 협력한다면 높은 처리율(throughput)과 성능 향상을 얻을 수 있다.
스레드를 사용하면 병렬성을 높일 수 있다.
하나의 Process에 하나의 PCB가 만들어진다.


Responsiveness(응답성)
ex. 웹 서버에서 HTML을 불러오고 그 안에 존재하는 이미지나 텍스트를 다시 요청하는 상황
Multi-threaded Web - Thread를 여러개 두어 읽어오는 작업은 blocked, 이미 읽어온 다른 결과물들을 display하는 과정으로 빠른 응답성을 갖게 된다.
Resource Sharing(자원 공유)
Economy
동일한 주소 공간을 쓰고 있기 때문에, 기존 CPU Context switching과 같은 작업에 비해 훨씬 경제적이다.
Utilization of MP Architectures
Kernel이 thread의 존재를 알면 Kernel Threads
User에 의한 thread는 kernel이 thread의 존재를 모른다.
