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


wucongdonglai 于 2010-08-27 08:41:27发表:
4# deepwhite
有道理,讲的很清楚透彻的嘛!
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 的乱套也就会发生。
所以译文中说,中断处理程序从不执行可以导致缺页(因此意味着进程切换)的操作。个
人感觉这里说“从不执行”,其实并不太准确,可能是内核通过一些设计上的技巧避免
了这一情况的发生,因为一旦发生,就全乱了。
个人理解。
wucongdonglai 于 2010-08-26 17:30:15发表:
2# zhania
看来和我一样,哈
zhania 于 2010-08-26 11:24:00发表:
还没有看明白的功力