【问题标题】:How and when are different memory maps created?如何以及何时创建不同的内存映射?
【发布时间】:2017-04-02 02:36:29
【问题描述】:

我引用的其中一本书的摘录,

  • 处理器内存映射:这是需要创建的第一个内存映射。它解释了 CPU 的内存管理策略,例如 就像 CPU 如何处理不同的地址空间(用户模式、内核 模式),各种内存区域的缓存策略是什么, 等等。
  • 主板内存映射:一旦了解处理器如何查看各种内存区域,下一步就是适应各种内存区域 板载设备到处理器内存区域。这需要一个 了解各种板载设备和总线控制器。
  • 软件内存映射:接下来需要为各种软件组件(如引导加载程序和 Linux 内核。 Linux 内核建立了自己的内存映射和 决定各种内核部分(例如代码和堆)的位置 居住。

这些内存映射是什么时候创建的?比如说,它是在编译阶段之前硬编码的还是由一些运行时任务决定的?

是否有一些将处理器地址空间映射到各种设备的标准,或者是用户的选择?

book 顺便说一句。

【问题讨论】:

    标签: linux memory linux-kernel operating-system embedded


    【解决方案1】:

    这些内存映射是什么时候创建的?比如说,是不是很难 在编译阶段之前编码或者是由一些运行决定的 时间任务?

    为此配置通常是内核在启动时要做的第一件事。它可以是硬编码的,也可以在内核启动之前决定,即在引导加载程序中。

    是否有一些标准将处理器地址空间映射到 各种设备还是用户的选择?

    这完全取决于您作为设计师。许多人可能会从 linux 等其他操作系统中选择类似的配置。

    【讨论】:

    • 那么是使用端口映射I/O还是内存映射I/O的考虑完全在系统开发者的手中?
    • 是的,我会这么说。
    • @RohitMat:不!它通常由底层硬件定义。不确定“端口映射 IO”是什么意思,如果您在 MCU 上没有外部总线并使用 IO 端口通过位带模拟一个,这通常是一种黑客攻击。您可能指的是 serpratre 内存和 IO 地址空间,但这是由 CPU 和现代 CPU 遗留下来的。大多数更大(16 位以上)的 RISC 不支持单独的 IP 地址空间,对于 x86,它仅用于 PS/2 键盘接口等遗留内容和旧的UART/并口外设等。
    • @Olaf 感谢您对端口映射 I/O 的说明。我的意思是一样的。所以它的硬件依赖的东西。所以板内存映射取决于硬件对吗?软件内存映射呢?
    • @RohitMat:软件映射显然取决于硬件,除非您遇到虚拟机,在这种情况下它 - 当然 - 取决于另一个软件(VM)并且 那是底层硬件。等等。
    猜你喜欢
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多