令牌始终只有一个。
1.第一次: H成功申请令牌,一段时间释放。 M无申请,L申请成功把持令牌,然后开始发起较长一段时间任务调度挑战测试..
2.调度测试中:系统按照优先级高低规则,CPU先分给H,而H非法发起申请令牌,进入阻塞挂起等待状态,任务调度器重新开始调度分配正常状态的M和L。
按照优先级别,在预定的优先级中为第2,应该轮到M执行了,但万万没想到,经过H的那一波,L受到令牌威胁恐慌,利用令牌将自己的任务优先级提到和H一样(令牌持有时间有效)。
3.那么重新调度开始,基于L的优先级已经是H级别,大于M, L将跨过M继续执行。M处于就绪状态,等待L完成自己所有任务。
4.L完成自己任务后,释放令牌,优先级恢复到最低。
系统检测到有任务优先级发生跨度改变,调度器刷新,重新开始分配调度。现在处于优先级最高的H先执行,发起申请令牌,成功申请,从阻塞挂起态转回运行态,开始执行。
此时,三个任务回归原始状态。
...
5.一段时间后,H完成任务,归还令牌,轮到优先级第二的M执行......
...互斥量便是这张唯一的令牌。