context_switch和系统调用虚拟化

时间:2013-05-16 02:44:29

标签: linux kernel scheduling

当内核正在执行context_switch()时,即当它在该函数中时,是否有其他任务可以进行系统调用?据我所知,当交换处理器状态时,在context_switch完成之前,其他代码都不能实际执行。这种理解是否正确?

后台:基本上,我想在上下文切换上交换系统调用表。我有两个版本的系统调用向量,其中一个包含修改过的sys调用代码的地址。当安排“感兴趣的过程”时,我将更新sys_call_table指针以指向新的指针。然后在交换兴趣过程时将其交换出来。

我是内核开发人员的新手,所以对我的方法的反馈也很受欢迎。 PS:我知道ptrace()并不符合我的需要。虚拟化系统调用UML样式涉及太多的上下文切换。

1 个答案:

答案 0 :(得分:0)

我怀疑你可能在想错了。即使内核在执行context_switch时不允许其他任务进行系统调用,也只能扩展到当前正在执行的处理器。其他处理器仍然可以执行系统调用,而一个内核是上下文切换。