在32位系统中,内核地址空间从0xC0000000开始,前896M叫做内核逻辑地址,后128M叫做内核虚拟地址。内核逻辑地址与物理内存进行线性映射,而内核虚拟地址则进行动态映射。那为什么需要这128M的内核虚拟地址?
假设你的机器有2G的内存,如果不存在内核虚拟地址,内核地址空间全部采用线性映射的方式映射到物理内存的头1G,要知道物理内存是有可能被各个用户进程使用的,这就可能导致当内核想分配内存的时候,会发现物理内存的头1G已经没有空闲内存了,而后1G却有空闲空间,但是此时内核是无法触及后1G的物理内存的,因此这时候就需要内核虚拟地址,通过动态映射来使用全部的物理内存。
至于64位系统就不存在这样的问题了,因为内核地址空间远大于实际的物理内存。
阅读(2244) | 评论(0) | 转发(0) |