我是操作系统的新手。当说地址空间的某些部分是为 i/o 保留时,我不明白这到底是什么意思?
这是否意味着如果我有 4GB RAM,该地址的某些部分是为 i/o 保留的?
如果使用了诸如read后跟该地址的指令,cpu 是否将其视为 i/o?
如果有人澄清我的理解会很有帮助。
我是操作系统的新手。当说地址空间的某些部分是为 i/o 保留时,我不明白这到底是什么意思?
这是否意味着如果我有 4GB RAM,该地址的某些部分是为 i/o 保留的?
如果使用了诸如read后跟该地址的指令,cpu 是否将其视为 i/o?
如果有人澄清我的理解会很有帮助。
传统上,一些计算机有单独的 IO 和内存总线。内存总线连接到内存,IO 总线连接到各种外围设备。
然而,由于各种原因(例如访问速度、制造单独 IO 总线的成本等),一些外围设备被映射到内存(例如,视频卡,其中快速访问对于快速图形是必需的)。这意味着即使它们不是(或仅部分)类似内存的设备,它们也连接到内存总线。
例如在微控制器上,它们通常有一个公共总线,用于内存和 IO。原因是这些设备的 CPU 引脚有限,不需要很高的速度(如果你有共享的 IO/内存总线,性能会受到限制)
要回答您的问题:
“为 IO 保留”:这意味着对于这些内存地址,您应该将 IO 设备连接到处理器。例如,在 ATMEL 微控制器的情况下,前 64 个字节为 IO 保留,您可以使用特殊指令轻松访问它们(而不是使用内存读/写指令)。
4GB 内存:不要混淆内存的逻辑和物理映射。如果是 PC,则有一个翻译设备,您可以对它进行编程以在两者之间进行翻译。这意味着,您的 4GB 物理内存可以映射到逻辑地址空间中的任何位置(远大于 4GB)。这意味着,对于那些为 IO 保留的地址空间(例如上面提到的显卡地址),内存不会丢失,您可以简单地将其映射到地址空间中的其他位置。
如果在 IO 地址空间上使用内存读/写操作,这会导致读/写外设。CPU 通常不知道有一个 IO 设备映射到该地址,它只是将请求的地址发送到总线,然后读取该值(在这种情况下由外设而不是内存给出)。