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

网站优化提升排名数字广东网络建设有限公司天眼查

网站优化提升排名,数字广东网络建设有限公司天眼查,中卫网站推广公司,wordpress newcon1.使用互斥信号量解决信号量导致的优先级反转#xff0c; 2.使用递归互斥信号量解决互斥信号量导致的死锁。 3.高优先级主函数中多次使用同一信号量的使用#xff0c;使用递归互斥信号量#xff0c;但要注意每个信号量的使用要对应一个释放 优先级翻转问题 优先级翻转功能需… 1.使用互斥信号量解决信号量导致的优先级反转 2.使用递归互斥信号量解决互斥信号量导致的死锁。 3.高优先级主函数中多次使用同一信号量的使用使用递归互斥信号量但要注意每个信号量的使用要对应一个释放 优先级翻转问题 优先级翻转功能需求 优先级翻转功能实现 一。实验优先级翻转问题 1.优先级翻转的解释 1有三个任务一个任务L优先级最低一个任务M优先级为中间一个任务H优先级为最高。 2刚开始任务L在运行并且L占用信号量 3H任务突然开始运行抢占L任务但是由于信号量由L占有所以进入堵塞状态CPU继续运行L任务。 4M任务突然开始运行抢占M任务M任务不需要信号量所以需要等运行完毕CPU才会分配给L。 5L不需要占用临界资源后释放信号量。H任务由堵塞态变为就绪态抢占L运行H。 2.功能需求 - 新建三个任务优先级分别为中高低 - 新建二值信号量用于模拟优先级翻转 - 低优先级任务获取信号量后被中优先级打断中优先级任务执行时间较长因为低优先级任务还未释放信号量高优先级任务就无法获取信号量继续 实现方法 1.低优先级 1获取二值信号量2循环释放CPU使用权3释放二值信号量4系统延时500ms 2.高优先级业务流程 1获取二值信号量2释放二值信号量3系统延迟500ms APItaskYIELD 3.cubemx创建工程 1创建一个高优先级的任务 2建一个二值信号量 3.步骤 1低优先级 使用二值信号量与高优先级使用的二值信号量是同一个。与高优先级相比多了一个释放CPU权限的函数taskYIELD。 printf(Low Task Take sem\n);//二值信号量的使用if(xSemaphoreTake(PrBinarySemHandle,portMAX_DELAY)pdPASS){printf(Low Task is Running\n);}for(i0;i2000000;i){//释放cputaskYIELD();}//二值信号量的释放printf(Low Task Give Sem\n);xSemaphoreGive(PrBinarySemHandle);osDelay(500); 2中优先级 不做特殊处理就是直接打印 3高优先级 与低优先级一起使用一个二值信号量 printf(High Task Take sem\n);if(xSemaphoreTake(PrBinarySemHandle,portMAX_DELAY)pdPASS){printf(High Task is running\n);}xSemaphoreGive(PrBinarySemHandle);printf(High Task Give Sem\n);osDelay(500); 结果 二。互斥信号量概念及其应用《解决上述出现的问题优先级反转问题》 互斥信号量定义 FreeRTOS互斥信号量介绍 FreeRTOS互斥信号量工作原理 1.互斥信号量的定义 短暂提升低优先级的优先级让他优先完成。  任务都有一个互斥锁 2.FreeRTOS互斥信号量介绍 Mutex包括Mutex与RecursiveMutex递归信号量解决普通信号量的死锁问题 3.FreeRTOS互斥信号量工作原理 短暂提升低优先级的优先级让他优先完成。  3.递归互斥信号量解决死锁问题 多次使用foo函数会导致死锁信号量重复使用任务把自己挂起。 解决方法递归互斥信号量 三。实验互斥信号量函数应用 1.功能需求 1、修改优先级翻转实验优化代码 2、使用互斥信号量解决优先级翻转问题 2.API 1xSemaphoreCreateMutex()创建互斥信号量 2xSemaphoreGetMutexHolder()获取当前信号量任务句柄 3.cubemx创建工程 1使能互斥信号量 2创建互斥信号量 3.步骤 把优先级反转的二值信号量改为互斥信号量就可以解决优先级反转的问题 替代地方         1低优先级信号量使用与释放处         2高优先级信号量使用与释放处 1低优先级二值信号量句柄的使用与释放修改为互斥信号量的使用与释放。 修改为 2高优先级一样 结果大量时间用来运行高优先级的任务正确。  四。实验递归互斥信号量函数应用 1.死锁现象 上述的互斥信号量如果在同一个任务的主函数中运行两次互斥信号量的使用会导致任务把自身挂起即死锁。         为了解决死锁的问题使用递归互斥信号量。 2.API 1xSemaphoreCreateRecursiveMutex() 2 xSemaphoreTakeRecursive() 3xSemaphoreGiveRecursive() 3.实验验证 需求 1、模拟死锁现象 2、使用递归互斥信号量解决死锁问题 4.cubemx创建工程 1递归互斥信号量的使能 2创建递归互斥信号量 5.步骤 1.使用上述的API接口创建与释放的递归信号量接口FREERTOS的参考手册有详细讲解函数的使用不过是英文 2.使用自己创建的递归信号量 1创建出来的递归互斥信号量 2高优先级如果直接使用互斥信号量这样使用两次会导致死锁使用递归互斥信号量就会解决此类问题。 //递归互斥信号量改为自己设置的信号量printf(High Task Take sem1\n);if(xSemaphoreTakeRecursive(myRecursiveMutexHandle,portMAX_DELAY)pdPASS){printf(High Task is running1\n);}printf(High Task Take sem2\n);if(xSemaphoreTakeRecursive(myRecursiveMutexHandle,portMAX_DELAY)pdPASS){printf(High Task is running2\n);}xSemaphoreGiveRecursive(myRecursiveMutexHandle);printf(High Task Give Sem1\n);xSemaphoreGiveRecursive(myRecursiveMutexHandle);printf(High Task Give Sem2\n);osDelay(500); 3低优先级注意使用与高优先级一样的信号量 结果高优先级占用CPU比率大正确 五。互斥信号量实现原理
http://www.w-s-a.com/news/933152/

相关文章:

  • 做外贸要做什么网站服装设计图
  • 中山市路桥建设有限公司网站网站开发角色分配权限
  • 加强档案网站建设网站搭建好了不用会不会被攻击
  • 维护网站信息网络建设服务
  • 网站建设策划书模板下载用自己电脑配置服务器做网站
  • 360免费建站空间淘宝数据网站开发
  • 做分销的网站本地dede网站怎么上线
  • 中学网站模板北京管理咨询公司
  • 网站开发用哪个软件方便二级网站建设 管理思路
  • 个人怎么创建网站中国建设银行网站口
  • 跟知乎一样的网站做展示网站步骤
  • 邯郸网站建设效果好wordpress app 加载慢
  • 做app的网站有哪些功能广州自适应网站建设
  • 兰州建设网站的网站开源网站建设
  • 深圳网站建设南山指数基金是什么意思
  • 备案中又需要建设网站网站信息组织优化
  • 做网站推广需要什么asp响应式h5网站源码下载
  • 柳州建设网官方网站免费自助建站哪个平台好
  • 论坛网站模板源码下载网站建设与网页设计是什么
  • 跑流量的网站淘宝网站的建设目标是
  • 网站计费系统怎么做九一制作网站
  • 网红营销推广温州seo博客
  • 临沂网站制作定制现在比较流行的软件开发模型
  • 南宁企业建站系统做问卷调查哪个网站好
  • 能打开各种网站的浏览器推荐建设部的网站首页
  • 苏州高端网站建设开发wordpress 删除图片
  • saas网站开发外贸网站设计风格
  • c 手机网站开发湘阴网页定制
  • 阿里云虚拟主机搭建wordpressWordPress优化手机端
  • 湖北长安建设网站衡阳市做网站