Warning: Undefined global variable $debug in /var/www/ourcoders/tiny4cocoa/application/controllers/baseController.php on line 124
notOnlyCRUD 2020-01-01 16:08:09 发布的技术动态 - OurCoders (我们程序员)
notOnlyCRUD
2020-01-01 16:08:09 发布
什么叫High Memory?
一句话概括就是没有永久映射到内核空间的物理地址。

注意,high memory指的是物理页,在x86(32bit)上,一般是896M以上的页(地址).
896M以下的物理页,直接与3G开始的内核地址线性映射。我们知道内核只有1G虚拟空间,线性映射(永久)用掉896M后还剩128M,内核如果想访问high memory(896M~),那就不能永久线性映射,只能在需要的时候开辟一段虚拟地址(3G+896M, 4G),用完再解除映射,别人在需要的时候可以用同样一段虚拟地址去访问别的物理页。

比如,内核从用户空间拷贝数据就是这样,用户数据肯定在高端内存,假设在1G以上,如果1G内核虚拟空间全部线性映射,那内核肯定无法访问了用户数据了,所以只能在(3G+896M, 4G)中分配地址临时映射,用完接触映射。

网页链接