프로그램이 I/O요청을 했을 때 해당 I/O작업이 완료되어야 다음 작업을 할 수 있는 방식이다.
->I/O가 진행되는 동안 다음 명령을 수행하지 않고 기다린다.
->I/O상태의 프로세스는 blocked state로 전환된다.
->I/O가 완료되면 인터럽트를 통해 완료를 알린다. 이후 CPU의 제어권이 기존 프로그램에게 넘어간다.
->blocked state의 프로세스는 wait상태로 돌아간다.
*인터럽트(interrupt)란 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말한다.
직접 제어할수 없는 대상의 작업(I/O)이 완료될 때까지 기다린다.
->I/O가 완료되어야 제어권이 프로세스로 넘어간다.
동기와 마찬가지로 자원이 낭비된다.
I/O작업이 진행되는 동안에도 유저 프로세스의 작업을 중단시키지 않는다.
->제어권을 바로 반납한다.
I/O완료와 상관없이 작업 결과가 반환된다.
->이를 입력 데이터가 있을 때까지 반복하고, 입력 데이터가 있으면 결과가 전달된다.
대기하지 않아도 되지만 I/O완료를 확인해야하기 때문에 시스템 호출이 반복된다.
동기, 비동기는 개선된 I/O이벤트 통지 모델이다.