操作系统之先来先服务调度算法;短作业(短进程、短线程)优先调度算法;时间片轮转调度算法;优先级调度算法;高响应比优先调度算法;多级队列调度算法;多级反馈队列调度

262 阅读3分钟

1. 先来先服务调度算法(FCFS)

原理:按照进程到达就绪队列的先后顺序来调度进程,即先到达的进程先被分配CPU资源进行执行。

特点: 实现简单,易于理解和实现。 公平,所有进程按照到达顺序被调度,没有优先级差别。 但平均等待时间长,短进程可能等待长进程完成后才能执行,导致响应时间增加。 缺乏灵活性,无法根据进程的重要性或紧急程度调整调度顺序。 适用于批处理系统,在需要顺序执行任务的场景下表现良好。

2. 短作业(短进程、短线程)优先调度算法(SJF)

原理:优先调度执行预计执行时间最短的进程,以减少平均等待时间。

特点: 相比于FCFS,SJF可以获得较少的平均等待时间、平均周转时间。 必须预知作业的运行时间,这在实际操作中可能较难实现。 对长作业非常不利,长作业的周转时间会明显地增长,可能出现饥饿现象。 可以分为非抢占式和抢占式(最短剩余时间优先算法SRTN)两种。

3. 时间片轮转调度算法(RR)

原理:每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。

特点: 最古老、最简单、最公平且使用最广的算法之一。 适用于分时系统,可以实现多个用户交互。 时间片长度的选择需要权衡,设得太短会导致过多的进程切换,降低了CPU效率;而设得太长又可能引起对短的交互请求的响应变差。

4. 优先级调度算法(PSA)

原理:根据每个进程的优先级来决定它们的调度顺序。具有较高优先级的进程会优先获得CPU资源。

特点: 可以确保高优先级任务优先获得CPU资源,适用于需要区分任务重要性的场景。 可能导致低优先级的进程长期得不到调度,出现“饥饿”现象。 可以分为抢占式和非抢占式两种。 可以通过调整优先级,满足实时任务调度的需求。

5. 高响应比优先调度算法(HRRN)

原理:是一种兼顾了进程等待时间和执行时间的非抢占式调度算法。通过计算每个进程的响应比来决定下一个被调度的进程。响应比越高的进程越优先得到处理。

特点: 可以避免长期等待的进程饥饿。 实现相对复杂。

6. 多级队列调度算法

原理:将任务分配到不同的队列中,根据任务的优先级和特性来决定调度策略。

特点: 灵活性高,可以根据不同任务的需求进行不同的调度。 实现相对复杂,需要维护多个队列和相应的调度策略。

7. 多级反馈队列调度算法(MLFQ)

原理:在多级队列调度算法的基础上进行扩展,允许进程在不同优先级的队列之间移动,以便更好地平衡CPU的使用。根据进程的执行历史动态调整其优先级。

特点: 短期任务优先处理,而长期任务则逐步降低其优先级,以避免长期占用系统资源。 适用于需要动态调整任务优先级的场景。 实现复杂,但能够提供更灵活和高效的调度策略。