经典的进程调度算法
进程调度,就是「从进程的就绪队列(阻塞)中按照一定的算法选择一个进程并将 CPU 分配给它运行」,以实现进程的并发执行。这是操作系统中最基本(最低级)的一种调度,在一般的操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。 2. 非抢占式进程调度算法 所谓非抢占式的意思就是,当进程正在运行时,它就会一直运行,直到该进程完成或发生某个事件发生而被阻塞时,才会把 CPU 让给其他进程。 对应的,抢占式的意思就是,当进程正在运行的时,可以被打断,把 CPU 让给其他进程。 ① 先到先服务 FCFS 先来先服务调度算法(First Come First Serve,FCFS):按照进程到达的先后顺序进行调度,「先到的进程就先被调度」,也就是说,等待时间越久的越优先得到服务。点:公平、算法实现简单 缺点:对短进程不利。排在长进程后面的短进程需要等待很长时间,短进程的响应时间太长了,用户交互体验会变差。 ② 最短作业优先 SJF 最短作业/进程优先调度算法(Shortest Job First,SJF):「每次调度时选择当前已到达的、且运行时间最短的进程」。最短作业优先算法和先到先服务恰好相反,先到先服务对短进程不利,而最短作业优先算法对长程不利。因为如果一直有短进程到来,那么长进程永远得不到调度,长进程有可能会饿死,处于一直等待短作业执行完毕的状态。 ③ 高响应比优先 HRRN 高响应比优先算法(Highest Response Ratio Next,HRRN):只有当前运行的进程主动放弃 CPU 时(正常/异常完成,或主动阻塞),才需要进行调度,「调度时计算所有就绪进程的响应比,为响应比最高的进程分配 CPU」。响应比 = (进程的等待时间 + 进程需要的运行时间) / 进程需要的运行时间 抢占式进程调度算法 抢占就是指当进程正在运行的时,可以被打断,把 CPU 让给其他进程。抢占的原则一般有三种,分别是时间片原则、优先权原则、短作业优先原则。 ① 最短剩余时间优先 SRTN 最短剩余时间优先(Shortest Remaining Time Next,SRTN)算法是「最短作业优先的抢占式版本」。
「当一个新的进程到达时,把它所需要的整个运行时间与当前进程的剩余运行时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程,否则新的进程等待。」 (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |