社区
Linux_Kernel
帖子详情
CR0的PE和PG置位后,linux源码中的逻辑地址、线性地址、物理地址问题
天行健__
2013-12-24 02:28:42
看了赵老师的linux内核源码注解一书。
有一些疑惑,请大家不吝赐教。
1、这是获取一页物理内存的代码,代码中计算了某个页面的物理地址,并使用edi寄存器对改页面的对应对的物理地址进行清0。这段代码应该是在CR0的PE和PG置位后运行的,既然开启了段页存储,内核怎么会还用物理地址进行寻址操作呢?不是要经过段页转换的吗?
2、这个是释放页目录所对应页表的操作,内核代码里面使用的是相对的逻辑地址,怎么可以直接用*号操作物理内存中的页表了?不是要经过段页转换的吗?
...全文
383
2
打赏
收藏
CR0的PE和PG置位后,linux源码中的逻辑地址、线性地址、物理地址问题
看了赵老师的linux内核源码注解一书。 有一些疑惑,请大家不吝赐教。 1、这是获取一页物理内存的代码,代码中计算了某个页面的物理地址,并使用edi寄存器对改页面的对应对的物理地址进行清0。这段代码应该是在CR0的PE和PG置位后运行的,既然开启了段页存储,内核怎么会还用物理地址进行寻址操作呢?不是要经过段页转换的吗? 2、这个是释放页目录所对应页表的操作,内核代码里面使用的是相对的逻辑地址,怎么可以直接用*号操作物理内存中的页表了?不是要经过段页转换的吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
天行健__
2013-12-26
打赏
举报
回复
太让我失望了,csdn果然没有高手,还是我自己苦思冥想,想到了怎么回事。 内核把自己的代码段和数据段设为了0,内核初始化的时候就在页目录表里放了四个页表,每个页表映射4M物理内存,共映射了16M物理内存,也就是说内核的页表已经覆盖了整个物理内存,内核线性地址空间等于物理地址空间。 所以代码里面用物理地址寻址其实就是线性地址,线性地址和物理地址一一映射,完全相等,寻址时cpu的mmu单元也进行了段页转换。
天行健__
2013-12-24
打赏
举报
回复
怎么没人回啊?是觉得问题不削一顾,还是csdn都我一般菜鸟?大侠们出来。
Linux
内核学习笔记之系统启动(三)
本文深入探讨了保护模式下的
地址
映射机制之分页机制,详细介绍了
逻辑
地址
、
线性
地址
和
物理
地址
的概念及其转换过程。并通过具体实例展示了操作系统如何设置页目录和页表,以及如何利用分页机制实现内存的有效管理和隔离。
保护模式-内存寻址
本文详细介绍了
Linux
内核
源码
中
保护模式的基础概念,包括系统标志寄存器EFLAGS、控制寄存器
CR0
-3、内存管理、段变换和页变换等关键组件及其作用。深入理解这些原理对于系统级编程和内核开发至关重要。
YOLO算法户外草地垃圾清理塑料瓶目标检测数据集-782张-标注类别为塑料瓶.zip
【注:该页面底部资源详情处,可查看数据集可视化效果】 1. YOLO目标检测数据集, 适用于YOLOV5、yolov7,yolov8, yolov11, yolov13, yolo26等系列算法,含标签,已标注好,可以直接用来训练; 2. 内置data.yaml数据集配置文件,已经划分好了训练集、验证集等; 3. 数据集和模型具体情况可参考 https://blog.csdn.net/zhiqingAI/article/details/124230743?spm=1001.2014.3001.5502
项目需求.pdf
项目需求.pdf
chromedriver-mac-x64-150.0.7871.13(Beta).zip
chromedriver-mac-x64-150.0.7871.13(Beta).zip
Linux_Kernel
4,469
社区成员
17,459
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章