据我所知,实时进程意味着进程会在需要时立即获得 CPU。内核通过其内部调度机制负责此任务。
另一方面,进程亲和性意味着进程将获得一个专用的 CPU,并且不会由内核调度程序管理。所以,如果我理解正确的话,它甚至比实时进程更好。这就像为 Arduino 编程,但只是使用更快的 CPU。此外,据我了解,对于进程亲和性,我们至少需要一个双核 CPU,并且我们必须为操作系统本身留出至少一个 CPU。因此,借助进程亲和性,为 Arduino 编写的程序可以移植到 Linux 主板(如 Raspberry Pi Zero 2 W,它具有四核 CPU),并且可以享受微控制器的所有优势,但 CPU 更快。
我的理解正确吗?
我认为你混淆了两个概念,它们的含义与你所描述的不同。它们有不同的使用工作流程。一切都取决于你真正需要什么
即时的
我认为 Linux 中的实时旨在为任何时间敏感的应用程序提供可预测和确定的行为。
在普通Linux中,进程使用具有不同优先级和分时机制的调度程序。这些可能会受到诸如 等因素的影响
nice
。实时Linux 可确保时间关键型任务得到立即关注并在特定时间限制内执行。CPU 亲和性
处理器亲和性实际上将进程绑定到特定处理器。这就是它又称为 CPU 固定的原因。
想象一下有一台有 128 个处理器的机器。你为什么要将一个进程固定到某个处理器上?CPU 亲和性的主要原因是为了避免缓存未命中,这会导致延迟问题。对于 128 个处理器来说,这可能是一个真正的问题,可能会减慢你正在执行的任务的速度。
回答
回答您的问题,处理器亲和性是为了优化缓存性能,这可以改善延迟,但它不能保证对时间关键型应用程序的任何确定性行为。另一方面,实时内核应该保证确定性行为。
取决于我们谈论的是哪种应用程序。如果您需要它以确定性的方式运行,这意味着您将始终在特定时间范围内得到答案,那么请使用实时Linux 实现。
如果您需要避免缓存未命中,可以尝试CPU 亲和性。