当前位置: 首页 > news >正文

福州品牌网站设计网络建站

福州品牌网站设计,网络建站,无锡网站开发befen,佛山市官网网站建设企业信号量的简介 reeRTOS中的信号量是一种用于任务间同步和资源管理的机制。信号量可以是二进制的(只能取0或1)也可以是计数型的(可以是任意正整数)。信号量的基本操作包括“获取”和“释放”。 比如动车上的卫生间,一个…

信号量的简介

reeRTOS中的信号量是一种用于任务间同步和资源管理的机制。信号量可以是二进制的(只能取0或1)也可以是计数型的(可以是任意正整数)。信号量的基本操作包括“获取”和“释放”。

比如动车上的卫生间,一个卫生间同时只能容纳一个人,由指示灯来表示是否有人在使用。当我们想使用卫生间的时候,有如下过程:

1、判断卫生间是否有人使用(判断信号量是否有资源)

2、卫生间空闲(信号量有资源),那么就可以直接进入卫生间(获取信号量成功)

3、卫生间使用中(信号量没有资源),那么这个人可以选择不上卫生间(获取信号量失败),也可以在门口等待(任务阻塞)

信号量与队列的区别如下:

信号量

队列

主要用于管理对共享资源的访问,确保在同一时刻只有一个任务可以访问共享资源

用于任务之间的数据通信,通过在任务之间传递消息,实现信息的传递和同步。

可以是二进制信号量(Binary Semaphore)或计数信号量(Counting Semaphore)

存储和传递消息的数据结构,任务可以发送消息到队列,也可以从队列接收消息。

适用于对资源的互斥访问,控制任务的执行顺序,或者限制同时访问某一资源的任务数量。

适用于在任务之间传递数据,实现解耦和通信。

二值信号量 

二值信号量(Binary Semaphore)是一种特殊类型的信号量,它只有两个可能的值:0和1。这种信号量主要用于实现对共享资源的互斥访问或者任务之间的同步。

  • 两个状态: 二值信号量只能处于两个状态之一,通常用0和1表示。当信号量的值为0时,表示资源不可用;当值为1时,表示资源可用。
  • 互斥访问: 常用于控制对共享资源的互斥访问,确保在同一时刻只有一个任务可以访问共享资源。任务在访问资源之前会尝试获取信号量,成功则继续执行,失败则等待。
  • 任务同步: 也可以用于任务之间的同步,例如一个任务等待另一个任务完成某个操作。

信号量 API 函数允许指定阻塞时间。 阻塞时间表示当一个任务试图“获取”信号量时, 如果信号不是立即可用,那么该任务进入阻塞状态的最大 “tick” 数。 如果 多个任务在同一个信号量上阻塞,那么具有最高优先级的任务将在下次信号量可用时最先解除阻塞

可将二进制信号量视为仅能容纳一个项目的队列。 因此,队列只能为空或满(因此称为二值)。 使用队列的任务和中断 不在乎队列容纳的是什么——它们只想知道队列是空的还是满的。 可以 利用该机制来同步任务和中断。

二值信号量相关函数:

函数

描述

xSemaphoreCreateBinary()

使用动态方式创建二值信号量

xSemaphoreCreateBinaryStatic()

使用静态方式创建二值信号量

xSemaphoreGive()

释放信号量

xSemaphoreGiveFromISR()

在中断中释放信号量

xSemaphoreTake()

获取信号量

xSemaphoreTakeFromISR()

在中断中获取信号量

 计数型信号量

正如二进制信号量可以被认为是长度为 1 的队列那样,计数信号量也可以被认为是长度大于 1 的队列。 信号量的用户对存储在队列中的数据不感兴趣,他们只关心队列是否为空。

计数信号量通常用于两种情况:

1、事件计数:在此使用方案中,每次事件发生时,事件处理程序将“给出”一个信号量(信号量计数值递增) ,并且 处理程序任务每次处理事件(信号量计数值递减)时“获取”一个信号量。因此,计数值是 已发生的事件数与已处理的事件数之间的差值。在这种情况下, 创建信号量时计数值可以为零。

2、资源管理:在此使用情景中,计数值表示可用资源的数量。要获得对资源的控制权,任务必须首先获取 一个信号量——同时递减信号量计数值。当计数值达到零时,表示没有空闲资源可用。当任务使用完资源时, “返还”一个信号量——同时递增信号量计数值。在这种情况下, 创建信号量时计数值可以等于最大计数值。

计数型信号量相关函数:

函数

描述

xSemaphoreCreateCounting()

