嵌入式操作系统
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.3.2 核心线程调度时机

在V1.0的实现中,只有在两个时机会发生核心线程的重调度:

(1)系统时钟中断处理程序结束后;

(2)调用WaitForThisObject或WaitForThisObjectEx函数,等待系统核心对象的时候。

而在V1.5的实现中,运行调度程序的时机比V1.0的实现增加了很多,这样可大大提高系统的实时性。在V1.5的实现中,下列情况下会发生核心线程的重调度:

(1)系统时钟中断;

(2)等待共享资源(调用WaitForThisObject或WaitForThisObjectEx函数);

(3)释放共享资源;

(4)线程睡眠;

(5)线程睡眠结束;

(6)线程创建;

(7)线程结束;

(8)任何设备的中断服务程序结束时。

一旦重新调度,系统中处于KERNEL_THREAD_STATUS_READY状态的具有最高优先级的核心线程便可得到CPU,从而尽快投入运行。