Ввод-вывод и память в системной информации Windows

300
FunctionBlock

Как интерпретировать ввод / вывод и память в windows Системная информация Msinfo32? Адреса ввода-вывода представляют собой область памяти, в которой отображается устройство ввода-вывода, и как насчет адресов в памяти? Если есть адреса физической памяти, то они должны каждый раз отличаться, верно?

0

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

1
Jamie Hanrahan

То, что вы видите под «I / O», является «адресами», но они не являются ни виртуальными адресами, ни адресами физической памяти. Они находятся в пространстве портов ввода / вывода. Они имеют смысл только для специальных инструкций, таких как IN и OUT.

На странице «память» отображаются адреса в физическом адресном пространстве. Это то же адресное пространство, в котором живет ОЗУ. Это адреса «регистров» и буферного пространства, которые определяются различными устройствами ввода-вывода и некоторыми другими устройствами на материнской плате. Драйверы общаются с этими устройствами, ссылаясь на виртуальные адреса, которые ОС связывает с этими физическими адресами.

Адреса портов и памяти для устройств, соответствующих стандартам PCI для регистров адреса шины, настраиваются ОС. Тем не менее, вся эта конфигурация выполняется во время загрузки, и большинство устройств в конечном итоге получают одинаковые адреса от одной загрузки к другой. Несколько устройств назначены на общеизвестные адреса по устаревшим причинам. Несколько других устройств (таких как устаревшие последовательные и параллельные порты, если они у вас есть) находятся на шине LPC. Программно это выглядит как ISA, но электрически это последовательная шина, и как ISA не может быть сконфигурирован программно; эти устройства подключены к своим адресам.

Кстати, пространство портов ввода / вывода является пережитком древних архитектур или, по крайней мере, архитектур с древними корнями (например, x86). Большинство современных архитектур не реализуют ничего подобного; все находится в физическом пространстве памяти.