恭喜,你发布的帖子
发布于 2022-11-26 01:56:46
24楼
Trace:优先权调度细节一例
上图中,首先,温控器1正在执行0号任务。
与此同时,温控器4出现了需要优先执行的任务,并获得了优先权。但是由于当前有任务占用端口尚未执行结束,优先权需要保持,并等待任务结束后,再获得端口执行权。
虽然温控器4当前尚未获得执行权,但其内部用于标识下一个任务的变量JobNext,已经记录了接下来优先任务的序号11。
温控器1的0号任务执行结束后,温控器4获得了执行权,并执行了11号任务。任务结束后,释放优先权。
iJob,这个变量用来标识当前正在执行的任务下标。
JobNext,是根据调度规则,提前标识出接下来要执行的任务下标,而不管当前本设备是否获得执行权。
在上图最后一行中可以看到:在出现优先任务之前,本来温控器4接下来的下一个任务是0号,但是随着优先任务的出现,JobNext的值从0变成11。
被JobNext标识的任务,一旦进入执行,JobNext的值就会变为-1,视觉上会形成一个凹槽缝隙分割,用于表示下一任务的标识作用已经被释放。但此处的0号任务还未被执行,就直接被11号任务抢断,所以在JobNext的值从0变成11的交界处并没有-1这个视觉缝隙分割,以显示突发抢断的直觉效果。
上面的描述,是下图的一个局部放大。
请填写推广理由:
分享
只看
楼主