当内核正在执行context_switch()时,即当它在该函数中时,是否有其他任务可以进行系统调用?据我所知,当交换处理器状态时,在context_switch完成之前,其他代码都不能实际执行。这种理解是否正确?
后台:基本上,我想在上下文切换上交换系统调用表。我有两个版本的系统调用向量,其中一个包含修改过的sys调用代码的地址。当安排“感兴趣的过程”时,我将更新sys_call_table指针以指向新的指针。然后在交换兴趣过程时将其交换出来。
我是内核开发人员的新手,所以对我的方法的反馈也很受欢迎。 PS:我知道ptrace()并不符合我的需要。虚拟化系统调用UML样式涉及太多的上下文切换。
答案 0 :(得分:0)
我怀疑你可能在想错了。即使内核在执行context_switch时不允许其他任务进行系统调用,也只能扩展到当前正在执行的处理器。其他处理器仍然可以执行系统调用,而一个内核是上下文切换。