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

从零开始学硬件<10>demo源码OceanOS-CM0-B8解读

B8课程:信号量

上一课B7 用互斥锁保护“同一时刻只能一人用”的资源;

B8 用计数信号量管理“可同时被 N 个任务占用”的资源。信号量用一个计数值count管理“有多少份可用资源”;pend取走一份,post归还一份。

(图一)

阶段1:一口气进场100次(count: 100 → 0

每次 pend 时 count > 0,内核直接 count-- 返回成功,不阻塞

Enter parking OK. ← count 100→99

Enter parking OK. ← 99→98

...

Enter parking OK. ← 1→0

(图二)

阶段2:前3——车位空了,超时失败

count == 0,且 task1/2 还在 delay(3000),没有人 post。

main_task 每次:

  1. pend(500) → 挂起,最多等 500 tick(约 500ms)
  2. 超时返回错误 → 打印失败
  3. 立刻再 pend(500)……

阶段3:约t=3s——第一次离场唤醒(关键)

task1、task2 同时从 delay 醒来。此时 main_task 多半正挂在 pend 上。

以 task1 先跑为例(同优先级,顺序可能对调):

(1)task1: os_semaphore_post()

等待队列里有main_task

不把count++,而是直接唤醒main_task

触发调度

(2)main_task(优先级更高)立刻抢跑

pend成功返回

打印Enter parking OK.

pend → count仍为0 →再次挂起

(3)回到task1

打印task1:exit.

delay(1000)

(4)task2: post →再次唤醒main → OK →再挂起

打印task2:exit.

delay(1000)

(图三)

log可能有个疑问的,exit后为什么接着有ok?

看代码:task1task2先执行os_semaphore_post(&g_sem)post唤醒了正在等的main_taskOK往往紧挨在对应的exit前面,是优先级抢占造成的。

http://www.jsqmd.com/news/1318348/

相关文章:

  • 2026年喜欢视频里的背景音乐怎么保存 亲测好用的免费提取教程 - 玩机日常
  • 口碑好的青海钢结构怎么选?2026年本地市场深度调研与实用指南 - 优质品牌商家
  • 2026 年新发布:济阳可靠的客车出租公司哪家强,包下整群人出行的车,原来花这点钱就能搞定?别踩坑! - 行业推荐官【认证】
  • MATLAB多模型补偿器设计原理与实践指南
  • 改进多元宇宙算法在配电网故障定位中的应用与MATLAB实现
  • 高精度机器人CNC加工方案:实现±0.01mm精密制造
  • 独立站SEO怎么做才能快速见效
  • Win10下使用MinGW-w64+gfortran搭建Fortran77开发环境指南
  • 2026 年当下,果洛州靠谱的抽放护孔筛管厂商推荐,有了它,矿井瓦斯抽采效率直接翻3倍?90%的老工程师都没摸清的关键 - 行业推荐官【官方】
  • 2026年医药包装贴标机怎么选?杭州地区全自动打印贴标机服务商综合能力观察 - 优质品牌商家
  • Seay代码审计工具:PHP Web应用漏洞自动化检测实战指南
  • 游戏数值计算器开发实战:从期望伤害公式到养成规划工具
  • 3分钟极速导出原神成就数据:YaeAchievement完整使用教程
  • 河南顶信食品有限公司客户评价如何 - 工业品牌热点
  • C++内联函数:原理、应用与性能优化实践
  • 云GPU实战:用Hashcat与RTX 2080 Ti破解WPA2握手包全流程
  • 无蓝塞夫:当深海风味成为日常
  • 商业本质:价值竞争与交换的实践方法论
  • BootstrapBlazor v10.9.0 发布:多项功能修复与特性更新
  • 应用层协议解析:从HTTP到DNS的核心技术与优化实践
  • AI与低代码驱动的智能API管理:从Swagger导入到全局配置实战
  • 全网视频资源下载新方案:三分钟掌握跨平台智能下载工具
  • 星驰德扑:基于GTO策略的起手牌范围基础优化与实战解析
  • 2026 GEO代理商靠谱商家测评排名,选购避坑指南,实力之选 - 工业品牌热点
  • 上海机场进口医疗器械报关代理怎么选?2026年服务商综合能力观察 - 优质品牌商家
  • Python编程学习路径:从零到项目实战的完整指南
  • 深度学习中的数据结构优化与存储调度研究7
  • 沈阳中央空调维修-周边全小区覆盖-欧米到家本地师傅当日上门排查准不乱收费不返工|熟悉全城区机型管路|修后有质保|
  • 二分查找算法解析与LeetCode35题实战
  • 双馈风机虚拟惯性控制Simulink建模与调频优化