您是否需要一个实时操作系统以确保您的程序永远不会脱离 CPU?

Do you need a realtime operating system in order to ensure your program is never taken off the CPU?

如果我要编写一个程序,并且我想保证运行该程序永远不会看到一个实例,在它是 运行 之后,它会从 cpu 直到程序终止,我需要一个 RTOS 或者有没有办法让这样的体验 gu运行 定期 linux os.

示例: 假设我们有一个 运行 一个无头 Linux 机器和 运行 一个程序作为用户或 root(例如从传感器读取 SPI 数据,监听 http 请求)并且有理由相信那里是 almost almost 除了单个独立脚本 运行.

之外没有与机器的其他交互

如果我想确保我的进程 运行 永远不会离开我的 cpu 哪怕是一瞬间,这样我就不会错过有价值的传感器信息或传入的 http 请求,这场战争运行没有一个实时操作系统来保持这个 gua运行tee?

我知道实时 OS 需要 gua运行tee 来确定事件的硬性限制和硬性截止日期。我也知道在常规操作系统上,由 OS 决定优先级和调度。

如果这在错误的堆栈中,请告诉我。

您是否需要在恒定的时间范围内根据传感器读数采取行动?这个动作应该有多复杂?如果您只需要不错过任何读数并且可以缓冲它们 - 只需在非实时设备和传感器之间添加一个微控制器或 FPGA。

此外,即使未打补丁 Linux,您也可以确保一些软实时约束。您可以将进程固定到 CPU 并避免在其中使用任何系统调用 - 而是以 100% CPU 利用率旋转和轮询,然后内核可能永远不会触及它。确保进程二进制文件和所有动态库(如果有)都在 RAM 磁盘上(以避免分页)并禁用交换。