(注意:这不是关于中断Java/.NET线程,而是关于内核模式中断。)
嗨,
维基百科在中断处理程序文章中提到了中断线程:
中断线程 几种操作系统--例如Solaris、NetBSD、Mac、WinCE和FreeBSD --使用了不同的方案,称为中断线程。设备驱动程序提供的中断处理程序只是一个高优先级线程,它运行时启用了中断,更重要的是,可能会阻塞互斥对象。这极大地简化了在内核中的锁定。此外,中断线程可能被优先级较高的中断线程抢占.
,FreeBSD (和其他人)显然使用的中断线程技术是什么?我在哪里能读到更多关于它的书呢?
提前谢谢。:)
发布于 2010-12-29 10:44:50
硬件用中断通知操作系统某些事件。当发生错误或某些外围设备有可用的新数据时(用户按下一个键,一个数据包到达网络,计时器过期,.),就会引发这些错误。这些中断需要由系统快速处理(以便它看起来是响应的)。
它们由内核处理。通常,当一个这样的中断到达时,当前正在运行的代码将被停止,并调用内核的一个函数。必须对中断迅速采取行动,才能有响应系统,所以它们不能阻止内核等待某些资源,或者做类似的事情。经典的解决方案是有一个简单的中断函数,只需记录中断和返回的次数,然后在内核的主循环中检查是否发生了中断,并调用真正的处理程序。
由于这些中断可以被屏蔽(除了不可掩蔽的中断- NMI),内核可以在内核模式下生成一些线程,并且只让它们打开中断并处理它们。由于这些线程独立于主内核线程,所以它们可以阻塞,只要有足够的线程来处理当线程被阻塞时可能到达的中断。
发布于 2010-12-29 10:44:01
在FreeBSD的线程(9)中有一些更多的技术信息。
https://stackoverflow.com/questions/4552807
复制相似问题