동기식 입출력 : 입출력을 요청한 프로세스가 입출력이 끝날 때까지 아무것도 안한다
비동기식 입출력 : 입출력이 진행되는 동안에 프로세스가 CPU를 잡아서 인스트럭션을 실행하면

쓰레드(light process) : CPU를 수행하는 단위. 프로세스 하나에 CPU수행(인스트럭션) 단위를 여러개 두고 있는 것
구성
- program counter
- register set
- stack space
동료 thread와 공유하는 부분(task)
- code section
- data section
- OS resouces
전통적인 개념의 프로세스(heavy weight)는 하나의 thread를 갖는다.
장점
- 응답성 : 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(waiting)상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다.
- 리소스 쉐어 : 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율과 성능 향상을 얻을 수 있다.
- 경제성 : 프로세스를 하나 만드는것은 오버헤드가 심하지만, 스레드를 하나 더 추가하는 것은 오버헤드가 심하지 않다. 문맥교환 또한 오버헤드가 심하지만, 스레드끼리의 CPU스위칭은 오버헤드가 적다.
- 병렬성 : 스레드를 사용하면 병렬성을 높일 수 있다(CPU가 여러개 있는 경우).

- Kernel Threads : 스레드가 여러개 있다는 사실을 운영체제커널이 알고, 하나의 쓰레드에서 다른 쓰레드로 CPU가 넘어가는 것을 커널이 스케줄 스케줄링 하듯이 넘겨준다.
- User Threads : 라이브러리를 통해 지원되며, 프로세스 안에 스레드가 여러개 있다는 사실을 운영체제는 모르고 유저프로그램이 스스로 여러 스레드를 라이브러리의 지원을 받아 관리한다.
- Real-time Threads