gpt4 book ai didi

linux - 内存映射 i/0 在 linux 中工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:22 25 4
gpt4 key购买 nike

我是操作系统的新手,我不明白它到底是什么意思地址空间的某些部分是为 I/O 保留的?

这是否意味着如果我有 4GB 内存,该地址的某些部分将保留用于 i/o?

如果有read这样的指令后跟那个地址,cpu会认为是i/o吗?

如果有人澄清我的理解,将会有很大帮助。

最佳答案

传统上,一些计算机具有单独的 IO 和内存总线。 Memory总线连接内存,IO总线连接各种外设。

虽然由于各种原因(例如访问速度、制造单独 IO 总线的成本等),一些外围设备被映射到内存(例如视频卡,快速访问对于快速图形是必需的)。这意味着即使它们不是(或只是部分)类内存设备,它们也连接到内存总线。

例如在微 Controller 上,它们通常有一个公共(public)总线,用于内存和 IO。原因是这些设备的 CPU 引脚有限,不需要很高的速度(如果您有共享 IO/内存总线,性能会受到限制)

回答您的问题:

  • "being reserved for IO": 这意味着对于这些内存地址,你应该将IO设备连接到处理器。例如,对于 ATMEL 微 Controller ,前 64 个字节保留用于 IO,您可以使用特殊指令轻松访问这些字节(而不是使用内存读/写指令)。

  • 4GB 内存:不要混淆内存的逻辑映射和物理映射。如果是 PC,则有一个翻译设备,您可以对其进行编程以在两者之间进行翻译。这意味着,您的 4GB 物理内存可以映射到逻辑地址空间中的任何位置(比 4GB 大得多)。这意味着,对于那些为 IO 保留的地址空间(例如上面提到的视频卡地址),内存不会丢失,您可以简单地将其映射到地址空间中的其他位置。

  • 如果您在 IO 地址空间上使用内存读/写操作,这会导致读/写外设。 CPU 通常不知道有一个 IO 设备映射到该地址,它只是将请求的地址发送到总线,然后读取值(在这种情况下由外设而不是内存给出)。

关于linux - 内存映射 i/0 在 linux 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11482368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com