LINUX内核地址空间的布局
Linux内核地址空间的布局1) Linux将整个4G线性地址空间分为用户空间和内核空间两部分,而内核地址空间又被划分为"物理内存区", "虚拟内存分配区", "高端页面映射区","专用页面映射区
Linux 内核地址空间的布局 1)Linux将整个4G线性地址空间分为用户空间和内核空间两部分, 而内核地址空间又被划分为"物理内存区","虚拟内存分配区","高端页面映射 区", "专用页面映射区","系统保留映射区"几个区域. 2)在标准配置下,物理区最大长度为896M,系统的物理内存被顺序映射在物 理区中, 在支持扩展页长(PSE)和全局页面(PGE)的机器上,物理区使用4M页面并作为全 局页面来处理. 当系统物理内存大于896M时,超过物理区的那部分内存称为高端内存, 低端内存和高端内存用highmem_start_page变量来定界, 内核在存取高端内存时必须将它们映射到"高端页面映射区". 3)Linux保留内核空间最顶部128K区域作为保留区, 紧接保留区以下的一段区域为专用页面映射区, 它的总尺寸和每一页的用途由fixed_address枚举结构在编绎时预定义, 用__fix_to_virt(index)可获取专用区内预定义页面的逻辑地址. 在专用页面区内为每个CPU预定义了一张高端内存映射页,用于在中断处理中 高端页面的映射操作. 4)距离内核空间顶部32M,长度为4M的一段区域为高端内存映射区, 它正好占用1个页帧表所表示的物理内存总量,它可以缓冲1024个高端页面的 映射. 在物理区和高端映射区之间为虚存内存分配区,用于vmalloc()函数, 它的前部与物理区有8M隔离带,后部与高端映射区有8K的隔离带. 5)当系统物理内存超过4G时, 必须使用CPU的扩展分页(PAE)模式所提供的64位页目录项才能存取到4G以上 的物理内存. 在PAE模式下,线性地址到物理地址的转换使用3级页表,第1级页目录由线 性地址的最高2位索引, 每一目录项对应1G的寻址空间,第2级页目录项以9位索引,每一目录项对应 2M的寻址空间, 第3级页目录项以9位索引,每一目录项对应4K的页帧. 除了页目录项所描述的物理地址扩展为36位外,64位和32位页目录项结构没 有什么区别. 在PAE模式下,包含PSE位的中级页目录项所对应的页面从4M减少为2M. /*JustanyarbitraryoffsettothestartofthevmallocVMarea:the *current8MBvaluejustmeansthattherewillbea8MB"hole"after the

