高端内存的理解

高端内存概念的目的是留出内核的一部分地址空间用来有选择的映射内存的任意部分,使内核能够使用整个内存,而不是只有1个G的内存。。
x86中,linux把4G的线性地址空间分成两份,0-3G作为用户态程序的地址空间,3-4G作为内核的地址空间。为什么只有4G的地址空间,32位最多只能表示4G,它是访问不了4G+1的位置的。我们说每一个用户态进程都应该有4G的地址空间可以用,然而内核的1G地址是所有用户态共享的。当我们把1G的内存全部一一映射到内核的1G地址上,那么内核想访问1G+1的位置怎么办,CPU当然能访问到这个位置,关键是内核根本给不了这个地址,它只有1G可用,这就限制了内核能使用多少内存,如果内核想访问更多的内存怎么办,留出一段的地址空间,(1024 - 896 ),注意首先是留出地址空间,而不是物理内存,当然这200多兆的内存也被留出来了,因为没有地方可以映射。留出来的地址空间内核可以用来映射物理高端内存(高于896M的内存)的任何地方,达到访问整个内存的目的。

转载于:https://www.cnblogs.com/lifehack/p/4833606.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值