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

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

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

решение1

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

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

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

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

Связанный контент