start_pfn, max_low_pfn, max_pfn, MAXMEM_PFN, 还有highmem_pages,....

不会画图,解释一下。 从物理内存的观点来看。最开始的大概8M左右,是内核程序段和数据段占用的空间,是保留的,不能动态分配。那个地方的地址就是start_pfn,pfn的意思是物理页框数,就是把地址转换右移12位。

max_pfn指的就是总共的物理内存数,是128M的,就是128M>>12,是3G,就是3G>>12。

max_low_pfn牵涉物理内存数量和用户配置的系统启动参数。

先说用户默认情况下,当物理内存大于896M的时候,max_low_pfn就等于896M>>12高端内存区(HIGHMEM)就从896M开始到max_pfn结束;‘当物理内存小于896M时候,max_low_pfn=max_pfn=物理内存,高端内存区就没有页面。

当用户指定高端内存区(在物理内存小于896M情况下),max_low_pfn就是用户指定的值,max_pfn仍然是实际内存大小。高端内存区就是从max_low_pfn到max_pfn。

好象用户指定的情况是为了调试。

其他的你可以自己理解一下。