什么是中断线程?

时间:2010-12-29 09:11:29

标签: kernel freebsd interrupt

(注意:这不是关于中断Java / .NET线程,而是关于内核模式中断。)

您好,

维基百科在Interrupt handler文章中有关于中断线程的说法:

  

中断线程

     

多个操作系统 - Solaris,   NetBSD,Mac OS X,WinCE和FreeBSD,   例如 - 使用不同的方案   称为中断线程。一个   中断处理程序由   设备驱动程序只是一个高优先级   与中断一起运行的线程   启用,更重要的是,可能   阻止互斥锁。这很大   简化了内核中的锁定。   此外,中断线程可能是   被更高优先级的中断抢占   线程。

FreeBSD(以及其他)显然使用的中断线程的这种技术是什么?我在哪里可以阅读更多相关信息?

提前致谢。 :)

2 个答案:

答案 0 :(得分:3)

硬件通过中断向操作系统通知某些事件。当发生错误或某些外围设备有新数据可用时(用户按下一个键,一个数据包到达网络,一个计时器到期,......),它们可以被引发。这些中断需要由系统快速处理(以便它看起来响应)。

它们由内核处理。通常,当一个这样的中断到来时,停止当前运行的代码,并调用内核的功能。必须快速执行中断以获得响应系统,因此它们不能阻止内核等待某些资源,或者执行类似的操作。经典的解决方案是使用一个简单的中断函数来记录中断和返回的次数,然后在内核的主循环中检查是否发生了任何中断并调用真正的处理程序。

由于可以屏蔽这些中断(除了不可屏蔽的中断 - NMI),内核可以在内核模式下生成一些线程,并且只让它们取消屏蔽中断并处理它们。由于这些线程独立于主内核线程,因此只要有足够的线程来处理线程被阻塞时可能到达的中断,它们就可以阻塞。

答案 1 :(得分:1)

FreeBSD的ithread(9)还有一些技术信息。