当内核拥有2GB内存时会发生什么?
从3GB的虚拟地址空间开始,894MB的直接映射将保持不变。
为vmalloc预留的临时映射会获得128 MB的虚拟内存,以及低于3GB虚拟地址的新1GB。
如下图所示。
| ------------------ | 4GB
| 128MB |
vmalloc region
| ------------------ |
| 896MB |
| ---------------- | 3GB
| 1GB |
vmalloc region
| ------------------- | 2GB
答案 0 :(得分:0)
得到了答案..
page_offset必须设置为0x80000000而不是典型的默认值 0xC0000000,这意味着所有高内存区域将映射到896MB内核内存之上。
这个PAGE_OFFSET被__pa(x)和__va(x)用于地址转换。