2016-02-16 2 views
0

Я рассматриваю основы ввода-вывода, и, хотя я думаю, что понимаю большую часть происходящего, я все еще запутался в отношении того, как физические адреса или отдельные порты отображаются на отдельные устройства. Проводит ли компьютер опрос шины при загрузке системы, назначение адресов устройствам один за другим или какие-то фиксированные адреса, которые где-то загружаются в память? Если это делается через BIOS, как эта информация о макете памяти передается в операционную систему?Сопоставление памяти ввода-вывода

Благодарим за помощь!

ответ

0

(этот вопрос был задан и ответ, прежде, вы должны искать первый)

зависит от платформы, вы были не конкретные

некоторые системы, некоторые периферийные устройства в этих системах, которые зашиты в микросхеме/системных дизайнеров.

для pci (e), как определено этим, вы перечисляете шины (ы), которые ищут подключенные периферийные устройства, и те пространства конфигурации периферийных устройств (которые определены периферийным поставщиком по их потребностям) указывают, сколько и сколько им нужно. Для x86 pc биос делает это перечисление не операционной системой. для других платформ это зависит от этой платформы, это может быть загрузчик или операционная система. но кто-то должен взять доступное пространство (в основном жестко закодированное для этой платформы, зная платформу и то, что уже используется) и разделить ее. для x86 это был всего лишь один концерт, который был разделен на 32-битные дни и все еще случается на некоторых системах, но для 64-битных систем биосы открывают это до 2gig для каждого, и могут размещать это в высоком адресном пространстве чтобы избежать барана (когда-либо удивляйтесь, почему ваша 32-битная система с 4-х гигабайтами драма имеет только 3gig?). естественно, плоское пространство памяти - всего лишь иллюзия, окна, требуемые периферийными устройствами pci, могут быть небольшими окнами в их пространстве, например, видеокарты с большим количеством баранов. вы используете csrs для перемещения окна, вроде как стоять в своем доме, глядя в маленькое окно и физически перемещаясь сбоку, чтобы увидеть больше вещей через окно, но только размер окна в любой момент времени.

То же самое относится к usb, оно перечисляется, запросы на автобусы и периферийные устройства отвечают. с usb, хотя он не отображается в адресное пространство хоста.

Как операционная система считает, что эта информация в значительной степени зависит от типа системы. с биографией на x86 существует известный способ получить эту информацию, я думаю, вы также можете получить одну и ту же информацию в dos (да, дос все еще сильно используется). для non pcie или usb драйверы операционной системы должны найти периферийные устройства или просто знать, если платформа согласована (адрес последовательных портов на ПК) или есть способ найти их, не нанося вреда другим устройствам или сбоям. есть случаи, когда сама операционная система сделала перечисление. или загрузчик, если это место, где произошло перечисление. но каждая комбинация загрузчиков и операционных систем на разных платформах может иметь свое собственное решение, поэтому нет причин ожидать, что они будут одинаковыми.

Хорошо, что вы сказали, что биос и имеют тег bios, подразумевающий системы x86. bios делает перечисление pci/pcie во время загрузки, если вы не настроите свою биографию, чтобы знать, что ваша операционная система - 64-разрядная, это может привести к выходу из вашего более низкого пространства 4Gig для устройств pcie (и если вы установите для 64 бит, но установите 32-битную операционную систему, тогда у вас есть проблемы по другим причинам). Я не помню, но предположил бы, что существуют вызовы BIOS, которые операционная система может использовать для выяснения того, что сделала биос, не должно быть трудно найти эту информацию. Все, что невозможно обнаружить таким образом, вероятно, устарело и жестко закодировано или использует устаревшие методы для обнаружения (isa bus style ищет биос по всему диапазону адресов и т. Д.). поставщик pcie/usb и идентификатор продукта указывают драйверы, что есть, и из них они имеют жестко закодированные смещения в эти пространства, чтобы завершить адреса, необходимые для связи с периферийными устройствами.

Смежные вопросы