嵌入式导论3:资源共享
1、优先级反转(Priority Inversion)
例1:
T1的优先级要高于T2的优先级。T2在t0时刻执行P操作(获得信号量S),在t1时刻,由于T1的优先级要高于T2,T1发生抢占,T2被阻塞。
在t2时刻,T1执行P操作(此时T2持有信号量S),T1被阻塞,必须要等到T2把临界区里的任务执行完后用V操作释放信号量S后T1才能进入临界区继续执行。
例2:
优先级T1>T2>T3T3先执行,且执行P操作,进入临界区。
T2,T1依次进来,当T1执行P操作时,发生阻塞。T2会继续执行。
T2执行完后,T3继续执行,执行V操作释放临界区资源,这时候T1被唤醒。这样,T1的优先级比T2高,但是T2却先于T1执行,就会造成优先级反转。