linux 页面映射的过程,Linux页面表的过程

您可以在/ proc / PID / smaps中看到进程的所有映射.这告诉您在不获取SIGSEGV的情况下可以访问的内容.

这与cr3页表不同,因为内核并不总是“连接”所有映射.即硬件页面错误并不总是SIGSEGV:内核页面错误处理程序检查您的进程是否逻辑上已映射该内存并更正情况,或者您是否确实违反了内存保护.

在mmap()系统调用之后,或者在进程启动以映射文本/数据/ BSS段时,您在逻辑上已经映射了内存,但Linux可能已经决定是懒惰的并且还没有提供任何物理页面. (例如,页面可能尚未在页面缓存中,因此在您尝试实际触摸该内存并出现页面错误之前无需阻止).

或者对于BSS内存,多个逻辑页面可能会开始写入映射到零的相同物理页面的写入时复制.尽管根据Unix语义,您的内存是读写的,但页表实际上只具有只读映射.编写页面会出现页面错误,内核会在新的零物理页面指向该条目,然后在出现故障的指令返回到您的进程(然后将重新运行并成功).

无论如何,这并不直接回答你的问题,但可能是你真正想要的一部分.如果你想深入了解,那么确实可以看到实际的页面表,但通常不需要这样做. smaps可以告诉你有多少映射驻留在内存中.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值