操作系统建立了一组规则和约定,以确保应用程序不能彼此造成悲伤。 如果为此OS写入内存映射的I/O设备是可以的,则OS将设置MMU映射(例如页面映射寄存器)以允许它;否则,它将不会将MMU页面设置为映射到I/O设备。
对于大多数ceneral-PurposeOSS,允许任意程序写入I/O寄存器是“导致悲伤”的定义,因此他们根本不会设置这样的映射。 这就是Windows从用户流程的角度行事的方式。
对于特殊目的将虚拟页面映射到物理(如您所期望的)
将页面映射到
Single32字节I/O设备。
这意味着操作系统可以将任何设备(对OS功能都不关键)安全地交给
1。 特别是,这意味着每个I/O驱动程序都有自己的地址空间;如果搞砸了,没问题。 您可以在无恐惧的情况下运行操作系统时调试设备驱动程序。 (Windows遭受了I/O驱动器腐败多年的破坏;我仍然认为他们的质量控制“可信度检查”现在是邪恶的)。您是正确的
物理地址。 虚拟到物理翻译是由MMU完成的,仅发生在可以从中执行代码的内存的连续块中。即RAM或内部闪光灯。当访问内存图的其他部分时,实际上不会发生实际翻译,因为它们不与MMU进行交互。