2013-08-21 60 views
3

系统调用是使用软件中断(中断向量128)实现的。在罗伯茨爱书“Linux Kernel Development”中写到,中断句柄发生在中断上下文中。它还写了系统调用在进程上下文中运行,但系统调用句柄实际上是一个“中断句柄”,为什么它在不同的上下文中?系统调用与中断上下文

回答

1

您将得到与Linux内核设计混淆的平台实现。

当你在谈论Linux内核时,中断上下文是代码自己运行的地方,没有任何进程连接 - 通常用于处理来自设备的中断。进程上下文是来自用户态进程的系统调用的结果,其中运行的代码被“附加”到进程。

当你在谈论平台实现时,中断上下文可能仅仅意味着处理器处于某种中断处理程序模式。我不太了解您的平台提供任何具体的东西。

+0

可以说例如x86。中断处理程序和系统调用都以相同的方式实现。 CPU开始执行在IDT中与中断向量相关的段中找到的代码。系统调用处理程序在逻辑上绑定到用户登陆进程(我通过使用CURRENT宏假设)。对于硬件中断,它类似于另一个中断向量编号,CURRENT宏仍然指向被中断的进程。内核如何区分这两个实体,因为它们显然不一样。 – arkadish

+0

我不清楚确切的实现,但我想象内核将处理中断,找出是什么引起它并调用正确的处理程序。对于系统调用,它可能会重新启用抢占并跳转到系统调用处理程序,而对于设备中断,它可能会跳转到中断处理程序(使用CURRENT宏在这里毫无意义)。 – tangrs