❶ 几种常见的调度算法(转载)
处理机调度是操作系统核心功能之一,其目标是优化系统性能和用户体验。调度算法依据准则分为面向用户和面向系统两类。面向用户准则包括短周转时间、快响应时间、均衡性、截止时间保证和优先权准则;面向系统准则则强调高吞吐量和良好资源利用。调度算法在批处理和分时系统中选择,批处理系统倾向于短作业优先策略,而分时系统则采用轮转法。
先来先服务调度算法(FCFS)遵循"先到先服务"原则,新任务需等待当前任务完成或阻塞才获取CPU。此算法有利于CPU繁忙型作业,但对I/O繁忙作业响应不佳。短作业优先调度算法(SJF/SPF)通过缩短平均等待时间提升系统吞吐量,但未能考虑紧迫度,且作业长短主观性影响实际优先级。
高优先权优先调度算法(HPF)引入动态优先权调整,使等待时间增加时优先级提高。高响应比优先调度算法(HRRN)计算动态优先权,优先权等于(等待时间+要求服务时间)/要求服务时间。计算优先权的时间点需明确。
时间片轮转调度算法(RR)和多级反馈队列算法(FB)采用时间片管理。RR确保及时响应,但不考虑作业长短问题,时间片长度受系统负载影响。FB则通过设置多级优先级队列,赋予不同时间片长度,高优先级队列空闲时才调度低优先级队列,实现更灵活的资源分配。
❷ 进程调度算法1——FCFS、SJF、HNNR
进程的调度方式有两种: 非剥夺调度方式(非抢占式)和剥夺调度方式(抢占方式)。
非抢占式:只允许进程主动放弃处理机。如进程运行结束、异常结束或主动请求I/O阻塞。在运行的过程中即使有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。
抢占式:当一个进程正在处理机上执行时,如果有一个更重要更紧迫的进程需要处理机,则立即暂停正在执行的进程,将处理机分配给更重要更紧迫的那个进程。
下面介绍适用于早期操作系统几种进程调度的算法
先来先服务(FCFS):按照到达的先后顺序调度,事实上就是等待时间越久的越优先得到服务。
下面表示按照先来先服务算法的执行顺序
计算进程的几个衡量指标:
短作业优先算法是非抢占式的算法,但是也有抢占式的版本—— 最短剩余时间优先算法(STRN,Shortest Remaining Time Next) 。
用于进程的调度算法称为短进程优先调度算法(SPF,Shortest Process First)。
短作业/进程优先调度算法:每次调度时选择当前已到达且运行时间最短的作业/进程.。
因为进程1最先达到,此时没有其他线程,所以进程1先被服务。当进程1运行完后,进程2和3已经到达,此时进程3需要的运行时间比进程2少,所以进程3先被服务…
计算进程的几个衡量指标:
最短剩余时间优先算法:每当有进程 加入就绪队列改变时就需要调度 ,如果新到达的进程的所需的运行时间比当前运行的进程剩余时间更短,则由新进程抢占处理机,当前运行进程重新回到就绪队列。此外,当一个 进程完成时也需要调度 。
通过比较上面三组的平均周转时间、平均带权周转时间和平均等待时间可以看出,短作业优先算法可以减少进程的等待时间,对短作业有利。
高响应比优先算法: 非抢占式的调度算法 ,只有当前运行的进程主动放弃CPU时(正常/异常完成、或主动阻塞),才需要进行调度,调度时计算所有就绪进程的相应比,选响应比最高的进程上处理机。
响应比 = (等待时间 + 运行时间)/ 运行时间
上面的三种调度算法一般适用于 早期的批处理系统 ,没有考虑响应时间也不区分任务的紧急程度。因此对用户来说交互性差。
如发现错误,请指正!!!