一、 先来先服务FCFS(First Come First Serve)
先来先服务"(First Come, First Served,简称FCFS)是一种调度算法,常用于处理队列中的任务或进程。它的基本原则是按照任务或进程到达的顺序进行处理,即先到达的任务先被处理,后到达的任务排在后面等待执行。
在计算机领域,FCFS常用于操作系统中的进程调度。当多个进程处于就绪状态时,操作系统按照它们进入就绪队列的顺序依次选择下一个要执行的进程。这种调度算法简单直观,但可能导致"先来先服务"效应,即如果一个长时间运行的任务占用了CPU,那么后续的任务需要等待较长时间才能执行,带权周转时间大。
总的来说,FCFS是一种简单而直观的调度算法,但并不总是能够提供最佳性能,特别是在面对长任务和短任务混合的情况下。其他调度算法如最短作业优先(SJF)和优先级调度等被设计用来解决一些FCFS可能遇到的性能问题。
二、 最短作业优先SJF、最短进程优先SPF、抢占式最短剩余时间优先SRTN
1. SJF(短作业优先)
定义: SJF 是一种非抢占式的进程调度算法,也被称为 Shortest Job Next 或 Shortest Job First。该算法根据每个进程的执行时间长度来决定下一个要执行的进程。
工作原理:
- 系统为就绪队列中的所有进程按照它们的执行时间排序,从短到长。
- 调度器选择就绪队列中执行时间最短的进程,并将其分配给 CPU 执行。
- 进程一旦开始执行,将一直运行直到完成,没有被其他进程抢占。
优点:
- 最小化平均等待时间。
- 提高系统的吞吐量。
缺点:
- 难以准确估计任务的执行时间。
- 长任务可能会一直等待短任务的完成(短作业优先效应)。
应用:
- SJF 在批处理系统中效果较好,但在交互式系统中可能导致用户体验下降。
2. SPF(短进程优先)
定义: SPF 是一种非抢占式的进程调度算法,它与 SJF 类似,但是在 SPF 中,进程被视为一组关联的任务(即一个进程)。SPF 选择执行时间最短的进程,而不是任务,来决定下一个要执行的进程。
工作原理:
- 系统为就绪队列中的所有进程按照它们的执行时间长度排序,从短到长。
- 调度器选择就绪队列中执行时间最短的进程,而不是任务,并将其分配给 CPU 执行。
- 进程一旦开始执行,将一直运行直到完成,没有被其他进程抢占。
优点:
- 最小化平均等待时间。
- 提高系统的吞吐量。
缺点:
- 长进程可能一直等待,导致长进程等待短进程的完成(短作业优先效应)。
应用:
- SPF 在批处理系统中效果较好,但在交互式系统中可能导致用户体验下降。
3. SRTN(抢占式最短剩余时间优先算法)
最短剩余时间优先算法:每当有进程加入就绪队列改变时就需要调度,如果新到达的进程剩余时间比当前运行的进程剩余时间更短,则由新进程抢占处理机,当前运行进程重新回到就绪队列。另外,当一个进程完成时也需要调度。
- 操作系统为就绪队列中的所有进程按照它们的剩余执行时间排序,从短到长。
- 调度器选择剩余执行时间最短的进程,并将其分配给 CPU 执行。
- 如果有一个新的进程到达,且其剩余执行时间比当前执行进程的剩余执行时间更短,那么调度器可以中断当前执行的进程,转而执行新到达的进程。
优点:
- 最小化每个任务的等待时间,因为它会动态考虑任务的实际执行情况。
缺点:
- 实时性能可能较差,因为长任务可能会一直等待。
- 实现相对较复杂,需要准确追踪每个任务的剩余执行时间。
应用:
- SRTN 适用于需要实时响应的系统,但可能由于频繁的抢占而导致上下文切换的开销增加。
三、 高响应比优先HRRN
高响应比优先算法:非抢占式的调度算法,只有当前运行的进程主动放弃CPU时(正常/异常完成,或主动阻塞),才需要进行调度,调度时计算所有就绪进程的响应比,选响应比最高的进程上处理机。
- 对于每个就绪进程,计算其响应比率,响应比率计算公式为:响应比率 = (等待时间 + 服务时间)/ 服务时间。
- 选择具有最高响应比率的进程,并将其分配给 CPU 执行。
- 进程一旦开始执行,将一直运行直到完成,没有被其他进程抢占。
优点:
- 考虑了等待时间和服务时间,综合考虑了短进程和长进程,有助于避免长进程一直等待的问题。
- 提高系统的整体性能。
缺点:
- 响应比率的计算可能需要频繁的更新,增加了计算的开销。
- 对于短进程和长进程的处理存在一定的权衡,可能不适用于所有场景。
应用:
- HRRN 适用于批处理系统和交互式系统,希望综合考虑各个进程的等待时间和服务时间,以提高整体性能。
-