红联Linux门户
Linux帮助

关于中断和缺页疑惑

发布时间:2010-08-26 10:12:45来源:红联作者:wucongdonglai
最近在看深入理解Linux内核,看到中断和缺页的内容,有这么一句:
But interrupt handlers never perform operations that can induce page faults, and thus, potentially, a process switch.
而国内陈莉君翻译的上面是这么翻译的:
但是,中断处理程序从不执行可以导致缺页(因此意味着进程切换)的操作
我觉得这翻译好像不太合适,搞得我也不明白这究竟是一个怎么样的关系?哪位大大解释一下啊?中断和缺页究竟是什么样的关系啊
文章评论

共有 4 条评论

  1. wucongdonglai 于 2010-08-27 08:41:27发表:

    4# deepwhite
    有道理,讲的很清楚透彻的嘛!

  2. deepwhite 于 2010-08-26 20:56:50发表:

    我对内核也处在学习阶段,而且是跳着学的,没有太系统的看,所以这里仅仅说下自己的
    看法,也许不准确。

    page fault 属于一种异常,这个异常在处理的时候,如果该进程正在内核态运行,则将
    进程挂起,转而执行其他的任务,等到制定的内存可用的时候再回来执行原来挂起的任务。
    这样, page fault 的处理过程中就肯定涉及到了任务的切换。

    而可嵌套的中断则要求:在中断处理的过程中不能发生进程的切换,因为一旦发生进程的
    切换, kernel control path 就乱套了(参考你看的那本书里面 kernel control
    path)。而按照那本书中所写的,如果page fault发生在内核态,必然会引起进程切换,
    也就必然会打乱 kernel control path.

    而Linux内核本身设计的很好,自己可以保证其中断处理函数在执行过程中不会做一些引
    起 page fault 的操作,否则的话,由于中断处理函数始终运行在内核态,一旦引发
    page fault , 进程的切换也就必然会发生, control path 的乱套也就会发生。

    所以译文中说,中断处理程序从不执行可以导致缺页(因此意味着进程切换)的操作。个
    人感觉这里说“从不执行”,其实并不太准确,可能是内核通过一些设计上的技巧避免
    了这一情况的发生,因为一旦发生,就全乱了。

    个人理解。

  3. wucongdonglai 于 2010-08-26 17:30:15发表:

    2# zhania
    看来和我一样,哈

  4. zhania 于 2010-08-26 11:24:00发表:

    还没有看明白的功力