Linux内核高端内存

小微 科技Linux内核高端内存已关闭评论131字数 650阅读模式
摘要Linux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。段页式机制如下图。Linux内核地址空间划分...

Linux内核地址映照模型

x86 CPU采取了段页式地址映照模型。过程代码中的地址为逻辑地址,经由段页式地址映照后,才真正走访物理内存。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2927.html

段页式机制如下图。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2927.html

Linux内核地址空间划分文章源自微观生活(93wg.com)微观生活-https://93wg.com/2927.html

通常32位Linux内核地址空间划分03G为用户空间,34G为内核空间。注意这里是32位内核地址空间划分,64位内核地址空间划分是不同的。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2927.html

Linux内核高端内存的由来文章源自微观生活(93wg.com)微观生活-https://93wg.com/2927.html

当内核模块代码或线程走访内存时,代码中的内存地址都为逻辑地址,而对应到真实的物理内存地址,需要地址一对一的映照,如逻辑地址0xc0000003对应的物理地址为0x3,0xc0000004对应的物理地址为0x4,… …,逻辑地址与物理地址对应的关系为文章源自微观生活(93wg.com)微观生活-https://93wg.com/2927.html

物理地址 = 逻辑地址 – 0xC0000000文章源自微观生活(93wg.com)微观生活-https://93wg.com/2927.html

假定依照上述简单的地址映照关系,那么内核逻辑地址空间走访为0xc0000000 ~ 0xffffffff,那么对应的物理内存规模就为0x0 ~ 0x40000000,即只能走访1G物理内存。若机器中安装8G物理内存,那么内核就只能走访前1G物理内存,后面7G物理内存将会没法走访,由于内核的地址空间已经全体映照到物理内存地址规模0x0 ~ 0x40000000。即便安装了8G物理内存,那么物理地址为0x40000001的内存,内核该如何去走访呢?代码中必需要有内存逻辑地址的,0xc0000000 ~ 0xffffffff的地址空间已经被用完了,所以没法走访物理地址0x40000000文章源自微观生活(93wg.com)微观生活-https://93wg.com/2927.html

以上就是微观生活(93wg.com)关于“Linux内核高端内存”的详细内容,希望对大家有所帮助!文章源自微观生活(93wg.com)微观生活-https://93wg.com/2927.html 文章源自微观生活(93wg.com)微观生活-https://93wg.com/2927.html

 
小微
  • 版权声明: 本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:81118366@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
  • 转载请务必保留本文链接:https://93wg.com/2927.html