前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于page_struct中virtual指针的思考

关于page_struct中virtual指针的思考

作者头像
执生
发布2020-10-29 10:57:29
5110
发布2020-10-29 10:57:29
举报
文章被收录于专栏:立权的博客立权的博客

1.在毛德操的《Linux源代码情景分析》中,关于内存管理的一张图

其中 virtual 居然直接 指向物理页面的起始地址,不是单单根据图推断的,文章内容也是这么描述的

virtual是一个指针,从命名就能得知应该是一个逻辑地址,virtual 在代表物理页面的 结构体 page 中

根据注释,作者说, 有部分物理机的内核虚拟地址是动态地映射到物理页的,所以要用代表物理页的结构存储这个虚地址

为什么说是动态的呢?因为内核的虚拟地址加上偏移量(X86上是 3G)就可以获得实际上的物理地址,也就是虽然内核的虚地址空间在0~1G,但是实际上在物理内存上是3~4G这个区间

动态映射的话值得就是 不执行上面的简单加上偏移量的操作来算物理地址,而是通过灵活地方式完成虚拟地址到物理地址的映射(应该是内存映射表)

那么在代表物理页的结构里 存入怎么个虚拟地址也能理解了。

有对应的宏设置它。

一个应用的地方,物理页面号 pfn 左移 PAGE_SHIFT 位后得到物理页面的起始地址

__va 是把这个起始地址 简单加上某个偏移量,最后得到 virtual

最后的猜测,虽然使用了页表来映射内核区域到物理页面,但是还是基于简单的偏移量增减来映射虚拟地址到物理地址的关系

以上只是个人猜测,真相还需日后寻求证实

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档