【问题标题】:Meaning of address' in System.map fileSystem.map 文件中地址的含义
【发布时间】:2011-01-10 10:24:42
【问题描述】:

这个地址说明了什么?这些在内存中加载的地址?

【问题讨论】:

    标签: linux memory linux-kernel system-calls


    【解决方案1】:

    内核从进程的虚拟地址空间中的固定位置开始。 linux 内核通常 [取决于您的系统架构] 位于 4GB 虚拟地址空间的顶部 1 GB。因此,具有 3G/1G 拆分的系统架构的内核从地址 0xC0000000 开始。根据平台的内存映射,这将映射到物理内存中的物理地址。

    system.map 文件是内核符号表。它列出了符号及其虚拟地址。要找出这些符号在主内存中的加载位置,请从符号地址中减去 PAGE_OFFSET [对于 3G/1G 系统,这是 0xC00000000] 以获得偏移量,并将此偏移量添加到物理内存中内核的起始物理地址,如下所示由系统内存映射决定。

    【讨论】:

      【解决方案2】:

      这是内核虚拟地址。那就是从启用地址转换的内核运行的角度来看,它是内存中符号的地址,即。 不是在实模式下。

      在大多数 (?) 平台上,都有一个简单的公式可以将这些地址转换为真实地址,即。 RAM 中的实际地址,但不一定如此。

      【讨论】:

        猜你喜欢
        • 2015-10-02
        • 2015-10-29
        • 1970-01-01
        • 2014-03-18
        • 2020-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-12
        相关资源
        最近更新 更多