I/O 작업은 Kernel level에서만 수행할 수 있음. 따라서, Process, Thread는 커널에게 I/O를 요청해야함
(커널
은 운영체제 중 항상 메모리에 올라가 있는 운영체제의 핵심 부분으로써 하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하는 역할을 하며 컴퓨터 자원들을 관리하는 역할을 함)
I/O작업이 진행되는 동안 User Process는 자신의 작업을 중단한 채 대기
Resource 낭비가 심함(I/O 작업이 CPU 자원을 거의 쓰지 않으므로)
+여러 Client가 접속하는 서버를 Blocking 방식으로 구현하는 경우
I/O 작업을 진행하는 작업 중지 -> 다른 Client가 진행중인 작업을 중지하면 안되므로, client 별로 별도의 Thread를 생성하여야 함 -> 접속자 수가 매우 많아짐
즉, 많아진 Threads로 컨텍스트 스위칭 횟수가 증가하는 비효율적인 동작 방식
간단하고 사용하기 쉽지만, 시스템의 리소스를 효율적으로 활용하지 못하고, 여러 작업을 동시에 처리하기 어렵다는 단점
I/O 작업이 진행되는 동안 User Process의 작업을 중단하지 X
복잡하고 처리 로직이 어렵지만, 시스템의 성능과 응답성을 향상