-
일반적으로 파일을 읽기 전에 데이터를 저장할 버퍼를 정의하고 파일을 읽는다.
char buffer[LEN];
read(buffer);
-
그러나 이러한 작업을 동기로 처리한다면, CPU와 디스크의 속도 차이로 인해 CPU가 대기하는 시간이 발생한다.
-
따라서 이를 해결하기 위해, 아래와 같은 절차를 따른다.
- 파일 읽기를 요청한 프로세스를 입출력 블로킹 대기열에 넣는다.
- DMA를 통해 파일을 읽어오고, 운영체제의 메모리로 데이터를 복사한다.
- 운영체제의 메모리에서 프로세스의 메모리로 데이터를 복사한다.
- 디스크가 CPU에 인터럽트를 통해 완료를 알린다.
- 프로세스를 준비 완료 대기열에 넣는다.
- 다른 작업이 없다면, 프로세스를 실행한다.