为什么中断处理程序正在执行时不能执行上下文切换?更具体地说,在linux内核中,中断处理程序在被中断的进程的上下文中运行。为什么不可能在中断处理程序中执行上下文切换来安排另一个进程?中断处理程序中的上下文切换
4
A
回答
7
在多处理器上,上下文切换当然可以在中断处理程序执行时发生。事实上,这是很难预防的。
在单CPU机器上,根据定义,它一次只能运行一个控制线程。它只有一个寄存器组,一个ALU等。所以如果中断处理程序正在运行,那么根本没有资源可以执行上下文切换。
现在,如果你的意思是,中断处理程序实际上是否可以调用上下文切换代码,并且会使发生,那么,我想在一些可以工作的系统上。但对大多数人来说,这不会有太多的价值,而且很难安排。 CPU以高优先级运行,并且该优先级不能降低或中断级之间的同步丢失。操作系统中的关键部分已经与中断执行同步,这会引入复杂性。此外,上下文切换通过改变堆栈发生,就像在线程用户模式程序中一样,所以很难想象当需要中断堆栈来从中断返回时如何发生这种情况。
3
一对夫妇的原因,我想,这取决于你的问题的含义是:
中断通常是硬件交互。硬件通常是时间敏感的,所以操作系统不能停止在某件事情中处理它,并在感觉到它时回来。
中断发生在特殊的中断上下文中,而不是常规的过程上下文。由于它不在一个进程中,因此它不会像正常进程那样受上下文切换的影响。
可能会有更好,更深入的解释,但这是我对此事的理解程度。
相关问题
- 1. 如何在中断处理程序中进行上下文切换?
- 2. 线程上下文切换vs进程上下文切换
- 3. 在中断处理程序
- 4. python如何处理线程锁定/上下文切换?
- 5. 程序集编程和中断处理
- 6. 如何在多核处理器上完成线程的上下文切换?
- 7. 从进程上下文切换切换线程上下文有多好?
- 8. BlockingQueue中的上下文切换开销
- 9. 如何在netty中的2组处理程序之间切换
- 10. 在e4 rcp中处理程序的切换图像
- 11. 在批处理文件中创建切换“切换”
- 12. x86:中断处理程序循环
- 13. Linux分页和中断处理程序
- 14. CodeSourcery CS3中断处理程序覆盖
- 15. 调度中断处理程序
- 16. 异常处理上下文切换和SEH
- 17. 线程之间的上下文切换
- 18. 在javascript中的onclick事件处理程序上切换布尔变量
- 19. ARM如何在IRQ处理程序中切换到svc模式?
- 20. 在应用程序模板中启用上下文处理器
- 21. dust.js在处理程序中丢失“this”上下文吗?
- 22. 在ReverseProxy上下文中切换SSLVerifyClient
- 23. 在Linux中监视上下文切换
- 24. 在Windows中强制上下文切换
- 25. 了解中断/中断处理程序,PIC
- 26. MIPS中断不会跳转到中断处理程序
- 27. 中断处理程序是否可以被相同的中断处理程序抢占?
- 28. 在Tcl中处理下载中断
- 29. 处理程序处理消息时UI正在中断
- 30. 多线程:上下文切换
感谢您的回复。我的意思是调用schedule()的中断处理程序。您能否详细说明“很难想象当需要从中断返回中断堆栈时会发生什么?”? – Bandicoot 2011-01-19 07:06:34