文章目录
1、优先级反转和继承
1.1、优先级反转(priority inversion)
- 1、在T0时刻,优先级为10的任务运行,
- 2、在T1时刻,Task10申请并获得了锁M,进入临界区。
- 3、在T2时刻,优先级为90的任务Task90抢占Task10,并开始运行。
- 4、在T3时刻,Task90也要申请锁M,准备进入临界区操作,但是由于该锁被Task10所持有,Task90被迫放弃CPU,Task10继续运行。
- 5、在T4时刻,优先级为50的任务Task50抢占了Task10的CPU,开始运行,此时的状态就是:
- Task90 等待 —> Taks10 等待 —> Task50
- 6、在T5时刻,Task50完成任务,释放CPU,Task10继续运行
- 7、在T6时刻,Task10释放锁M,离开临界区,Task90获取锁M继续运行。
由上可知,Task90 和Task10由于处于同一临界区的原因,会造成资源的竞争,这符合逻辑。
但是Task90 和 Task50没有竞争关系,但是Task50比Task90优先得到调度,这就