免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: humjb_1983
打印 上一主题 下一主题

[内存管理] 内存操作时如何保证mmap相关的页回写到磁盘 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2014-06-18 16:34 |显示全部楼层
1.第一次访问mmap区间时,会触发缺页流程,分配一个page cache,将pfn写pte里,然后显示的pte_mkdirty置该页为脏;
2.接下来用户态不管怎么写这个页,都写的是page cache的页;
3.回写线程,将脏页写回磁盘后,置pte无效,这样,下次用户态再访问mmap区间后,又回到流程1

论坛徽章:
0
2 [报告]
发表于 2014-06-19 10:10 |显示全部楼层
回复 14# njuzhyf

我看的是mips的实现,手册里没说写地址,会使硬件自动给mmu对应的tlb条目置脏,不知道x86的是不是这样。
总觉得如果是这样的话,那硬件频繁置脏这个效率比较低了。

论坛徽章:
0
3 [报告]
发表于 2014-06-19 10:10 |显示全部楼层
回复 7# asuka2001
1. 就是这里。

2.  之前我说的有错,不是回写,是回收流程:
try_to_unmap_file -> try_to_unmap_one
->page_remove_rmap ->ptep_clear_flush  
如果是回写,只把dirty位清除,没有置无效。



   

论坛徽章:
0
4 [报告]
发表于 2014-06-19 10:37 |显示全部楼层
回复 17# njuzhyf
哦好的 长见识

论坛徽章:
0
5 [报告]
发表于 2014-06-19 11:05 |显示全部楼层
回复 20# humjb_1983


这个pte我觉得是当前进程的页表,硬件通过cr3的pgd找到对应的pte给他置脏,pte放的就是page的pfn + page的一些属性
pte的属性和page的属性会共享一部分

论坛徽章:
0
6 [报告]
发表于 2014-06-19 11:12 |显示全部楼层
回复 19# humjb_1983
对intel的x86是多余的 ,不过其他架构没这个硬件置脏,至少mips没有。
不知道其他架构是怎么设计的,powerpc arm
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP