[os] 处理机调度

1、处理机调度的3个层次

要做什么调度发生在发生频率对进程状态的影响
高级调度(作业调度)按照某种规则,从后备队列中选择合适的作业将其调入内存,并为其创建进程外存->内存 (面向作业)最低无->创建态->就绪态
中级调度(内存调度)按照某种规则,从挂起队列中选择合适的进程将其数据调回内存外存->内存 (面向进程)中等挂起态->就绪态(或者是阻塞挂起->阻塞态)
低级调度(进程调度)按照某种规则,从就绪队列中选择一个进程为其分配处理机内存->CPU最高就绪态->运行态

高级调度(作业调度)

由于内存空间有限,有时无法将用户提交的作业全部放入内存,因此就需要确定某种规则来决定将作业调入内存的顺序。

中级调度(内存调度)

引入了虚拟存储技术之后,可将暂时不能运行的进程调至外存等待。等它重新具备了运行条件且内存又稍有空闲时,再重新调入内存,提高内存利用率和系统吞吐量。

暂时调到外存等待的进程状态为挂起状态。值得注意的是,PCB并不会一起调到外存,而是会常驻内存。PCB中会记录进程数据在外存中的存放位置,进程状态等信息,操作系统通过内存中的PCB来保持对各个进程的监控、管理。被挂起的进程PCB会被放到的挂起队列中。

一个进程可能会被多次调出、调入内存,因此中级调度发生的频率要比高级调度更高。

低级调度(进程调度)

其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。

进程调度的时机

在这里插入图片描述

进程调度的方式
  • 非剥夺调度方式,又称非抢占方式。即,只允许进程主动放弃处理机。在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。
    实现简单,系统开销小但是无法及时处理紧急任务,适合于早期的批处理系统

  • 剥夺调度方式,又称抢占方式。当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。
    可以优先处理更紧急的进程,也可实现让各进程按时间片轮流执行的功能(通过时钟中断)。适合于分时操作系统、实时操作系统

2、调度算法的评价指标

  1. CPU利用率:指CPU “忙碌”的时间占总时间的比例。
  2. 系统吞吐量:单位时间内完成作业的数量
  3. 周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔。
    • 平均周转时间=各作业周转时间之和 / 作业数
    • 带权周转时间=作业周转时间 / 作业实际运行的时间
    • 平均带权周转时间=各作业带权周转时间之和 / 作业数
  4. 等待时间,指进程或作业处于等待处理机状态时间之和,等待时间越长,用户满意度越低。
  5. 响应时间,指从用户提交请求到首次产生响应所用的时间。

3、调度算法

先来先服务

适合长作业和CPU繁忙型作业(需要大量的CPU时间进行计算的作业)的调度,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,造成了短作业等待时间过长。

短作业(进程)优先

适合短作业。该算法对长作业不利。完全未考虑作业的紧迫程度,不能保证紧迫性作业(进程)会被及时处理。

高优先权优先

  1. 非抢占式优先权算法:系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成;或因发生某件事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。

  2. 抢占式优先权算法:在其执行期间又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程的执行,重新将处理机分配给新到的优先权最高的进程。

  3. 高响应比优先调度算法:HRRN为每个作业引入动态优先权,使作业的优先级随着等待时间的增加而提高:优先权 =(等待时间+要求服务时间)/要求服务时间= 响应时间 / 要求服务时间。

如何设置优先级

  1. 系统进程优先级 > 用户进程
  2. 前台进程优先级 > 后台进程
  3. I/O繁忙型进程优先级 > CPU繁忙型 I/O设备和CPU可以并行工作,越早执行I/O繁忙型进程,就能越早的让IO设备投入工作

基于时间片的轮转

  1. 时间片轮转法:系统将所有的就绪进程按先来先服务(FCFS)的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。当执行的时间片用完时进程中断,并将它送往就绪队列的末尾。

  2. 多级反馈队列调度算法(公认的较好的进程调度算法):设置多个就绪队列,并为各个队列设置不同的优先级。优先级依次降低。每个队列中进程的时间片大小也各不相同,在优先权越高的队列中,每个进程所规定的执行时间片就越小,后面的队列时间片就比上一个队列时间片长一倍。当一个进程进来时,先放入第一队列末尾,如果在时间片内没有执行完,就下放到第二个队列末尾,依次类推……。仅当第1~(i-1)队列均空闲时,才会调度第i队列中的进程运行。当有高于当前运行的进程进入时,系统将抢占当前进程时间片,将其放入他原来在的队列尾而不是下一层队列,让高优先级程序先运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值