我知道有几种方法可以中断执行线程并将上下文交换到另一个执行线程。但是当内核从硬件接收到中断并且当前代码停止执行时。内核如何将上下文切换到另一个线程。它是否也称为简单的C例程来执行此操作?或者它是否必须执行自定义汇编代码才能实现此目的?
考虑将此内核在单处理器系统上运行。我只是处理过用户空间中的操作系统概念,所以我不太清楚内核代码是如何在较低级别上运行的。
注意:如果您想在现有内核(可能是Linux)的上下文中解释这一点,请继续!我知道我有点含糊不清地说这个问题了。
谢谢!
答案 0 :(得分:0)
如果中断没有触发挂起的上下文切换,它就会返回。如果中断确实触发了挂起的上下文切换,它将通过执行上下文切换的“调度程序”退出。 “调度程序”还根据时间片或当待处理的较高优先级线程变为可运行时进行上下文切换,通常是由于某些操作系统同步事件被发出信号。
如果允许嵌套中断,则只有初始中断可以通过调度程序退出。初始中断设置某种类型的指示符,以便任何嵌套中断都知道它们不是初始中断,也不会尝试通过调度程序退出。