考虑到操作系统,通常在内核启动之前创建计时器。并且在一些线程中内核启动后完成定时器启动。那么在哪个线程的上下文中执行定时器回调? (它是在线程的上下文中,也可以是内核的上下文?
答案 0 :(得分:2)
我不理解或不一定同意前两句话。通常,计时器回调的上下文不是请求回调的线程的上下文。它可能位于专用计时器线程的上下文中,维护计时器对象/结构的树或队列或某些线程池线程的上下文。无论哪种方式,从用户空间请求的回调都将发生在用户空间中。
对于线程设计的约束,(例如,设计必须以提示方式为输入队列提供服务),可以安排Timner回调,可以在请求它们的线程上调用。
答案 1 :(得分:0)
通常,计时器最终由硬件中断触发。硬件中断通常主要在中断发生的任何上下文中运行,通常只是将CPU切换到内核模式并切换到内核堆栈。如果我们正在谈论必须在某个特定上下文中运行的更高级别的计时器,则中断处理程序将直接或间接地安排处理程序在正确的上下文中运行。例如,它可能会将线程的状态更改为准备运行并调用调度程序。