Как контроллер диска сигнализирует процессору о завершении запроса на чтение/запись

Предполагая, что процесс запросил ядро ​​для чтения блока, а ОС выдала запрос на диск через память с прямым отображением (не уверен, что это правильно), которая в конечном итоге считывается контроллером диска и завершает запрос на чтение, как диск сигнализирует процессор, что запрос на чтение завершен? Использует ли он ту же память с прямым отображением? (В этом случае не требуется опрос, что неэффективно?).


person Boolean    schedule 01.03.2011    source источник


Ответы (3)


На очень высоком уровне дисковый ввод-вывод обрабатывается асинхронно между контроллером диска и контроллером DMA (прямой доступ к памяти). После завершения передачи данных возникает прерывание, сигнализирующее о завершении операции.

person Chris Taylor    schedule 01.03.2011

На x86 ваши теги предлагают правильный ответ. Ввод-вывод с отображением памяти означает, что запись в некоторые области физической памяти перенаправляется в управляющие регистры диска. Когда чтение готово, первое слово записывается в регистр данных, к которому ОС может получить доступ тем же методом после получения уведомления об аппаратном прерывании. Затем ОС будет извлекать прочитанное по одному слову за раз, записывая его в любой конечный буфер, который в этом нуждается. На уровне сборки это выглядит как серия операций перемещения памяти в память, при этом северный мост прозрачно обрабатывает детали отображения памяти.

Однако в случае DMA на южном мосту (я думаю) есть контроллер DMA, который действует как посредник. ОС в ЦП программирует контроллер DMA для необходимого чтения, в том числе предоставляет ему реальный буфер в основной памяти (т. Е. Не отображаемый в память контроллера устройства). Затем контроллер DMA выполняет пословное копирование и вызывает прерывание диска только после того, как все данные будут скопированы в основную память.

person Wang    schedule 01.03.2011

Контроллер обычно запускает прерывание, чтобы сигнализировать о том, что операция выполнена. В частности, в современных компьютерах и контроллерах дисков, которые используют DMA для передачи данных в ОЗУ, а затем запускают прерывание, оставляя центральному процессору очень мало работы.

person cHao    schedule 01.03.2011