免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 995 | 回复: 1
打印 上一主题 下一主题

缺页异常处理的疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-16 17:35 |只看该作者 |倒序浏览
V2.4.0
1.下面的TEST_VERIFY_AREA什么意思,难道说(执行到此处时addr<=TASK_SIZE),有内核不能写的页存在?
2.case 1不可能发生,为什么要加上,并认为是出错?
3.case 0没有多大意义,因为如果一个area连读都不可以?
4.case 2和case 0发生的次数显然远多于其他两种,这样的switch很难让人满意?

        si_code = SEGV_ACCERR;
        write = 0;
        switch (error_code & 3) {
                default:        /* 3: write, present */
#ifdef TEST_VERIFY_AREA
                        if (regs->cs == KERNEL_CS)
                                printk("WP fault at %08lx\n", regs->eip);
#endif
                        /* fall through */
                case 2:                /* write, not present */
                        if (!(vma->vm_flags & VM_WRITE))
                                goto bad_area;
                        write++;
                        break;
                case 1:                /* read, present */
                        goto bad_area;
                case 0:                /* read, not present */
                        if (!(vma->vm_flags & (VM_READ | VM_EXEC)))
                                goto bad_area;
        }

论坛徽章:
0
2 [报告]
发表于 2006-03-17 10:49 |只看该作者
/*
* Define this if things work differently on an i386 and an i486:
* it will (on an i486) warn about kernel memory accesses that are
* done without a 'verify_area(VERIFY_WRITE,..)'
*/
#undef TEST_VERIFY_AREA

记得在ULK2的某处注释中看到, 80486 CPU的某个页读/写异常有BUG。 莫非是这个?

>1.下面的TEST_VERIFY_AREA什么意思,难道说(执行到此处时addr<=TASK_SIZE),有内核不能写的页存在?
记不清了, 应该是pte中设置不可写的话, 内核态的代码也不能写。 请知道的朋友说一说

>2.case 1不可能发生,为什么要加上,并认为是出错?
不懂

>3.case 0没有多大意义,因为如果一个area连读都不可以?
read,not present。 vma本身允许你读这块aera, 但是aera还不在内存中(例如brk或mmap的, 内核那么懒惰,直到出错才干活), 就是这个情况

>4.case 2和case 0发生的次数显然远多于其他两种,这样的switch很难让人满意?
switch的各个分支, 其发生频率跟swithc执行效率应该无关啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP