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