0

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

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

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

4

1 回答 1

0

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

于 2013-05-17T20:38:18.017 回答