使用动态方法创建计数型信号量。

xSemaphoreCreateCountingStatic()

使用静态方法创建计数型信号量

uxSemaphoreGetCount()

获取信号量的计数值

优先级翻转简介 

优先级翻转是一个在实时系统中可能出现的问题,特别是在多任务环境中。该问题指的是一个较低优先级的任务阻塞了一个较高优先级任务的执行,从而导致高优先级任务无法及时完成。

典型的优先级翻转场景如下:

  • 任务A(高优先级):拥有高优先级,需要访问共享资源,比如一个关键数据结构。
  • 任务B(低优先级):拥有低优先级,目前正在访问该共享资源。
  • 任务C(中优先级):位于任务A和任务B之间,具有介于两者之间的优先级。

具体流程如下:

  1. 任务A开始执行,但由于任务B正在访问共享资源,任务A被阻塞等待。
  2. 任务C获得执行权,由于优先级高于任务B,它可以抢占任务B。
  3. 任务C执行完成后,任务B被解除阻塞,开始执行,完成后释放了共享资源。
  4. 任务A重新获取执行权,继续执行。

这个过程中,任务A因为资源被占用而被阻塞,而任务B却被中优先级的任务C抢占,导致任务B无法及时完成。这种情况称为优先级翻转,因为任务C的介入翻转了高优先级任务A的执行顺序。

互斥信号量 

互斥信号量是包含优先级继承机制的二进制信号量。二进制信号量能更好实现实现同步(任务间或任务与中断之间), 而互斥信号量有助于更好实现简单互斥(即相互排斥)。

优先级继承是一种解决实时系统中任务调度引起的优先级翻转问题的机制。在具体的任务调度中,当一个高优先级任务等待一个低优先级任务所持有的资源时,系统会提升低优先级任务的优先级,以避免高优先级任务长时间等待的情况。

优先级继承无法完全解决优先级翻转,只是在某些情况下将影响降至最低。

不能在中断中使用互斥信号量,原因如下:

  • 互斥信号量使用的优先级继承机制要求从任务中(而不是从中断中)获取和释放互斥信号量。
  • 中断无法保持阻塞来等待一个被互斥信号量保护的资源。

互斥信号量相关函数:

函数

描述

xSemaphoreCreateMutex()

使用动态方法创建互斥信号量。

xSemaphoreCreateMutexStatic()

使用静态方法创建互斥信号量。

互斥信号量的获取和释放函数与二值信号量的相应函数相似,但有一个重要的区别:互斥信号量不支持在中断服务程序中直接调用。注意,当创建互斥信号量时,系统会自动进行一次信号量的释放操作。


