当前位置: 技术问答>linux和unix
疑问1GB kernel virtual space address 只能映射到 1GB physical memory?
来源: 互联网 发布时间:2017-03-24
本文导语: http://blog.chinaunix.net/uid-13377723-id-2895975.html 其中有一节 The Problem So, the basic problem here is, the kernel can just address 1 GB of virtual addresses, which can translate to a maximum of 1 GB of physical memory. This is because the...
http://blog.chinaunix.net/uid-13377723-id-2895975.html
其中有一节
The Problem
So, the basic problem here is, the kernel can just address 1 GB of virtual addresses, which can translate to a maximum of 1 GB of physical memory. This is because the kernel directly maps all available kernel virtual space addresses to the available physical memory.
为什么只可以寻址1GB虚拟地址空间?
其中有一节
The Problem
So, the basic problem here is, the kernel can just address 1 GB of virtual addresses, which can translate to a maximum of 1 GB of physical memory. This is because the kernel directly maps all available kernel virtual space addresses to the available physical memory.
为什么只可以寻址1GB虚拟地址空间?
|
32位的地址空间只有4GB,其中0-3G是用户空间地址,3G~4G是内核空间地址
但是内核1G地址空间并不代表内核只能映射1G物理内存
内核地址的前896M是和物理地址一一映射的,只需做个简单的偏移,内核地址的后128M其实是个窗口,可以映射vmalloc分配的高端内存,所以这128M地址可以映射远超过128M的物理地址
但是内核1G地址空间并不代表内核只能映射1G物理内存
内核地址的前896M是和物理地址一一映射的,只需做个简单的偏移,内核地址的后128M其实是个窗口,可以映射vmalloc分配的高端内存,所以这128M地址可以映射远超过128M的物理地址
|
在某一时刻,虚拟地址和物理地址的对应是唯一的,所以多少虚拟地址就对应多少物理地址,但是为了访问更高内存,linux让某些虚拟地址在不同时刻对应不同的物理地址。