UCOS应用 | 资源同步

定义

任务对共享资源进行访问的代码段落成为关键段落,各个任务对共享资源的访问必须保证互斥,这样才能保证资源信息的可靠性和完整性,这种使得不同任务访问共享资源时能够确保共享资源信息可靠和完整的措施成为资源同步。

资源同步有关中断、关调度、使用互斥信号量、使用计数信号量。另外对于只读特性的共享资源具有天然的完整性和可靠性。

可靠性:全局资源的更改不会使得程序出现BUG。

完整性:全局资源的读取不会使得程序出BUG。

关中断

如果需要保护的数据与中断有关,则可以采取关中断的方式。

关中断对实时性影响较大,应该使得关中断中的代码操作尽可能地简短与快速。

一般情况下对于全局资源的读写,实现定义好相同类型的资源,在关中断中进行替换,这样子是比较快速的。

关调度

如果共享资源的使用者全部都是任务,可以使用关调度的方式。

但是关调度会使得与共享资源无关的任务受到牵连,如果这些任务和ISR相关联,则对实时性影响很大。一般不建议使用关调度,用互斥信号量来代替。

使用互斥信号量

共享资源比较复杂,过程费时,如果该共享资源的使用者全部是任务,则可以采用互斥信号量的方法来访问。

**优先级反转:**低优先级任务占有共享资源,高优先级任务等待资源。

必须使用一个空闲的,高于全部使用该共享资源的任务的优先级的值来来给到优先级继承值,由此可见,优先级安排的时候留点空闲较好。

优先级反转应该背避免,危害较大,优先级继承可以较好的解决这一问题,避免在反转的时候,再被其他任务打断

使用计数信号量

当同以类型共享资源有多个实体(如多台打印机),就允许多个任务同时使用这类共享资源,但每个任务使用的共享资源实体是不同的,也就是互斥的。

嵌入式系统中,具有多个实体的功能部件很多,比如多串行口,多路A/D,等等,但每个同类实体连接的硬件往往不同,相互之间不能代替。**例如:**系统的串口拓展到三路,分别于上位机,数传电台,GPS模块连接。如果有两个任务想要与上位机通信,即使是当前三个串口空闲,这两个任务也不能并发运行。

嵌入式中完全平等的多任务共享资源基本上只有内存块了,但操作系统已经把它管理起来了。不容易再找到其他更加有意义的“使用计数信号来给你管理多实体共享资源”的例子了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值