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

企业网站建设招标文件网站打开速度慢是否需要升级带宽

企业网站建设招标文件,网站打开速度慢是否需要升级带宽,p2p,黄骅港金沙滩门票价格文章目录 为什么需要互斥访问?使用队列实现互斥访问休眠和唤醒机制环形缓冲区 为什么需要互斥访问? 在裸机中,假设有两个函数(func_A, func_B)都要修改a的值(a),那么将a定义为全局变…

文章目录

    • 为什么需要互斥访问?
    • 使用队列实现互斥访问
      • 休眠和唤醒机制
      • 环形缓冲区


为什么需要互斥访问?

在裸机中,假设有两个函数(func_A, func_B)都要修改a的值(a++),那么将a定义为全局变量a=0,main函数调用func_A();func_B(); 此时a的值为2。因为不存在多任务执行,代码是按照顺序执行的。

在多任务系统中,多个任务在微观上是串行执行,宏观上是并行执行的。 假设两个任务(func_A, func_B)也都要修改a的值(a++),会有什么情况呢?
首先,将修改a的值的代码a++做个拆分:
1、从内存中将a的值读到寄存器R0中;
2、修改寄存器R0的值;
3、将寄存器R0的值写回内存a中。

第一个时间片段执行 func_A,执行完第一步(从内存中将a的值读到寄存器R0中,a=R0=0),任务切换要释放CPU使用权。(任务切换之前会将现场保存下来 R0=0)
第二个时间片段执行 func_B,期间将3个步骤都执行完(a=R0=0;R0=R0+1=0+1=1; R0=a=1)后,任务切换要释放CPU使用权。
第三个时间片段,func_A接着执行,之前先将现场恢复(R0=0),执行后面两个步骤(R0=R0+1=0+1=1; R0=a=1)

在这里插入图片描述
通过上面的两个任务细分执行的过程,会发现当多个任务共用操作一个变量时,会发生异常。为了避免这种异常,引入互斥访问变量的方式。

使用队列实现互斥访问

在这里插入图片描述
当有多个任务操作变a时,为了确保每个任务操作a期间不被其他任务所影响,就调用队列来做隔离,任务B要去读a的值时直接调用队列处理好的数据即可。
队列的任务:1、关闭中断;2、环形缓冲区(操作a的值);3、链表操作;4、打开中断

当任务A调用队列关闭中断后,其他任务不会再被调度执行(相当于逻辑程序),操作完变量a之后,打开中断,此时恢复CPU调度机制。使用队列可以实现互斥访问,避免多个任务同时操作一个变量时造成的异常现象。

RTOS中 调度队列函数接口 :写队列xQueueSend,读队列xQueueReceive

休眠和唤醒机制

任务在读队列的时候会出现两种情况:
第一种情况、读到队列中的值返回;
第二种情况、队列读不到值,将任务休眠

场景:只有两个任务A和任务B,读写a的值
第一个时间片段:任务A 运行,在这个时间段中还没有调用队列修改a的值;
第二个时间片段:任务B运行,读队列,没有得到a的值,将任务B休眠;
第三个时间片段 —— 第五个时间片段:由于任务B处于休眠状态,因此任务A全速运行
第六个时间片段:任务A 写队列修改a的 值,并唤醒任务B
第七个时间片段:任务B 继续执行。
在这里插入图片描述
因此使用队列的方式,不仅能实现互斥访问,还能使用休眠和唤醒机制让CPU更高效的运行。
(注:唤醒任务B,任务B是不会马上执行,要等到下一个tick中断)

写队列的动作:1、修改 Data值;2、唤醒任务wake up
怎么知道唤醒哪个任务呢?队列链表Queue.list,将需要唤醒的任务放在链表里。

读队列的动作:1、有Data值,返回;2、无Data,休眠;
休眠:1、将任务从ReadyList移动到DelayList;2、将任务记录到Queue.list队列链表。

环形缓冲区

在这里插入图片描述
缓冲区本质上就是数组,假设这个缓冲区的长度为8,写缓冲区指针w刚开始在0的位置,每写一个val,指针w位置+(1%8),以此类推,最后的w+(8%8)。这样就形成闭环,也就是环形缓冲区。(读操作也是一样的)

由于链表的大小是有限的,所以当任务写缓冲区的时候发现已经写满了,就会将任务放到Queue.list队列链表中的list for send 链表中
在任务在读缓冲区的值时没有读出来,会将任务放到Queue.list队列链表中的list for receive 链表中

http://www.yayakq.cn/news/48774/

相关文章:

  • 建设医院官方网站网站建设流程
  • 深圳企业网站制作哪家好话费充值代理平台
  • 云南网站备案查询怎么弄公司网站
  • 做家居网站设计做设计有哪些好用的素材网站有哪些
  • 网站建设谈单技巧上海seo网站策划
  • 基于wordpress学校网站域名值多少钱
  • 培训网站建设的背景专业做网站建设公司好吗
  • ui设计较好的网站wordpress微信个人支付宝
  • 网站模版建设工具wordpress公告栏插件
  • 域名申请网站深圳富通做网站
  • 网站地图seogg服务器租用网站
  • 做四级题目的网站百度竞价入口
  • 全球十大网站访问量排名怎么做自己的发卡网站6
  • 手机版网站开发教学网站备案的服务器租用
  • 网站运营经验分享pptwordpress调用相关评论
  • 网站排名按天付费山东免费网站建设
  • 网站开发设计总结及心得体会如何在网站中加入百度地图
  • js网站大全百怎么做网站
  • 哪里做网站好视频网站直播怎么做的
  • 帮人做海报的网站wordpress 链接提交
  • 怎么免费建自己的网站做视频网站注意什么问题
  • 谁有做任务网站抖音seo优化系统招商
  • 创建网站需要注意的问题下载浙江平安建设信息系统网站
  • 华强北 做网站用php做的网站用什么数据库
  • 洛阳霞光做网站网站备案服务
  • wordpress如何自建站品牌广告和效果广告
  • 海天建设集团网站五家渠建设局网站
  • 网站seo标准30_10_郑州网站制作
  • 网站建设报价方案doc动漫建模需要学什么软件
  • 像美团这种网站怎么做的网站排版的优点