操作系统(第二章)----2.处理机调度

一 处理机调度的概念

(一) 定义

当有一堆任务需要处理,但由于系统的资源有限,因此进程争夺处理机的情况在所难免

如上述,处理机调度是指按照一定的算法,从就绪队列中选择一个进程并将处理机分配给他使用,以实现进程

的并发执行过程

类比排队:

在这里插入图片描述

(二) 层次
1.作业调度

又称高级调度,是指从外存队列中选择一个或多个作业,为他们分配内存和输入输出的必要资源,为其建立进程(也即建立PCB),并调度到内存中,等到获取CPU;

也即,作业调度是外存与内存之间的调度

在这里插入图片描述

2.中级调度

又称内存调度,主要作用是为了提高内存的利用效率

因为内存资源有限,不可能放置所有的作业.因此可先将那些还无法运行的作业(可能现有的资源还不够满足其运行条件),调至外村中进行等待,将其进程状态设置为挂起态.待内存资源空闲时,再右中级调度决定将哪些满足条件的进程,调回至内存中.

在这里插入图片描述

3.进程调度

又称低级调度.主要任务是按照某种算法和策略,从就绪队列中选择一个进程,并将空闲的CPU分配给其使用

在这里插入图片描述

4.三级调度的联系

在这里插入图片描述

(三)调度时机
1.何时能调度
  • 当前进程主动放弃处理机

    • 进程终止
    • 进程异常
    • 进行系统调用
  • 当前进程被动放弃处理机

    • 时间片用完
    • 有更高级的进程进入队列中
2.何时不能调度
  • 在处理中断的过程中,一般中断过程复杂,且与硬件紧密联系,所以很难在中断过程中进行进程切换

  • 进程处于操作系统内核程序临界区中

    操作系统内核程序临界区:

    一般用来访问某种内核数据结构的,如进程的就绪队列

  • 在进行原子操作的过程

3.调度的方式
  • 非剥夺式,即只允许进程主动的放弃CPU
  • 剥夺式,也即当有更高级的进程进入队列时,会剥夺CPU当前的使用权给该进程使用,类似于VIP客户插队…
4.调度与进程切换的区别
  • 侠义进程调度:只从就绪队列中按照一个算法跳出一个进程,分配CPU
  • 进程切换:一个进程让出处理机,由另一个进程使用
  • 广义进程调度:包括选择一个进程和进程切换两个步骤
(四) 调度准则
1.CPU利用率

利用率=(CPU的运行时间)/总时间

2.系统吞吐量

吞吐量=单位时间内CPU完成作业的数目

3.周转时间

周转时间是指作业从提交到结束所用的时间

周转时间=等待+就绪队列排队+CPU处理+输入输出时间的总和

4.等待时间

等待时间=作业等待的时间之和(不包括服务的时间)

也即,作业在外存队列和就绪队列上的等待时间,但不包括IO时 间(因为IO相当于已经被服务了)

5.响应时间

指用户从提交作业到首次响应所用的时间.

(五) ⭐调度算法
1.先到先来 --FCFS

顾名思义,就是哪个进程先到达就绪队列,就将空闲的CPU分配给该进程

  • 优点:算法简单
  • 缺点:效率低,对于短作业不公平
2.短作业优先 – SJF

短作业优先原则,即从就绪队列中选一个评估运行时间最短的进程,分配CPU

  • 优点:对短作业有利

  • 缺点:

    • 对长作业不利

    • 由于进程的评估运行时间是用户提供的,而用户可能不能准确提供运行时间

      因此,或许无法做到真正的短作业优先调度

    • 无法让更急迫的作业率先运行

3.高相应比优先 – HRRN

高相应比优先算法主要用于作业调度,是对FCFS调度算法和SJF调度算法的一种综合平衡,同时考了了每个作业的等待时间和估计的运行时间.在每次进行作业调度时,先计算就绪队列中每个进程的响应比,选择最高的投入使用

相应比=(等待时长+服务时长)/服务时长

基于上述公式:

  • 当服务时长相同时,等待时长越长,相应比越高,也即(FCFS)算法的思想
  • 当等待时长相同时,服务时长越短,相应比越高,也即(SJF)算法的思想
4.时间片轮换算法 --RR

(Round-robin)

也即分时操作系统所用的算法,每次给一个进程一个固定的时间片,若该时间内未执行完,

则剥夺该进程的CPU使用权,将该进程放置到就绪队列尾部,将CPU分配给其他进程

对于RR算法,最重要的就是确定时间片的大小

  • 若时间片太大,则相当于退化到了FCFS算法
  • 若太小,则频繁的切换进程,导致系统开销过大
5.优先级算法

类似于优先队列的思想,每次从对立中选择优先级最高的进程分配CPU

通常,优先级的设计如下:

  • 系统进程>用户进程
  • 前台进程>后台进程
  • IO型进程(频繁使用io设备)>计算型(更多的利用CPU,较少使用IO)
6.多级反馈队列算法

首先关于上述的各个算法的优点:

在这里插入图片描述

那么,能否找到一个算法,能同时具备上述的优点呢?

也即:多级反馈队列算法:

在这里插入图片描述

特点如下:

  • 设置多个队列,每个队列的优先级从高到低
  • 每个队列的时间片不同,从低到高
  • 新进程进入内存后,先放入第一级队列,按FCFS算法等待调度,若在第一级队列的时间片内未完成,则剥夺其CPU使用权,放入第二级队列尾部,再按FCFS算法调度
  • 当且仅当前N-1级队列都无任务后,才能调度第N级的队列

优势如下:

  • 短作业优先
  • 即使是长作业,也能通过前几个队列得到部分的运行,而不会长期得不到处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值