找回密码
 立即注册
查看: 1735|回复: 2

请问应该如何定义临界区的功能?

[复制链接]

6

主题

131

回帖

666

积分

高级会员

积分
666
发表于 2024-8-16 17:46:00 | 显示全部楼层 |阅读模式
有些问题没有想明白,

是否应该限制在临界区内的系统功能

比如, 是否要限制在临界区内不允许系统切换?

比如一个任务进入临界区, 然后等待一个信号, 如果让任务等待, 有可能把系统等到天荒地老

比如一个任务在临界区内,貌似运行超时或者死锁了, 是否还要让任务继续运行?

比较流行的rtos是怎么定义 临界区的 功能和约束? 请教一下大家, 谢谢!
回复

使用道具 举报 送花

已绑定手机

96

主题

7378

回帖

1万

积分

超级版主

积分
14020
发表于 2024-8-16 18:09:37 | 显示全部楼层
实时操作系统(RTOS)中的临界区是指一段代码或者一组资源,它们需要被并发访问的线程或任务独占使用,以防止竞态条件和上下文切换带来的不一致状态。临界区的管理和定义是RTOS中实现多任务环境下资源同步的关键机制之一。

功能方面:

资源保护:临界区确保当一个任务在访问共享资源时,其他任务不能同时访问该资源,从而保证了数据的一致性和系统的稳定性。

任务同步:通过临界区机制,可以实现任务间的同步,确保任务按照一定的顺序执行,避免并发操作导致的问题。

提高系统效率:通过有效的临界区管理,减少任务切换和中断的开销,提高系统的整体执行效率。

约束方面:

互斥访问:同一时间只能有一个任务处于临界区,其他任务必须等待当前任务离开临界区后才能进入。

有限等待时间:为了避免死锁,通常要求任务在等待进入临界区时不会无限期等待,即要有一定的时间限制。

快速进出原则:为了降低对系统性能的影响,要求任务尽可能快地完成临界区内的操作并释放控制,避免长时间占用临界区。

优先级反转预防:在多任务环境中,低优先级任务持有临界资源时,高优先级任务应能及时抢占,否则可能导致优先级高的任务被低优先级任务阻塞,即所谓的优先级反转现象。

综上所述,临界区在RTOS中的主要功能是提供资源保护、任务同步以及提升系统效率。而为了保证这些功能的有效实施,临界区的管理需要遵循互斥访问、有限等待时间、快速进出原则以及预防优先级反转等约束条件。通过对临界区的有效管理,RTOS能够确保多任务环境下的资源安全和系统稳定运行。

1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

6

主题

131

回帖

666

积分

高级会员

积分
666
 楼主| 发表于 2024-8-17 07:49:06 | 显示全部楼层
Debu*** 发表于 2024-8-16 18:09
实时操作系统(RTOS)中的临界区是指一段代码或者一组资源,它们需要被并发访问的线程或任务独占使用,以防 ...

考虑实现上, 临界区以内核标志来实现, 因为切换任务服务可以检查标志
可以做到临界区内切换任务调用无效, 也就是临界区内不能切换任务,但不中断抑制.

那资源互斥 在任务级 可以用临界区保护

死锁保护用任务运行超时
(优先级继承,这个属于加强,8位机考虑暂不实现,资源优先级比较耗费资源,8位机上data比较少,xdata实现堆和动态分配也很难保证空间回收。。。)

在运行级已管理情况下(中断内核管理出入口,全局维护任务/中断/嵌套中断运行级别)
总结 1.任务级用内核标志 比如, FRSW.F_CS)
       2.中断级用关总中断
       API内自动判断,任务和中断临界区独立, ISR_NMI本身就是临界区。

可能说得不太准确,先按照这个思路实现, 谢谢指导:)

回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-9-21 01:09 , Processed in 0.068410 second(s), 50 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表