对于使用管理程序(例如RTS Real-Time Hypervisor)与非实时操作系统并行运行 RTOS,您有什么建议/经验。是否有任何性能影响?是否有任何风险?(比如如何确保非实时操作系统不会干扰 RTOS 的实时方面)
据我了解,必须使用双核(或超线程)CPU,以便您可以为每个操作系统分配自己的内核。
对于使用管理程序(例如RTS Real-Time Hypervisor)与非实时操作系统并行运行 RTOS,您有什么建议/经验。是否有任何性能影响?是否有任何风险?(比如如何确保非实时操作系统不会干扰 RTOS 的实时方面)
据我了解,必须使用双核(或超线程)CPU,以便您可以为每个操作系统分配自己的内核。
主要思想是拥有一个 RTOS,它使用自己的 API 执行专门为此 OS 编写的任务。这些任务以字符串优先级设置,其中较高优先级的任务总是优先于较低优先级的任务。最低优先级的任务只有在没有其他任务可以运行时才会执行(也就是说,它们都在等待某个事件,超时或外部信号)。
这一切就像一个通常的多任务操作系统调度程序,它不需要多核或硬件线程;只是时间保证完全不同,可用的 API 反映了这一事实。
在那些混合实现中,有一个最低级别的任务运行完整的非 RT OS 内核,通常是 Linux 或其他一些类似 unix 的内核(我不知道 windows,但应该工作相同)。如今,我们称这种架构为管理程序。
因此,由于整个非 RT 操作系统作为最低优先级任务运行,它根本无法保证获得处理时间。任何 RT 任务都可以随时中断它,即使在访问硬件时也是如此。为了保持这一点,通常 RT 任务对硬件的访问非常有限,或者在非常低的级别有最少的仲裁。ie:可以中断磁盘访问(可能导致访问错误);但不是 PCI 访问(只要是短暂且有时间限制的)
一段时间以来,Linux 调度程序也有一些软 RT 扩展;但是时间保证并不像一些考虑到这一点的硬RT操作系统那么严格。