背景:我正在致力于将 Ada 项目从 Vxworks 移植到 Linux 平台。该项目严重依赖 Ada 动态任务优先级的使用。
我做了一些实验,这让我很困惑。 Ada 任务优先级似乎对底层 Linux 优先级/友好性没有影响。即使固定到一个 CPU 核心,两个具有不同优先级的相同任务也需要同样的时间才能完成。
问题: Linux 上 Ada 任务的语义是什么?为什么我看不到设置任务优先级的效果?
我做了一些实验,这让我很困惑。艾达任务 优先级似乎对Linux底层没有影响 优先/友善。执行两个具有不同优先级的相同任务 即使固定到一个 CPU 核心,完成时间也同样长。
这并不像您想象的那么重要:任何高于后台进程“一般噪音”优先级的进程都将吸收所需的计算。另外,要考虑,程序中
task
的优先级是什么,它本身就是一个具有自己优先级的进程?
问题:Linux 上 Ada 任务的语义是什么?为什么我 看到设置任务优先级没有效果吗?
Ada 的任务语义是可移植的,并且在 Windows、裸机、Linux 和 VxWorks 上应该完全相同——这就是 Ada 如此可移植的原因之一,以至于可以开发出在其他系统上使用的重要程序可以在非常不同的体系结构上运行(假设没有[低级]系统依赖性)。
至于为什么您没有看到任何差异,可能是因为上述原因,再加上我们拥有FAST机器。