Подтвердить что ты не робот

Память сопоставлена ​​IO - как это делается?

Я читал о различии между IO с сопоставлением портов и отображением IO с памятью, но я не могу понять, как отображаемая память Io реализована в современных операционных системах (windows или linux).

Что я знаю, так это то, что часть физической памяти зарезервирована для связи с аппаратным обеспечением, и там подразделение MMIO, участвующее в уходе за шиной и другими материалами, связанными с памятью.

Как драйвер взаимодействует с базовым оборудованием? Каковы функции, которые будет использовать драйвер? Установлены ли адреса для связи с видеокартой или существует какое-то "соглашение" перед их использованием?

Я все еще довольно смущен

4b9b3361

Ответ 1

В вашем вопросе неверно следующее утверждение:

What I know is that a part of the physical memory is reserved to communicate with the hardware

Часть физической памяти не зарезервирована для связи с оборудованием. Часть физического адресного пространства, к которому привязана физическая память и память, отображаемая IO. Этот макет памяти является постоянным, но пользовательские программы не видят его напрямую - вместо этого они запускаются в свое собственное виртуальное адресное пространство, к которому ядро ​​может решить отображать, где захочет, физическую память и диапазоны ввода-вывода.

Вы можете прочитать следующие статьи, которые, как я считаю, содержат ответы на большинство ваших вопросов:

Ответ 2

Вы спрашиваете о файлах с отображением памяти или о отображаемом в памяти порт-IO?

Файлы с отображением памяти выполняются путем разбивки страниц и перехвата ошибок страниц на эти адреса. Все это выполняется ОС путем согласования между диспетчером файловой системы и обработчиком ошибок страницы.

Отображаемый память port-IO выполняется на уровне ЦП, перегружая адресные строки в виде портов-IO, которые позволяют переводить записи в память на линии шины QPI как порт-IO. Все это делает процессор, взаимодействующий с материнской платой. Единственное, что нужно ОС - это сообщить MMU не читать и записывать на калийные страницы через PAE-записи и бит без кэша.

Ответ 3

http://en.wikipedia.org/wiki/Memory-mapped_I/O

http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/IO/mapped.html

По сути, это всего лишь форма доступа к данным, как если бы вы сохраняли/читали из памяти. Но аппаратное обеспечение будет отслеживать адресную шину, и когда он увидит адрес для него, он просто получит данные на шине данных.