Evgeniy писал(а):
1. Что/кто и как резервирует эти области, и можно ли их перебиндить на другие адреса?
На ПК - BIOS. Можно манипуляциями с чипсетом, но делать так не рекомендую - могут быть неопределенные последствия из-за SMBIOS и прочих резидентных частей биоса.
Evgeniy писал(а):
2. Всеми ли устройствами можно манипулировать через MMIO?
Большинством, не всеми.
Evgeniy писал(а):
3. Есть ли какой-то флаг или режим, игнорирующий обращение к MMIO для кода ядра, если вдруг произошло обращение по одному из забинденных адресов, чтобы исключить обращение к устройствам для тех участков кода, которым это не требуется?
Нет, с точки зрения проца MMIO отличается от памяти только выключенным (с помощью MTRR) кешированием.
Evgeniy писал(а):
4. Является ли работа с MMIO линейной? т.е. при каждом ли выполнении одной и той же последовательности команд записи и чтения (с момента чистого ресета компьютера) мы будем получать одинаковый результат? (подразумевается, что на одном и том же компьютере, или при эквивалентных конфигурациях)
Зависит от устройства, в которому идет обращение. Полагаться на это в общем случае нельзя.