linux的high memory

线性地址

这里掠过分段和分页的概念

线性地址概念:线性地址是分段变换后的地址

以下是啰嗦把版本的,

CPU在保护模式下(保护模式是什么?),“段基址+段内偏移地址”叫做线性地址(是用分段来管理虚实地址转换吧,一直疑问分段在linux中应用),如果没开分页的话,线性地址则是物理地址;而如果开了分页,线性地址=虚拟地址,

high memory

这里以32位来讲,有high memory原因是CPU寻址位数不够,导致寻址空间不足(有点抽象,有没有例子),,,而64位系统下不会有high memory

以linux为例子,32位的CPU,最大寻址范围为2^32 - 1也就是4G的线性地址空间,Linux人为的规定把4G虚拟地址空间(32位地址最多寻址4G)分为3G+1G,

也就是说,kernal拥有1G的地址空间,用户态拥有3G的地址空间,(内核空间实际上只有839MB,其中100多MB预留给硬件)

或者说,kernel可以寻址1G.这里问题来了,如果系统占用超过了1G,则规定超过寻址空间的部分,是high memory,相反的,能直接访问到的是low memory,

总结:high memory是指物理内存中内核空间不能直接访问到的部分

high memory 和low memory的访问方法

low memory采用最简单的 物理地址+偏移=kernel虚拟地址空间

high memory部分,linux先预留了128MB来进行动态寻址,(具体怎么动态寻址呢TODO)

mapping

mapping是干嘛的呢,内核mapping可以分为临时mapping和永久mapping

参考资料

  1. [线性地址](https://www.zhihu.com/question/29918252)
  2. [high memory](https://blog.csdn.net/windyf2013/article/details/80787672)
  3. 才发现understanding the linux kernel里也有..

TODO

  1.  linux中分段的应用
  2. 保护模式的定义
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值