UcosII 共享资源的锁机制的处理

在使用UcosII编写程序时,共享资源的处理至关重要,包括关中断/开中断、调度器上锁/解锁和信号量机制。信号量分为二进制和计数型,用于管理资源的并发访问。互斥型信号量则解决了优先级反转问题。死锁是需要避免的,通过规定资源获取顺序或设定超时时间可以防止死锁的发生。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                使用Ucosii操作系统编写应用程序时,会经常使用到全局变量等共享资源。若在使用时,如对全局变量的同时的读写操作,可能会造成程序的崩溃,故在使用全局变量时,要对其进行锁或互斥处理。另,如果函数可以进行修改,则可通过函数的可重入性,即传形参使用局部变量,而避免使用全局变量。

共享资源处理简介:

(1)关中断/开中断          关、开中断是独占共享资源最简单也是最快捷的方法。μC/OS-Ⅲ访问系统内部的变量和数据结构时,绝大部分使用的就是这种方法,一次来确保操作的“原子性”。这种方法也是任务和中断服务程序共享变量或数据结构的唯一方法。          使用这种方法时,只要关中断时间比系统本身关中断时间短(或相同),就不会增加中断延迟。然而尽管如此,仍要尽量避免关中断,因为这将影响到系统对实时事件的响应能力。

 (2)给调度器上锁/解锁          如果任务不需要和中断服务程序共享变量或数据结构,那么可以通过给调度器上锁的方法来访问共享资源。需要注意的是,一旦给调度器上锁,即使有更高优先级的任务就绪了,也要等当前任务执行完毕,解锁后才能切换到其他任务。也就是说一旦某个任务给调度器上锁,那这个任务就成为了优先级最高的任务。 

(3)信号量  &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值