Linux-进程调度算法

本文思维导图
这里写图片描述

进程调度概念与时机
调度概念:

单处理器:处理机从就绪队列中挑选下一个占用CPU运行的进程
多处理器:从多个CPU中挑选就绪进程可使用的CPU**资源**,也就是挑选一个CPU供进程使用。

时机:

对于非抢占系统

`

  • 进程从运行状态切换到等待状态。

由于进程要等待某个事件,即使CPU给我资源,我也不没办法使用,这时进程就由运行状态切换到等待状态,处理机就可以调度别的就绪进程。

  • 进程退出。

进程退出,操作系统回收资源,这时候CPU空出来,就可以为别的进程提供资源。处理机就可以实行调度了。

对可抢占系统(操作系统可能会剥夺资源)

  • 中断请求被服务例程响应完成时

当有中断请求或系统调用的时候,操作系统会把当前运行的进程转成就绪状态,当前进程就被剥夺了资源。具体情况如下:

  1. 进程片用完

操作系统分配给该进程的时间已经到了,触发定时中断。该进程资源被剥夺。

2.进程从等待切换到就绪

当某个处于等待的进程需要急切被执行时,操作系统就会把该进程从等待状态切换到就绪状态,剥夺当前正在执行进程的资源,从就绪状态挑选一个新的进程。

调度策略

调度策略:确定如何从就绪队列中选择下一个执行进程,
调度策略要解决的问题:

  • 挑选就绪队列中的哪一个进程?
  • 通过什么样的准则来选择?
比较调度算法准则
  • CPU使用率: CPU处于时间繁忙状态的时间百分比,最高可以达到百分之百。

    不同调度算法在执行进程等待IO操作时,是否能找到另一个进程来替换当前进程。这样就可以提高CPU繁忙时间比例。(进程等待IO操作时,IO访问速度远小于CPU执行任务时间的。所以这个过程是相对较长久的)。

  • 吞吐量(系统关心)

    单位时间内完成的进程数量

  • 周转时间(用户关心)

    进程从初始化到结束(包括等待时间)的总时间。

  • 等待时间(用户关心)

    进程在就绪队列中的总时间。处于进程等待的那个时间是必须等的,因为IO操作没结束,你想干别的也干不了。所以就要关心进程的就绪时间:CPU什么时候挑选他的时间,如果一个进程从就绪状态马上就能被执行的话,那么不仅会缩短等待时间,还会大大缩短周转时间。提高效率。

  • 响应时间(对交互性应用)

    从提交申请到产生响应所花费的总时间。比如敲键盘,玩游戏,不能及时响应,这是很影响用户体验的。

算法第一类:对于就绪队列怎么排

先来先服务算法 (FCFS)

算法描述:依靠进程进入就绪状态的先后顺序排列,进程进入等待状态或结束状态时,主动让出CPU资源,就绪队列的下一个进程开始占用CPU。

FCFS算法周转时间:

实例:3个进程,计算时间分别是:12,3,3
下图举例两种排列顺序,并计算周转时间周期。主要观察二者差距。
这里写图片描述

从图中可以看出:两种排队顺序,周转时间差异还是比较明显的。排队顺序影响周转时间。
这种算法跟进程排队顺序有很大关系,排在前面的最先被执行,如果说一个进程很晚到达,排在最后面,那么他的等待时间就会非常久,

算法特性:

  • 优点:简单。排队依据很容易获得,排队过程中也没有什么变化
  • 缺点:
    1. 平均等待时间波动较大。不同的排队顺序,周转时间可能差别很大。如果常进程被排在了后面,将会有很长的周转时间。
    2. IO资源或CPU资源利用效率低。比如CPU密集型进程会导致IO设备闲置,IO密集型进程也等待。而不会执行其他进程。

短进程优先算法(SPN)

算法描述:选择就绪队列中执行时间最短进程占用CPU资源进入运行状态。就绪队列按照预期执行时间来排序。

这里写图片描述

如果就绪队列里某个进程的执行时间比就绪队列进程和正在运行进程剩余时间还要短,那么可以允许他优先排列在就绪队列的前面,这种算法称之为短时间优先算法(SRT),是短时间优先算法的升级版;这种算法具有最优平均周转时间。无论进程顺序怎么换,都不会比他更短。

特点:

  • 优点:具有最短平均周期时间。
  • 缺点:
    1.可能会导致进程饥饿问题。如果一个进程,他声称是执行最长,那么他前面就会不断地有短进程加塞进来,使这个长进程一直不能执行。

    2.需要预知未来。预知下一个CPU计算持续时间,是一个很复杂的过程。

最高响应比优先算法(HRRN)

算法描述:选择就绪队列中响应比R值最高进程。
R=(w+s)/s
w:等待时间(waiting time)
s:执行时间(service time)

等的时间越长,R值会越来越大,他的优先级越大,就会尽早被CPU执行。这样就可以避免短进程优先算法中的饥饿问题了
特点描述:

  • 优点
    1.短进程优先算法的改进,不允许短进程无限制抢占,
    2.关注进程的等待时间,避免无限期的等待。

算法第二类:每次执行时间的控制

时间片轮转算法

时间片定义:分配处理机资源的基本时间单元。
算法描述:等时间片结束。按FCFS算法切换到下一个就绪进程,每隔(n-1)个时间片进程执行一个时间片。
这里写图片描述

时间片设置:
时间片太长,会导致等待时间长,极限 情况下退化成FCFS。
时间片太短:反应迅速,产生大量的上下文切换,大量反复的上下文切换反而会影响 系统的吞吐量
时间片选择目标:按照经验规则,维持上下文开销在百分之一以下。
特性描述:

  • 优点:公平
  • 缺点:额外的上下文切换。平均等待时间差。

算法第三类:多种算法综合

多级反馈队列调度算法

多级队列算法
算法描述:

  • 把就绪队列分成多个独立的子队列,不同的子队列拥有自己的调度算法。

  • 队列之间的调度
    1.固定优先级:先处理前台,然后处理后台,可能会导致饥饿。
    2.时间片轮转:每个队列都有一个确定的能够调度其进程的CPU总时间
    如百分之八十用于前台,剩余的用于后台。

特性:

  • 优点:各种算法综合,效率提高
  • 缺点:子的队列之间没有互动,可能会导致饥饿问题。

    下面是它的升级版

多级反馈队列算法

算法描述:进程可在不同队列间相互移动的多级队列算法
时间片大小随优先级增加而增加。如进程在当前时间没完成,则降级到下一个优先级。
特性:

  • 优点:各种算法综合,效率提高
  • 缺点:

公平共享调度算法(FSS)

算法描述:FFS控制用户对资源的访问。

  • 一些用户组比其他用户组更重要,这样分的资源更多。保证不重要的用户组无法垄断资源
  • 保证不重要的用户组无法垄断资源。未使用的资源按比例分配,没有达到资源使用的用户组获得更高的优先级

    特点:

  • 优点:强调公平

  • 缺点:
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值