详解FreeRTOS:嵌入式多任务系统的任务等待和唤醒机制(理论篇—8)

文章讨论了IPC对象在进程间通信中的作用,包括直接返回、阻塞等待和时限等待三种访问机制,以及在资源可用时唤醒全部任务、唤醒一个任务和选择最佳任务三种唤醒策略。主流的嵌入式多任务系统倾向于采用第三种唤醒方案,确保资源的有效分配。
摘要由CSDN通过智能技术生成

当任务在试图访问IPC对象时,经常会因为运行条件不足而失败,被迫返回或者阻塞在该IPC对象的任务阻塞队列。而当有任务释放资源从而使得资源条件可以满足时,操作系统将会唤醒IPC对象上的阻塞任务,使得被唤醒任务继续运行。不同的访问等待机制和唤醒机制是各种操作系统的重要区别。

IPC对象是活动在内核级别的一种进程间通信的工具。存在的IPC对象通过它的标识符来引用和访问,这个标识符是一个非负整数,它唯一的标识了一个IPC对象,这个IPC对象可以是消息队列或信号量或共享存储器中的任意一种类型。

用于任务访问IPC对象的等待机制主要有3种:

  • 直接返回结果:任务直接返回访问结果,成功或者失败,注意因为中断不像任务那样能够被阻塞,所以中断必须采用本模式;
  • 阻塞等待模式:任务如果访问IPC对象失败,则进入该IPC对象的等待队列,直到明确得到处理;
  • 时限等待模式:任务如果得不到IPC对象,则进入等待状态并开始计时。如果在等待期间得到了IPC对象则返回操作成功;如果当计时结束时任务仍然没有成功,那么它并不会继续等下去,而是返回失败的结果。

操作系统唤醒机制主要有以下3种模式:

  • 当资源可使用时,唤醒该资源的全部等待任务。让这些任务与系统中的其他任务平等竞争资源。这种策略会使系统瞬间繁忙,在参与竞争资源的所有任务中,最终只有一个任务获取到资源,没有得到资源的任务将再次进入资源的等待队列;
  • 将该资源等待队列中的一个合适的任务唤醒。这个任务将和系统中可能访问该资源的其他任务一起竞争这个资源。如果这个任务最终没有竞争到资源,它会再次进入该资源的等待队列;
  • 操作系统从等待队列中找到一个最佳的任务并立刻把资源交给它,这样该任务直接从释放资源的那个任务那里获得资源。

目前主流的嵌入式多任务系统都采用第3种方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_44079197

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值