免费注册 查看新帖 |

Chinaunix

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

[内存管理] linear的非共享页面写入操作为什么是创建anon类型的页面? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-17 08:45 |显示全部楼层 |倒序浏览
在handle_pte_fault()中,将会根据pte和vma的状态来判断创建对应的FILE_MAPPING和ANON 页面,
handle_pte_fault
                if (pte_none(entry)) {
                        if (vma->vm_ops) {
                                if (likely(vma->vm_ops->fault))
                                        return do_linear_fault(mm, vma, address,pte, pmd, flags, entry);
                        }
                        return do_anonymous_page(mm, vma, address,pte, pmd, flags);
本人理解,包括网上帖子描述do_linear_fault主要是用来创建FILE_MAPPING页面的,
do_linear_fault
->__do_fault
                /*Should we do an early C-O-W break?  */
        page = vmf.page;
        if (flags & FAULT_FLAG_WRITE) {
                if (!(vma->vm_flags & VM_SHARED)) {
                        page = cow_page;
                        anon = 1;
                        copy_user_highpage(page, vmf.page, address, vma);
                        __SetPageUptodate(page);

在这里,为啥COW的写入是非VM_SHARED类型,就是ANON类型页面,如果是VM_SHARED类型,就是FILE_MAPPING页面呢?

谢谢!

论坛徽章:
0
2 [报告]
发表于 2014-06-17 12:58 |显示全部楼层
谢谢njuzhyf和humjb_1983。

在创建file map映射时,如果不设置MAP_SHARE,是不是就是不带vm_share的flag? 这个私有映射的场景是哪种情况?

对于filemapping,也可能存在写的情况,写一个file的page cache不反应到文件中去,难道还反应到anon页面上去?

如果要是private page写,为啥就不是到COW那里一起处理创建新anon页面操作呢?

这里我肯定是有个地方没转过弯来,不知道哪个地方概念搞糊涂了。

论坛徽章:
0
3 [报告]
发表于 2014-06-17 14:57 |显示全部楼层
humjb_1983 发表于 2014-06-17 14:40
“如果不设置MAP_SHARE,是不是就是不带vm_share的flag”---对的,私有映射场景很多吧,如果不想mmap的区 ...


如果说不带VM_SAHRE的是私有映射,走的就是anon的映射分支。但那么带MAP_SHARE也是mmap常用的参数,这里面也可能是share的anon页面。  所以为什么!VM_SHARE就是anon私有映射页面,而VM_SHARE就变成是文件映射 page呢?两者为啥就不是同一种类型的anon映射页面呢?

论坛徽章:
0
4 [报告]
发表于 2014-06-17 18:18 |显示全部楼层
回复 8# njuzhyf


    那对于一个file映射,如果此时进程要写入这个页面,那么创建新的page页面是什么类型? 因为file mapping的页面也可能要写入到磁盘的。

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


代码的意思是你说的,但这就是我困惑的地方: 对于文件的映射,都必须设置共享映射,才能把数据同步到磁盘上去吗?如果设置文件为私有映射,因为是匿名页,就无法同步到磁盘上去? 是这样规定的吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP