第五节:FreeRTOS 内存管理

在这里插入图片描述
信号量存在的意义(资源管理与控制)
FreeRTOS作为一个多任务系统,存在一个潜在风险。当一个任务在使用某个资源的过程中,便被切出运行态。此时如果有另一个任务或者中断来访问这个资源,则会导致数据损坏或者其他类似的错误。

例如:
访问外设如下情形,有两个任务都试图往LCD中写入数据:任务A准备往LCD中写入 Hello world,任务A被任务B抢占,但此时字符串才输出到Hello w。任务B往LCD写入Abort,Retry,Fail?然后进入阻塞态。任务A继续运行,完成剩余的字符输出orld现在LCD显示的是被破坏了的字符串Hello wAbort,Retry,Fail?orld。

例如:
读改写操作如下情形,当任务A刚完成读操作还未完成改写操作时,任务B抢占。任务B完成了对原数据的更新流程,进入阻塞态,任务A从被抢占处继续执行。其改操作仍然修改的是被B更新前的数据,并覆盖了B修改后的数据进行保存。从结果上来说相当于破坏了数据的值,使得任务B无效了。

例如:
变量的非原子访问情形,更新结构体的多个成员变量。或者更新的变量其长度超过了架构体系的自然长度(在8位机上更新32位数据)。如果这样的操作被中断,将可能岛主数据损坏或丢失。

例如:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值