Linux 系统中的 CPU 调度
1. 实时的概念
在应用程序编程和操作系统的上下文中,关于“实时”存在很多误解。实时本质上意味着实时线程不仅要正确地执行其工作,还必须在给定的最坏情况下的截止时间内完成。实时系统的关键因素是确定性,即系统对于现实世界(或人为生成)的事件有保证的最坏情况响应时间,会在有限的时间约束内处理这些事件。这种确定性使得系统在任何条件下,甚至是极端负载下,都能有可预测的响应。
计算机科学家通过时间复杂度(大 O 表示法)对算法进行分类,其中 O(1) 算法是确定性的,无论输入负载如何,它们都能保证在特定的最坏情况下的时间内完成。真正的实时系统需要使用 O(1) 算法来实现其对性能敏感的代码路径。
有趣的是,实时并不一定意味着速度极快。一项调查显示,大多数实时系统的截止时间(实时响应时间)要求在 1 到 9 毫秒之间。只要系统能始终如一地在给定的截止时间内处理事件(这个截止时间可能相当长),它就是实时的。
实时通常分为以下三种类型:
-硬实时系统:必须始终满足所有截止时间。哪怕有一次未能满足截止时间,都可能导致系统灾难性故障,包括可能的人员伤亡、经济损失等。这类系统需要实时操作系统(RTOS)来驱动,并且应用程序也必须编写为硬实时的。可能涉及的领域包括各类人类运输工具(飞机、船舶、航天器、火车和电梯)、一些军事或国防设备、核反应堆、医疗电子设备和证券交易所等。
-软实时系统:尽力而为,虽然存在截止时间,但不能保证一定会满足。系统会尽力去满足这些截止时间,即使未能满足也被认为是可以接受的,通常只是会给最终用户带来一些困扰,而不会有危险。消