OS调度和RTOS调度之间的区别

考虑功能/过程,

void task_fun(void) { while(1) }如果这个过程是在一个普通的PC操作系统上运行的,它会很快乐地运行。 但是在手机上,随着硬件看门狗过期并重置系统,肯定会在几分钟内使整个手机崩溃。 在个人电脑上,这个过程在其规定的时间片到期后将被排除,并且一个新的可运行过程将被安排运行。

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

还有一个疑问是,我检查了我的PC操作系统(Ubuntu)和运行Linux Kernel的手机的schedule()函数。 我发现他们两个都差不多。 在我的手机上看门狗的处理在哪里? 我的假设是调度程序是在让一个进程运行之前启动看门狗的人。 有人能指出我的代码在哪里吗?


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

在大多数嵌入式实时操作系统中,所有过程都是由系统设计人员在部署时定义的,而设计则是根据需要安排所有过程。 将用户定义或第三方代码放在这样的系统上可能会危及其调度方案,如同您的示例。 我建议所有这些进程应该与其他所有进程的优先级相同,以便循环调度程序在不损害系统服务的情况下平等地为用户应用程序提供服务。

电话操作系统通常是RTOS,但用户进程不应该以高于系统进程的优先级运行。 可能有意识的是,这些进程比看门狗服务运行得更高,以保护系统免受您模拟的“行为不当”应用程序的侵害。

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


有几种方法可以实施监督,而这些方法都不是Linux强制实施的:

  • 进程或线程定期运行以测试正在执行的重要操作。 如果不是,则采取纠正措施,如重新启动机器,或重置一个麻烦的组件。
  • 进程或线程连续运行以吸收额外的CPU时间并重置计时器。 如果任务无法运行,则计时器到期并采取纠正措施。
  • 如果系统没有定期按摩,硬件组件会重置系统; 即硬件计时器到期。
  • 在RTOS或任何其他多任务操作系统上都无法做到这一点。


    Linux,台式计算机或移动电话不是RTOS。 其调度策​​略是时间驱动的。

    在RTOS上,调度由事件触发,无论是从环境到ISR还是软件本身通过系统调用(发送消息,等待互斥......)

    链接地址: http://www.djcxy.com/p/7577.html

    上一篇: Difference between OS scheduling and RTOS scheduling

    下一篇: Making only portion of screen modal with jQuery UI