• 393查看
  • 0回复

[底层软件] 你真的搞懂单片机OS的阻塞态和挂起态了么

[复制链接]


该用户从未签到

发表于 21-4-2024 08:36:31 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


操作系统的状态有两个比较容易混肴的状态:阻塞态和挂起态,对应于Autosar OS来说就是Suspended和Waiting(Autosar OS的几种状态已在<<Autosar OS及其他OS的任务间通信机制>>一文中描述),如下图所示。
你真的搞懂单片机OS的阻塞态和挂起态了么w1.jpg

那么waiting和suspended的区别到底是啥呢?waiting是等待事件发生(在μcos-ii或者freertos中,调用sleep或者等待其他任务释放资源)会让任务从运行态退出并执行任务调度,此时会发生任务切换。这个过程是任务自己触发的,而任务什么时候再次进入就绪态取决于什么时候资源得到释放。suspended是挂起态(在μcos-ii或者freertos中调用OSTaskSuspend),假如是任务自身调用的那么就会让任务从运行态退出执行任务调度,假如是其他任务调用的那么当前任务会继续处于运行态。而任务什么时候再次进入就绪态取决于其他任务(用户)什么时候调用OSTaskResume函数。如果还不是很明白,可以看下边的例子:小王和小李都是程序员。小王习惯摸鱼式工作,但是有一天他的电脑坏了,那他没法写代码了,他就开始等(阻塞),每次公司(相当于操作系统)买了新电脑都会先看看有没有在人在等这个配置的电脑,如果有直接发给员工,那么员工就可以工作了。假如小王等了30天(等待最长时间)都没等到,那么公司就直接给他重金购买一台符合他要求的电脑,在这期间,公司必须全额支付小王的工资。小李兢兢业业的996,电脑也坏了,等了几天(阻塞)也没等到自己的电脑,突然公司效益不好,让他放假回家(挂起),只给他发基本工资,在这个期间就算来了符合他要求的电脑也不会让他回来上班。等半年后,公司效益好了,某个业务线(另一个任务resume)需要一个老黄牛,告诉小李,你可以准备准备来上班了,没有电脑的话你可以接着摸鱼,有电脑那就可以写代码了,但是可以正常领到全额薪水了。


该用户从未签到

发表于 12-3-2025 08:03:00 | 显示全部楼层
针对您提到的单片机OS中的阻塞态和挂起态,以及针对Autosar OS中的Suspended和Waiting状态,我们可以做如下解释:

在操作系统中,阻塞态和挂起态都是任务或进程在执行过程中的暂时状态。对于Autosar OS而言,Waiting状态表示任务在等待某个事件或资源发生,此时任务处于就绪队列中,一旦事件触发或资源可用,任务即可恢复执行。而Suspended状态则是指任务被暂停执行,通常是因为某些特定原因(如故障处理或系统需求),此时任务不在运行且不在就绪队列中,需要特定的操作才能使其恢复执行。简而言之,Waiting状态是任务在等待某些条件满足后继续执行,而Suspended状态则是任务被强制暂停。

这两种状态在实时操作系统中非常重要,对于汽车工程师来说,理解并正确应用这些状态对于确保系统稳定性和实时性至关重要。

[内容由汽车工程师之家人工智能总结,欢迎免费使用,见贴尾]
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 05:47 , Processed in 0.404035 second(s), 37 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.