- 打卡等级:初来乍到
- 打卡总天数:5
- 最近打卡:2025-04-30 07:46:22
荣誉版主
- 积分
- 2319
|
发表于 2023-10-7 14:19:07
|
显示全部楼层
本帖最后由 tzz1983 于 2023-10-7 14:22 编辑
杨老师啊, 和你说明一个东西真的很难啊, 如果, 我说如果"你是我的学生, 我都可能会放弃你", 太难搞了.
1. TF4=1会不会多次被设置, 这和熊仔搞论的OSIntNesting++是否可能来不及加就发生了更高的优先级嵌套有关, 在这里并不是重点, 重点想表达的意思是, 即便是执行了多次, 也只会有一次切换, 不会发生错误. (正常情况下多次嵌套只会设置一次)
2.为什么不会发生错误呢, 因为OS核心参数是在临界段段内读写的, 核心参数不会出错, 在最后一次任务切换时(哪怕是嵌套时重复两次最高优先级任务切换), 也一定会毫无错误的正确的切换到最高优先级那个任务. (举个简单的例子, 多次嵌套中断里有3个任务被激活, 那到最后也只是需要切换一次, 而不是三次, 剑只要指向最高的任务优先级就可以了, 我说的TF4=1被多次设置也不会出错, 也不会进行多次切换, 就是这个意思)
3.这里同时也说明了读写OS核心参数时, 为什么一定要在临界段内操作.
再说明一下, 你要在切换任务时全程关中断, 我没有反对你, 那是你的选择, 你这样做也是可以的, 不会发生错误. 但是我不会这样选择, 原因不多说了.
如果我还是没说明白, 那证明我的口才太差了, 接下看看熊仔能不能给您解释一下
|
|