Что управляет IO между буфером и устройством?

270
Tim

Если я прав, буфер используется в качестве промежуточного звена между процессором и устройством, чтобы освободить процессор от ожидания завершения ввода-вывода с устройством и позволить процессору выполнять другие действия.

Поскольку процессор выполняет другие функции, управление буфером, похоже, не может работать. Что управляет передачей данных из буфера на устройство, когда буфер заполнен, или приемом данных с устройства, когда буфер пуст?

0
ОС управляет этими буферами ввода / вывода для устройств. ОС (фактически драйвер устройства) будет * инициировать * операцию передачи данных, если буфер заполнен или пуст. Фактическое перемещение данных может выполняться центральным процессором (он же запрограммированный ввод / вывод или PIO), контроллером прямого доступа к памяти (он же DMA) или мастером шины (аналогично DMA, но «умным» периферийным устройством на системная шина, например, графический процессор на PCI). sawdust 9 лет назад 0

1 ответ на вопрос

1
LawrenceC

Direct Memory Access (DMA) is the missing piece of your puzzle. DMA lets I/O device controllers directly read and write memory without CPU intervention.

Without DMA, a buffer may still be employed as the data needs to live somewhere while it is being retrieved and it may be desired to only give data to the requesting program if the I/O completes successfully.

Благодарю. Что означает "" предоставлять данные запрашивающей программе только в случае успешного завершения ввода-вывода "? Что является противоположностью" давать данные запрашивающей программе только в случае успешного завершения ввода-вывода "? Tim 9 лет назад 0
Операция ввода / вывода займет некоторое время. Пока это происходит, могут выполняться другие потоки приложения. Таким образом, задействованный драйвер устройства может иметь DMA устройства в буфере, которым он владеет (не в приложении), а затем скопировать (или вернуть ссылку на) буфер в область памяти приложения, если ввод / вывод в порядке - если устройство сообщает нет ошибок или если возвращенные данные проверены контрольной суммой ОК. Если произошла ошибка ввода / вывода, возможно, для драйвера имеет смысл не передавать недопустимые данные в приложение. Конечно, взгляните на некоторых реальных водителей, они могут делать разные вещи. LawrenceC 9 лет назад 0

Похожие вопросы