System.map文件中地址的含义

时间:2011-01-10 10:24:42

标签: linux memory linux-kernel system-calls

此地址指定了什么?这些加载到内存的地址?

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:4)

这是内核虚拟地址。也就是说,从启用了地址转换的内核的角度看,它是内存中符号的地址,即。在实模式下

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