OS调度与RTOS调度的区别

Pav*_*ath 7 linux operating-system scheduling rtos linux-kernel

考虑功能/过程,

void task_fun(void) { while(1) } 如果这个过程是在普通的PC操作系统上运行的话,它会很乐意永远运行.但是在手机上,随着硬件监视器到期并重置系统,它肯定会在几分钟内崩溃整个手机.在PC上,此过程在其到期后的规定时间片将被安排出来,并且将安排新的可运行过程运行.

我怀疑为什么我们不能在RTOS上应用相同的策略?如果在RTOS上实施这样的调度策略,所涉及的性能限制是什么?

另一个疑问是我检查了schedule()我的PC OS(Ubuntu)和我的手机的功能,它也运行Linux内核.我发现它们几乎都是一样的.看门狗在我手机上的处理方式在哪里?我的假设是调度程序是在让进程运行之前启动监视程序的人.有人能指出我在代码中的位置吗?

Cli*_*ord 1

手机“崩溃”是手机设计或特定操作系统的问题,而不是一般嵌入式操作系统或 RTOS 的问题。它会“饿死”较低优先级的任务(可能包括看门狗服务),这可能就是这里发生的情况。

在大多数嵌入式 RTOS 中,所有进程都由系统设计者在部署时定义,并且设计是为了根据需要调度所有进程。将用户定义或第三方代码放置在此类系统上可能会损害其调度方案,如您的示例所示。我建议所有此类进程应以与所有其他进程相同的低优先级运行,以便循环调度程序平等地为用户应用程序提供服务,而不会影响系统服务。

电话操作系统通常是 RTOS,但用户进程不应以高于系统进程的优先级运行。此类进程可能故意运行在比看门狗服务更高的位置,以保护系统免受您模拟的“行为不当”应用程序的影响。

大多数 RTOS 使用基于抢占优先级的调度程序(最高优先级就绪任务运行,直到它终止、让出或被更高优先级任务或中断抢占)。有些还为相同优先级的任务安排循环(任务运行直到它终止、产生或消耗其时间片并且相同优先级的其他任务准备好运行)。