ucos ii优先级继承实验
ucos ii优先级继承实验 --
标签: cotex-m3 it stm32学习 ucosii 初学操作系统
优先级继承的主要思想是:当高优先级任务因申请某共享资源失败被阻塞时,把当前拥有该资源的、且优先级较低的任务的优先级提升,提升的高度等于这个高优先级任务的优先级。
在ucos ii中,创建管理共享资源的互斥信号量时,可以指定一个PIP(优先级继承优先级),这个很重要,是这个实验的核心。
一个PIP可以用OSMutexCreate()函数来指定,例如mutex=OSMutexCreate(5,&err);就指定PIP的优先级为5.
例如:Task0的优先级为10,Task1的优先级为9,Task2的优先级为8;三个任务均要使用这个互斥信号量。当然,先运行的任务就会先申请到这个信号量。在这里, 假设Task0先运行。并Task1、Task2随后被创建并进入就绪态。
当Task0在使用互斥信号量并延时挂起时,此时Task2优先级最高,所以Task2运行,当想申请该资源时,被阻塞。这样又返回到Task0中,此时系统将Task0的优先级提升到5,让Task0运行并释放互斥信号量,释放该信号量后,Task0的优先级又返回原来的优先级10.
优先级的继承有以下条件
1、在启动任务前要创建互斥信号量mutex=OSMutexCreate(5,&err);即申请PIP
2、在Task0、1、2使用OSMutexPend(mutex,0,&err);函数来获得信号量的使用权;使用OSMutexPost(mutex);函数来释放互斥信号量的使用权。
查看评论 回复
"ucos ii优先级继承实验"的相关文章
- 上一篇: ucosii任务调度
- 下一篇:ucos ii的任务在何时切换