SDLu的uCOS II 入门学习笔记(6)互斥信号量.doc

SDLu的uCOS II 入门学习笔记(6)互斥信号量.doc

ID:53314603

大小:156.00 KB

页数:2页

时间:2020-04-03

SDLu的uCOS II 入门学习笔记(6)互斥信号量.doc_第1页
SDLu的uCOS II 入门学习笔记(6)互斥信号量.doc_第2页
资源描述:

《SDLu的uCOS II 入门学习笔记(6)互斥信号量.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、S.D.Lu的uC/OSII入门学习笔记(6):互斥信号量在该系列笔记前面篇章中,我刻意跳过了互斥信号量的介绍,是有原因的。该系列笔记面向的是初学者,信号量通信是学习者初次接触任务同步的相关内容,后面还有消息邮箱和消息队列。因为互斥信号量的内容还会涉及到优先级反转的内容,对初学者来说相对复杂。所以,先学习完消息邮箱和消息队列的基本应用之后,再回过头学习互斥信号量的内容会比较好。本篇实验将在第(3)篇的基础上进行,仍然是运行两个任务,每个任务控制一个LED的亮灭。问题的提出在可剥夺型内核中,当任务以独占式使用共享资源时,会出现低优先级任务先于高

2、优先级任务被运行的现象,这就是任务优先级反转。一般来说,在实时系统中不允许出现这种现象,因为它破坏了任务执行的预期顺序,可能要导致严重后果。关于这个现象的详细描述,请仔细阅读任哲《嵌入式实时操作系统μCOS-II原理及应用》(第2版)第五章5.4.1节。其中例子基本描述是这样的,有A、B、C三个任务,它们的优先级别A>B>C,而且A和C共享一个独占式资源S。当C占用该资源时,如果此时A申请访问资源S,那么A由于等待资源S而得不到运行。这样,任务B就可能超越任务A优先得到运行。任务C占用资源的时间越长,A就会被阻塞越久。解决问题的办法之一是,使

3、获得信号量任务的优先级别在使用共享资源期间暂时提升到所有任务最高优先级的高一个级别上,以使该任务不被其他任务所打断,从而能尽快地使用完共享资源并释放信号量,然后再回复该任务原来的优先级别。引入互斥型信号量,就是为了解决上述问题的。在上一篇例3-2的基础上进行修改。例6-1将app.c中的内容改为如下:2/2编译下载,运行程序,结果和例3-2相同,LED2闪烁2次后LED1闪烁1次,如此循环,而且两路LED不会同时被点亮(刚开始上电的时候有可能同时被点亮,取决于初始化函数)。需要注意的是,本例中用到了互斥信号量及相关函数等,所以在os_cfg.

4、h配置文件中必须将OS_MUTEX_EN置1,如下图:几个相关的函数原型如下:本例非常简单,而且并没有体现互斥信号量的作用。优先级反转现象不可能出现在只有两个任务的系统中。本例展示的只是,如何定义互斥信号量,以及互斥信号量的申请、发送的操作。它的操作和一般信号量非常相似。那么,在什么情况下使用互斥型信号量呢?1.用户任务数超过2个;2.两个共享同一资源的任务的优先级不连续。总的来说,在有可能出现优先级反转的情况下,使用互斥型信号量。深入了解互斥型信号量的相关知识,请参考任哲《嵌入式实时操作系统μCOS-II原理及应用》(第2版)第五章5.4节

5、的相关内容。作者:S.D.Lu深圳2014-6-122/2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。