实时系统中的调度
实时系统包含需要立即处理的实时任务或应用程序。在这个系统中,遵循基于固定时间约束的时间绑定方法,并且任务必须在时间约束内处理。此时间约束称为实时任务的截止日期。实时系统指定的 要求由时间线和可预测性给出,其中时间线表示任务与给定截止日期的接近程度,而可预测性定义了交付的时间线中发生的偏差量。
实时系统
传统的调度算法(例如基于优先级的算法)根据就绪队列中进程的特征,对某些进程赋予优先级。如前所述,实时任务需要根据优先级完成,并且应在给定的截止日期或约束内处理。它还取决于一些其他指标,例如可行性,它描述了任务是否可以满足要求。
下一个是硬实时系统,它是任务在预定义的间隔或响应时间内执行的重要要求,并且当实时任务未满足此要求时,可能会导致系统故障。最后一个指标是软实时任务,其中必须最大程度地实现响应时间,如果错过截止日期,则可能会降低系统性能并导致故障,但它们是可恢复的。这些软任务可以重新安排在以后的时间完成。
实时系统中的调度是一种易于实现的方法,具有以下功能 -
由于在每个任务处理之前都指定了截止日期,因此我们可以指定任务的周期,并且基于此,基于时间共享的调度算法对于实时任务比其他算法更有效。
流量速率是恒定的,因为任务的工作负载相对固定,这可以更好地利用 CPU 资源并为硬实时和软实时任务提供更高的响应时间。
每个任务的复杂度是相对已知的,因此当存在高需求时,我们可以知道哪个任务应该被安排具有较低的复杂度,并且在实时任务处理期间接受低优先级任务之间的饥饿问题。
调度算法
对于简单的实时任务不需要调度程序,因为它们的处理和执行时间是已知的,因此一个任务在完成之后可以自行调用另一个任务。但是对于复杂的系统,其中大量任务不遵循正确的流水线,我们可以应用静态调度算法,其中提供固定的时间线以确保就绪队列中任务的执行。这些方法不适用于根据事件动态更改工作负载的实时系统,在这里我们需要应用动态调度算法。
当应用动态调度时,我们需要知道根据 SJF、更高优先级、完成时间等选择即将执行的任务所遵循的流程,以及如何通过调整执行更少数量的低优先级任务和剔除方法来处理过载问题。
实时系统中使用的一些调度算法如下 -
实时系统中使用的一些调度算法是 - 它也称为多任务的非抢占式方法,其中操作系统不会从正在执行的一个进程到另一个进程或任务启动上下文切换技术。所有任务都必须平等地协作才能使调度程序工作。
最早截止日期优先 - 这是一种动态优先级算法,其中根据参考优先级队列的最接近截止日期选择任务以供执行。
抢占式调度 - 当执行多任务时,可以对正在执行的任务进行抢占,并且根据调度程序指令,执行下一个任务,并且抢占的任务可以在一段时间后处理,将其推送到就绪队列的末尾。
其他使用抢占式方法的算法有循环调度、速率单调、固定优先级抢占式调度、固定优先级非抢占式调度和静态时间调度。
缺点
在实时任务中,测试是一个繁琐的过程,其中每个任务都必须在其截止日期内验证其完成情况,并且如果发生任何延迟,则验证相同内容需要更多时间。
当同时执行多个任务时,系统可能无法提供满足其要求的所有任务所需的资源,从而导致资源饥饿。
复杂度较高,因为必须根据要求、截止日期和资源分析实时任务。
结论
实时系统根据时间共享方法执行指定的任务,并满足所需的截止日期。它使用基于静态或动态方法的调度算法,其中任务数量和工作负载可能会有所不同。与低优先级任务相比,抢占式或非抢占式方法用于选择首先执行的最高优先级任务。
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP