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

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-10 16:08:45

6

主题

131

回帖

666

积分

高级会员

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

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

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

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

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

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

功能方面:

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

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

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

约束方面:

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

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

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

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

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

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-10 16:08:45

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, 2025-5-2 02:32 , Processed in 0.111904 second(s), 60 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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