上下文切换

【勇芳软件工作室】汉化HomePreviousNext

调度程序为每个优先级维护一个可执行线程队列。这些被称为【准备好的线程】.当处理器可用时,系统执行【上下文切换】.上下文切换中的步骤如下:

保存完成执行的线程的上下文。

2.将队列末尾执行的线程作为优先级。

找到包含就绪线程的最高优先级队列。

4.删除队列头部的线程,加载其上下文并执行。

以下类的线程没有准备好线程。

*使用CREATE_SUSPENDED标志创建的线程

*使用SuspendThreadSwitchToThread功能执行期间,线程停止

*线程等待同步对象或输入。

在暂停或阻止的线程准备好运行之前,调度程序不会为其分配任何处理器时间,而不考虑其优先级。

上下文切换的最常见原因是:

*时间片已经过去了

*具有较高优先级的线程已经准备好运行了。

*正在运行的线程需要等待。

当正在运行的线程需要等待时,它会放弃剩下的时间片。