找回密码
 立即注册
查看: 66|回复: 0

科普“零中断延迟”临界区保护方法

[复制链接]

该用户从未签到

63

主题

703

回帖

1万

积分

荣誉版主

积分
10908
发表于 2024-5-4 12:54:34 | 显示全部楼层 |阅读模式
一、什么是“零中断延迟”
1)任何单片机RTOS系统在运行的时候都有一些程序段需要不被外界打断地完整执行,这些程序段被称为“临界区”。为了确保不被外界打断的方法被称为“临界区保护方法”
2)“临界区保护方法”按照是否采用“关闭总中断”分为两类常规的关闭总中断方法不关闭总中断的方法。后者在本论坛中被称为“零中断延迟”方法
3常规方法的缺点是当系统进入临界区保护的时候,由于总中断被关闭,这期间发生的任何用户中断都会被延迟
4不关闭总中断的方法的优点是当系统进入临界区保护的时候,由于总中断没有关闭,这期间发生的任何用户中断都不会被延迟,故称“零中断延迟”方法。
二、“不关闭总中断”的风险
5)一朋友是常规“T台秀游乐园”的建筑商。“T台秀游乐园”(单片机RTOS)的核心是时装模特T台表演(执行任务),其余还包括一些吃喝玩乐项目。
6T台秀的模特在两轮表演(两个任务)之间需要更换服装(进行任务调度)。更换过程包括脱下本轮演出服(保存当前任务现场),换上下轮演出服(恢复新任务现场)。
7)出于竞争和保护隐私的目的,更换服装的过程(临界区)需要严格保密和连续进行,常规的保护方法(常规的临界区保护方法)是在模特换衣之前发出“禁止令”(关闭总中断),停止“T台秀游乐园”内所有的动物的运动,哪怕吃饭的也停下来。然后在模特换衣之后撤销“禁止令”(重新打开总中断),恢复“T台秀游乐园”内所有的动物的运动。
8)可以看出常规的保护方法有一个重要的缺陷:在禁止令发布区间,也禁止了本来与T台表演无关的其他游客的行动,比如让餐厅中吃饭的客人也不能正常吃饭了。
9)由于行业内卷太厉害,这位朋友新使用了一种新的保护方法“非全面禁止令”(不关闭总中断),只是禁止了“T台表演厅”内的动物的活动,对其他区域的游客实现了“零限制活动”(零延迟中断)
10)显然新方法有益于游客,朋友的“零限制活动”的“T台秀游乐园”打开了新的局面。
11)不过这位朋友告诉我他每天都提心吊胆。由于对其他区域的游客实行的是“零限制活动”(零延迟中断),如果在换衣服的时间(临界保护区内)有其他地方的游客跑来看热闹,吃瓜拍照,导致换服装过程不能正常进行,演出崩溃怎么办
三、解决的方法
12)我建议朋友向我学习(我移植uC/OS-II时移植了两个版本,一个是关闭总中断的“微山x51”系列,一个是不关闭总中断的“挑战者x51”系列),建两个游乐园,一个是常规的,一个是“零限制活动”。
13)朋友说建两个不行,时间一长,“零限制活动”的游乐园就不会有“T台秀”了。因为演出团和演员很少会冒换衣服被围观的风险的。
14)我问他的建议,他认为对于想要看“T台秀”的游客专门建一个采用常规保护方法的“T台秀剧场”(关闭总中断的RTOS,对于真正需要艺术的人不会在乎被“限制行动”几分钟。
而对于爱好自由的吃货和玩家,专门建一个不需要任何限制的“游乐园”(就是不进行任何临界区保护的“前后台操作系统”),游客任何时候想做什么都没有限制(对任何中断都是真正“零延时”)。
注:文中朋友是虚构的
注:本论坛的《任务调度方法,【无错,至简】!多任务分时调度》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7611&extra=page%3D1
是一个不进行任何临界区保护的“前后台操作系统”,是一个真正意义上的“零中断延时”操作系统


回复 送花

使用道具 举报

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2024-5-20 01:15 , Processed in 0.053559 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表