linux 中的物理地址和虚拟地址 2010-05-27 09:54:35| 分类: Linux 学习 | 标签: |字号大中小 订阅 在支持MMU 的32 位处理器平台上,Linux 系统中的物理存储空间和虚拟存储空间的地址范围分别都是从0x00000000 到0xFFFFFFFF,共4GB,但物理存储空间与虚拟存储空间布局完全不同
Linux 运行在虚拟存储空间,并负责把系统中实际存在的远小于4GB 的物理内存根据不同需求映射到整个 4GB 的虚拟存储空间中
物理存储空间布局 Linux的物理存储空间布局与处理器相关,详细情况可以从处理器用户手册的存储空间分布表(memory map)相关章节中查到,我们这里只列出嵌入式处理器平台Linux物理内存空间的一般布局,如图18-4 所示
500)this
width=500;"> 图18-4 Linux物理内存空间一般布局示意图 说明: 1)最大node 号n 不能大于MAX_NUMNODES-1
2)MAX_NUMNODES 表示系统支持的最多node 数
在ARM 系统中,Sharp 芯片最多支持16 个nodes,其他芯片最多支持4 个nodes
3)numnodes 是当前系统中实际的内存node 数
4)在不支持CONFIG_DISCONTIGMEM选项的系统中,只有一个内存node
5)最大bank 号m 不能大于NR_BANKS-1
6)NR_BANKS 表示系统中支持的最大内存bank 数,一般等于处理器的RAM 片选数
在ARM 系统中,Sharp 芯片最多支持16 个banks,其他芯片最多支持8 个banks
7)mem_init()函数会将所有节点的页帧位码表所占空间、孔洞页描述符空间及空闲内存页都释放掉
虚拟存储空间布局 在支持MMU 的系统中,当系统做完硬件初始化后就使能