进程调度算法

进程的三种状态:

1、等待态:等待某个事件的完成;
2、就绪态:等待系统分配处理器以便运行
3、运行态:占有处理器正在运行

三种状态的转化:

运行态到等待态:往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的;
等待态到就绪态:等待的条件已经满足,只需要分配到处理器后就能运行;
就绪态到运行态:系统按某种策略选中就绪队列中的一个进程占用处理器;
运行态到就绪态:由于外界原因是运行状态的进程让出处理器,例如有更高优先级的进程来抢占处理器,或时间片(时间片是系统分配给程序的运行时间)用完。

调度方式:

剥夺方式:当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给他的处理机,将之分配给其他进程,剥夺原则有:优先权原则、短进程优先原则、时间片原则。
非剥夺方式:分配程序一旦吧处理机分配给某进程后便让他一直运行下去,知道进程完成或发生事件而阻塞时,才把处理机分配给另一个进程。

进程调度算法

主要有以下几种,本文旨在简单复习总结,详细的算法实现请有兴趣的读者自行探究。

1、先来先服务调度算法(FCFS,first come first served):谁第一个排队,谁就先被执行,在它执行过程中,不会中断它;
在这里插入图片描述
2、短作业优先调度算法(SJF,shortest job first):对预计执行时间短的进程有限分配处理机,通常后来的短进程不会抢先正在执行的进程;对长进程非常不利,可能长时间得不到执行。
在这里插入图片描述

基于优先级的调度算法

优先权调度算法的类型

  1. 非抢占式优先权算法

在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成;
或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。这种调度算法主要用于批处理系统中;也可用于某些对实时性要求不严的实时系统中。

  1. 抢占式优先权调度算法
    3、最高响应比优先法(HRRN,highest response radio next):对于FCFS和SJF的平衡,FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF只考虑了执行时间而未考虑等待时间的长短,因此两种算法在某种极端的情况下会带来某些不便。HRRN通过综合这两种情况算出响应比R,根据响应比完成调度。
    作业的优先级随着等待时间的增加而以速率a 提高,响应比Rp的计算公式如下:
    在这里插入图片描述
    优点:长作业也有机会投入运行,缺点:每次调度前要计算响应比。
    在这里插入图片描述
基于时间片的调度算法:

4、时间片轮转法(RR,Round-Robin):采用剥夺方式,每个进程被分配一个时间段,按照在队列中的顺序交替执行;不利于处理紧急作业。
 时间片长度变化的影响

过长->退化为FCFS算法,进程在一个时间片内都执行完,响应时间长。

过短->用户的一次请求需要多个时间片才能处理完,上下文切换次数增加,响应时间长。

  一个较为可取的时间片的大小是略大于一次典型的交互所需时间,是大多数交互程序能在一个时间片内完成。

对响应时间的要求:T(响应时间)=N(进程数目)*q(时间片)

就绪进程的数目:数目越多,时间片越小

系统的处理能力:应当使用户输入通常在一个时间片内能处理完,否则使响应时间,平均周转时间和平均带权周转时间延长。
在这里插入图片描述
在这里插入图片描述
5、多级反馈队列(multilevel feedback queue): UNIX使用这种调度算法;进程在进入待调度的队列等待时,首先进入优先级最高的Q1中等待;首先调度优先级高的队列中的进程。若高优先级队列中已经没有调度的进程,则调度次优先级队列的进程;同一队列中的各个进程按照时间片轮转调度;在低优先级队列中的进程在运行时,又有新到达的作业,那么在运行完这个时间片后,CPU马上分配给新到达的作业(剥夺)。

通常在使用多级队列调度算法时,进程进入系统时被永久地分配到某个队列。但是,多级反馈队列调度算法允许进程在队列之间迁移。如果进程使用过多的 CPU 时间,那么它会被移到更低的优先级队列。在较低优先级队列中等待过长的进程会被移到更高优先级队列。这种形式可阻止饥饿的发生。

在这里插入图片描述

在这里插入图片描述

详细的请看进程调度算法:https://blog.csdn.net/u011080472/article/details/51217754#t0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值