互斥信号量等待操作:
1、等待互斥信号量,互斥信号量未被占有(锁定次数为0),占有过程中将信号量拥有者指向任务,并锁定次数加1;
2、等待互斥信号量,信号量被任务自身占用,将锁定次数加1;
3、等待互斥信号量,信号量被高优先级任务占用,低优先级任务欲获得信号量,则将低优先级任务插入等待队列
4、等待互斥信号量,信号量被低优先级任务占用,高优先级任务欲获得信号量,则将高优先级任务插入等待队列,将低优先级任务优先级提高与高优先级任务相同,利用优先级继承机制解决优先级反转问题。
互斥信号量释放操作:
1、没有优先级继承,将信号量释放,并直接从等待队列中唤醒任务;
2、若有优先级继承,先从等待队列中唤醒任务,释放原信号量拥有者,将其优先级恢复;
网友评论