논 블로킹 I/O (비동기 방식)legacy/Operating System2024. 10. 5. 15:39
Table of Contents
동기 방식은 블로킹 I/O에서는 실행 상태에서 CPU 자원을 사용하던 프로세스가 입출력 작업이 발생하면 대기 상태로 이동한다. 대기 상태로 이동하면 사용하던 CPU 자원은 운영체제의 CPU 스케줄링에 의해 준비 상태에 있는 다른 프로세스에게 할당한다. 입출력 작업이 종료되면 대기 상태에서 준비 상태로 이동되어 CPU 스케줄링을 대기하게 된다.
비동기 방식인 논 블로킹 I/O에서는 실행 상태에 있는 프로세스가 입출력 작업이 발생하더라도 실행 상태를 유지하면서 CPU 자원을 사용한다. 이는 운영체제의 비동기 처리 메커니즘 덕분이다. 이 메커니즘은 CPU가 입출력 작업이 완료되기까지 기다리지 않고, 그 사이에 다른 작업을 할 수 있도록 하여 CPU 자원을 보다 효율적으로 사용할 수 있게 한다.
비동기 방식 메커니즘
비동기 방식에서는 입출력 작업(I/O)과 CPU 계산 작업을 독립적으로 처리한다. 이는 CPU가 입출력 작업이 완료되기를 기다리지 않고, 입출력 장치와 상관없이 다른 작업을 계속할 수 있도록 설계되어 있기 때문이다.
- 입출력 작업의 비동기
- 비동기 방식에서는 입출력 요청을 하면 입출력 장치는 해당 요청을 독립적으로 처리한다.
- 프로세스는 입출력 작업이 완료될 때까지 기다리지 않고, 입출력 장치에서 작업이 완료되면 신호를 발생시켜 프로세스에게 결과를 전달한다.
- 따라서 CPU는 입출력 작업을 고려하지 않고 계산 작업을 진행할 수 있다.
- 이벤트 발생
- 입출력 작업이 완료되면 운영체제가 인터럽트를 발생시켜 프로세스에게 결과를 전달한다.
- 프로세스는 CPU 작업을 하면서 입출력 작업이 완료된 사실을 인지한다.
- 프로세스는 필요한 후속 작업을 진행한다.
결론
입출력 작업은 CPU가 수행하는 것이 아닌 입출력 장치(디스크)에서 수행된다. CPU는 입출력 장치의 작업이 완료될 때까지 기다리지 않고, 계속해서 다른 작업을 수행할 수 있다. CPU와 입출력 장치가 독립적으로 작동하므로, CPU는 입출력 작업과 별개로 병렬 처리가 가능하다. 입출력 장치가 작업을 하는 동안 CPU는 다른 명령어를 처리할 수 있다.
- 병렬성 : CPU가 입출력 작업과 상관없이 다른 작업을 계속할 수 있으므로, 시스템의 병렬성이 증가하여 성능이 증가한다.
- 효율성 : CPU 자원이 입출력 작업을 기다리지 않기 때문에, 입출력 장치가 느린 경우에도 CPU는 자원을 낭비하지 않고 다른 작업을 할 수 있다.