- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有 3 个任务以不同的优先级运行:A (120)、B (110)、C (100)。A 采用带有反转安全标志的互斥信号量。任务 B 执行 semTake,这导致任务 A 的优先级提升到 110。随后,任务 C 执行 semTake。任务 A 的优先级现在为 100。
此时,A释放信号量,C捕获信号量。我们注意到 A 的优先级并没有降回原来的优先级 120。A的优先级不是应该立即恢复吗?
最佳答案
理想情况下,当继承的优先级为降低,它将以逐步的方式完成。正如每个导致优先级提高的依赖关系被删除,继承的优先级应该下降到以下优先级剩余的最高依赖性。
例如:
任务 A(100 增加到 80)有两个互斥体 (X 和 Y)任务 B (pri 90) 和任务 C (pri 80) 分别处于待处理状态为了。当任务 A 将互斥量 Y 放弃给任务 C 时,我们可能期望它优先级将下降到 90。当它最终将互斥体 X 交给任务 B 时,我们预计其优先级会回落至 100。
优先级继承在 VxWorks 中不是这样工作的。
它的工作原理取决于您使用的 VxWorks 版本。
VxWorks 6.0 之前的版本
优先级保持“提升”,直到任务具有锁定互斥体信号量放弃其最后反转安全互斥体信号。
使用上面的示例,当任务 A 放弃互斥体 Y 时对于任务 C,其优先级仍为 80。在它放弃互斥体 X 后任务 B,那么它的优先级将回落到 100(跳过 90)。
让我们把 1 号曲线球加入其中。如果任务 A 锁定了互斥体怎么办Z虽然这一切都在进行,但没有人在等待Z?在那里面这种情况,优先级将保持在80,直到Z被放弃——然后它将回落至 100。
为什么要这样做?
很简单,而且对于大多数情况来说都很好足够的。然而,这确实意味着当“曲线球#1”进入时玩时,优先级将在更长的时间内保持高于是必要的。
VxWorks 6.0+
现在的优先级保持提升状态,直到任务锁定互斥锁信号量放弃最后一个反转安全互斥体,这有助于提高优先级。
这一改进避免了以下问题“曲线球#1”。它确实有其自身的局限性。例如,如果任务 B 和/或任务 C 在等待任务 A 放弃时超时信号量,任务 A 的优先级不会被重新计算直到它放弃信号量。
关于semaphore - VxWorks如何处理优先级继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/108098/
我意识到这可能是一个非常愚蠢的问题。请幽默一下: 对错:编译程序在 VxWorks 平台上运行的唯一方法是购买 WindRiver 的 Tornado 或 Workbench 等开发环境。 (我正在寻
我可以使用台式电脑来运行VxWorks作为操作系统吗?换句话说,可以使用标准PC作为目标处理器吗?我不是在谈论在同一台机器上托管 Workbench 和 VxSim。相反,我正在考虑在 PC 上仅运行
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我意识到这可能是一个非常愚蠢的问题。请幽默一下: 对错:编译程序在 VxWorks 平台上运行的唯一方法是购买 WindRiver 的 Tornado 或 Workbench 等开发环境。 (我正在寻
在 vxWorks 中,我可以在 shell 中发出“i”命令,并获得系统中的任务列表以及一些信息,如下例所示: 名称 条目 TID PRI 状态 PC SP ERRNO 延迟 ----------
在 Windows 或 Linux 中,我们经常将控制台输出重定向到一个文件,如下所示: window : dir > text Linux: ls -l > text 我想知道如何在 VxWorks
如果您在 Vxworks 中启用了循环,并且您的任务被更高优先级的任务抢占,那么剩余的时间片会发生什么? 最佳答案 您的任务将继续执行并完成剩余的时间片。 请注意,由于时间切片的粒度为 1 个时钟滴答
我们正在 VxWorks 6.x 中创建一个实时进程,我们想限制可以分配给堆的内存量。我们如何做到这一点? 最佳答案 通过 rtpSpawn() 创建 RTP 时,您可以指定控制堆行为的环境变量。 有
有没有办法在 vxworks 中为单个套接字描述符设置 keepalive?我在一些文档中读到,setsockopt 函数中的“SOL_TCP”选项会在 linux 中起到这样的作用。 VxWorks
在 vxworks 中,每个任务都应该使用 VX_FP_TASK 选项生成吗? 如果您的任务使用任何浮点运算,则需要 VX_FP_TASK 选项。但是一个人如何预测 future ——我的意思是,一个
是否有一个键可以单步执行过去的 vxworks v6.9 shell 解释器命令,例如 Windows 和 Linux? 'h' 显示命令历史列表。 我该如何逐步完成并选择? 最佳答案 它默认使用 V
想知道如何调用调度程序,以便它可以切换任务。就像它的抢占式调度或循环调度一样,调度器也应参与其中以执行任何类型的任务切换。假设低优先级任务有一个无限循环-调度程序何时进行干预并切换到较高优先级的任务?
我注意到在我的 vxWorks 6 平台上,调用套接字上的 write 成功完成并返回请求写入的字节数,而且还将 errno 从 0 转换为 19(ENODEV). 我发现这很令人惊讶。 运行成功后是
当我在 vmware 中构建一个 vxworks 时,它可以工作。但是,当我使用不同的 IP 分别创建另外两个 vxworks 时,第二个 vxworks 失败(日志来自 vxware.log): 2
我注意到在我的 vxWorks 6 平台上,调用套接字上的 write 成功完成并返回请求写入的字节数,而且还将 errno 从 0 转换为 19(ENODEV). 我发现这很令人惊讶。 运行成功后是
您发现哪些在线资源对了解 VxWorks 有用? 最佳答案 Tornado II/VxWorks FAQ是基本信息的良好来源,与 VxWorks 5.x 版本相关。 VxWorks Cookbook还
vxworks 任务如何在最短的时间内将 CPU 交给较低优先级的任务? 有没有一种方法可以让任务在不到 1ms 的时间内放弃 CPU? 我知道的让其他较低优先级任务运行的唯一方法是 taskDela
Vxworks 支持标准的 IP v4 和 IP v6 套接字,但套接字也用于其他目的。 还有哪些其他类型的 socket 可用? 最佳答案 您可以使用的套接字类型取决于您在其中创建套接字的通信域。
到目前为止我读过的所有文档似乎都表明我的 vxWorks (6.8) 版本中存在 posix 线程支持,但是一个简单的测试应用程序无法按预期执行。来源如下: tTest.h #include cla
我有一个在 ARM uC 上运行的 VxWorks 应用程序。 首先让我总结一下应用; 应用程序由第三方堆栈和网关应用程序组成。我们实现了操作系统抽象层来支持操作系统独立性。 底层堆栈有自己的内存管理
我是一名优秀的程序员,十分优秀!