前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >详解FreeRTOS:嵌入式多任务系统的任务等待和唤醒机制(理论篇—8)

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

作者头像
不脱发的程序猿
发布2023-05-26 11:00:52
3300
发布2023-05-26 11:00:52
举报

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

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

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

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

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档