【发布时间】:2015-03-29 09:32:20
【问题描述】:
我知道当中断发生时,运行的进程会被暂停,并调用中断服务程序。 current 指针指向被中断的进程,有人告诉我,当中断发生时,它不会链接到特定进程。所以我的问题是为什么只有另一个中断可以抢占现有的中断程序?
另外,当一个进程(p2)抢占另一个进程(p1)时,谁在调用schedule()方法?
【问题讨论】:
-
无论
schedule()是什么,它很可能被定时器中断调用,比如p3。如果定时器中断的优先级高于您的p2,它将中断p2,并且也将被搁置。如果不是,则p3无法启动,直到p2完成,最终控制权将返回给p1。 -
谁告诉你当中断发生时它并没有链接到特定的进程?
-
@stdcall 取决于“中断”和“链接”的含义。硬件中断在执行时没有进程状态; Excel 重新计算可能会被 NIC 中断,该 NIC 表示 BitTorrent 客户端的网络读取完成。中断处理程序必须不对它中断的进程做出任何假设。我怀疑这是 OP 所暗示的。
标签: c linux kernel interrupt context-switch