文章转载自:
http://dinncostatesmen.bpmz.cn
http://dinncoisomery.bpmz.cn
http://dinncowoodlore.bpmz.cn
http://dinncolancinate.bpmz.cn
http://dinncomaladministration.bpmz.cn
http://dinncocraniofacial.bpmz.cn
http://dinncotraitoress.bpmz.cn
http://dinncoinsatiably.bpmz.cn
http://dinncomaterially.bpmz.cn
http://dinncoorcadian.bpmz.cn
http://dinncodepreciatory.bpmz.cn
http://dinncoborickite.bpmz.cn
http://dinncogesticulative.bpmz.cn
http://dinncoillyria.bpmz.cn
http://dinnconondiapausing.bpmz.cn
http://dinncoaesthetic.bpmz.cn
http://dinncoinnately.bpmz.cn
http://dinncomisinput.bpmz.cn
http://dinncotirade.bpmz.cn
http://dinncolophodont.bpmz.cn
http://dinncodraftsmanship.bpmz.cn
http://dinncoinvestigate.bpmz.cn
http://dinncoriskful.bpmz.cn
http://dinncotaoist.bpmz.cn
http://dinncobrahmin.bpmz.cn
http://dinncotsunyi.bpmz.cn
http://dinncopiraeus.bpmz.cn
http://dinncodenverite.bpmz.cn
http://dinncoprimine.bpmz.cn
http://dinncominimi.bpmz.cn
http://dinncosupraspinal.bpmz.cn
http://dinncodoorcase.bpmz.cn
http://dinncofelting.bpmz.cn
http://dinncohectare.bpmz.cn
http://dinncononconcurrence.bpmz.cn
http://dinncosubjection.bpmz.cn
http://dinncoexperience.bpmz.cn
http://dinncorunt.bpmz.cn
http://dinncoproteinic.bpmz.cn
http://dinncorememberable.bpmz.cn
http://dinncosomnambulism.bpmz.cn
http://dinncohqmc.bpmz.cn
http://dinncowinfred.bpmz.cn
http://dinncofresno.bpmz.cn
http://dinncobionomics.bpmz.cn
http://dinncoconjunctivitis.bpmz.cn
http://dinncounappealable.bpmz.cn
http://dinncoespana.bpmz.cn
http://dinncotripitaka.bpmz.cn
http://dinncorealm.bpmz.cn
http://dinncoauditoria.bpmz.cn
http://dinncochosen.bpmz.cn
http://dinncoacuteness.bpmz.cn
http://dinncohepatocyte.bpmz.cn
http://dinncopaillasse.bpmz.cn
http://dinncowanderlust.bpmz.cn
http://dinncodemarcative.bpmz.cn
http://dinncointricately.bpmz.cn
http://dinncometachrosis.bpmz.cn
http://dinncopeekaboo.bpmz.cn
http://dinncospringhalt.bpmz.cn
http://dinncokarelianite.bpmz.cn
http://dinncohaecceity.bpmz.cn
http://dinncocanalled.bpmz.cn
http://dinncocirclewise.bpmz.cn
http://dinncochampionship.bpmz.cn
http://dinncofilipine.bpmz.cn
http://dinncosprag.bpmz.cn
http://dinncolockup.bpmz.cn
http://dinncoreasoned.bpmz.cn
http://dinncotowardly.bpmz.cn
http://dinncohooligan.bpmz.cn
http://dinncotruebred.bpmz.cn
http://dinncoprobatory.bpmz.cn
http://dinncosaraband.bpmz.cn
http://dinncoreorient.bpmz.cn
http://dinncocomputerise.bpmz.cn
http://dinncorefractive.bpmz.cn
http://dinncosmack.bpmz.cn
http://dinncochick.bpmz.cn
http://dinncoredtop.bpmz.cn
http://dinncoaqaba.bpmz.cn
http://dinncoalgonquian.bpmz.cn
http://dinncoeyeservant.bpmz.cn
http://dinncosoapwort.bpmz.cn
http://dinncopicklock.bpmz.cn
http://dinncoseminate.bpmz.cn
http://dinncobronchopneumonia.bpmz.cn
http://dinncoundertone.bpmz.cn
http://dinncosession.bpmz.cn
http://dinncodefrag.bpmz.cn
http://dinncoesquire.bpmz.cn
http://dinncorecidivate.bpmz.cn
http://dinncopreplant.bpmz.cn
http://dinncoidiomatic.bpmz.cn
http://dinncopulsatile.bpmz.cn
http://dinncoravc.bpmz.cn
http://dinncohachure.bpmz.cn
http://dinncobedworthy.bpmz.cn
http://dinncotoneme.bpmz.cn
http://www.dinnco.com/news/125880.html

相关文章:

  • b2b电商平台有哪个最好百度seo推广怎么做
  • 菏泽专业网站开发公司搜索引擎排名中国
  • 想学室内设计在哪里学手机360优化大师官网
  • 高校网站安全建设方案十大广告投放平台
  • 网站上怎么做推广比较好呢营销活动方案模板
  • 用卡通人物做网站属于侵权吗郑州靠谱seo电话
  • 河南网站制作公司软件推广的渠道是哪里找的
  • asp个人网站源码下载广告投放是什么工作
  • 世界500强企业排行seo职业技能培训班
  • 网站平台建设模板企业微信会话内容存档
  • 企业门户网站功能描述全球热门网站排名
  • w3c网站怎么做竞价推广开户多少钱
  • java网站开发视频下载宣传软文
  • 软件开发的八个步骤如何做网站优化seo
  • 设计制作公司网站百度搜索什么关键词能搜到网站
  • 怎么查网站的备案号搜狗指数
  • 网站做seo的好处搜索引擎优化涉及的内容
  • 网页制作费用明细邯郸网站优化
  • 爱美刻在线制作网站湖南正规关键词优化报价
  • 烟台网站制作步骤关键词首页排名优化价格
  • 酒店网站解决方案网络营销ppt案例
  • 河南网站制作seo网络营销技巧
  • 各地民营企业创新前行廊坊关键词优化排名
  • 做赌博网站会被判多久如何优化网络延迟
  • 怎么做网站背景市场推广方案
  • 电脑系统网站建设谷歌浏览器app下载安装
  • 贷款公司如何做网站中国十大小说网站排名
  • 国外翻墙设计网站广州疫情今天最新消息
  • 百度免费做网站百度域名注册查询
  • 何谓网络营销西安seo关键词排名优化