操作系统学习笔记五.CPU调度

  1. 长程调度:
    又称作业调度、高级调度;
    是“新建”状态转换到“就绪”状态;
    由调度程序选择;
    控制多道程序的“道/度”

  2. 短程调度:
    又称CPU调度、低级调度;
    调度程序选择下一个执行进程;

  3. 比较: (短程/长程)
    切换频率:高,低;
    切换开销:小,大;
    操作系统中应用:必需 ,可选

  4. 中程调度:
    又称:交换;
    将进程在内存和外存间换进换出;
    目的:节省内存空间;

  5. 进程调度队列:
    就绪队列:在主内存中处于就绪状态并等待执行的所有进程集合;
    设备队列:等待某一I/O设备的进程队列;
    进程的执行过程实际上就是进程在各种队列之间的迁移;

  6. CPU调度过程:
    调度程序:根据某种策略选择一个就绪进程;一个CPU同时只能运行一个进程;
    分派程序:负责把CPU的控制权转交给CPU调度程序;切换上下文;切换到用户态;跳转到用户程序的适当位置并重新运行之;
    分配延迟:分派程序终止一个进程的运行并启动另一个进程运行所花的时间;

  7. 调度方式:
    非抢占调度:
    一旦把CPU分配给进程后,系统不可以抢占已分配的CPU并分配给其他进程;
    只有进程自愿释放CPU,才可以把CPU分配给其他进程;
    优点:易实现,调度开销小,适合批处理系统;
    缺点:响应时间长,不适合交互式系统;
    抢占式调度:
    调度程序可根据某种原则暂停某个正在执行的进程,将已分配给它的cpu重新分配给另一进程;
    可防止但一进程长时间独占CPU;
    系统开销大;

  8. 抢占式与非抢占式的区分:
    运行进程是否是自愿放弃CPU;

  9. CPU调度可能发生在当一个进程:
    从运行转到等待(非抢占式)
    从运行转到就绪(抢占式)
    从等待转到就绪(抢占式)
    终止运行(非抢占式)

  10. 调度准则-基本指标:
    CPU利用率:固定时间内CPU运行时间的比例;
    吞吐量:单位时间内运行完的进程数;
    周转时间:进程从提交到结束的全部时间;
    等待时间:进程等待调度(不运行)的时间片总和;
    响应时间:从进程提交到首次运行(而不是输出结果)的时间段,也就是第一段的等待时间

周转时间=等待时间+运行时间;
响应时间<=等待时间;

  1. 调度准则-优化方法:
    最大的CPU利用率;
    最大的吞吐量;
    最短的周转时间;
    最短的等待时间;
    最短的响应时间;
    解决方法:调度算法:就绪队列中哪个进程被选中运行

  2. 先来先服务算法(FCFS):
    按进程请求CPU的先后顺序使用CPU;
    算法特点:
    实现简单,可使用FIFO队列实现;
    非抢占;
    公平;
    当一个长进程后面的多个短进程,让长进程先执行,会让后面的短进程等待较长时间,从而导致CPU和设备利用率降低

  3. 短作业优先(SJF)调度算法:
    关联到每个进程下次运行的CPU区间长度,调度最短的进程;
    两种模式:
    非抢占式调度:一旦进程拥有CPU,它的使用权限只能在该CPU区间结束后让出;
    抢占式调度:发生在有比当前进程剩余时间片更短的进程到达时,也称为最短剩余时间优先调度;
    SJF最优:对一组指定的进程而言,它给出了最短的平均等待时间;

  4. SJF算法的难点:如何知道下一个CPU区间的长度;

  5. 指数估算法:通过先前的CPU区间长度及其指数平均进行预测;

  6. SJF通常用于长程调度;

  7. 优先级调度(PR):
    基于进程的紧迫程度,由外部赋予每个进程相应的优先级,CPU分配给最高优先级的进程;
    每个进程都有一个优先数,优先数为整数;
    默认:小优先数具有高优先级;
    目前主流的操作系统调度算法;
    调度模式:抢占式和非抢占式;

  8. 优先级可静态不变,也可动态调整;

  9. 优先级类型:
    静态优先级:
    进程创建时确定,在运行期间不变;
    简单易行,系统开销小;
    不够精确,可能会出现饥饿问题;

动态优先级:
进程创建时的优先级随进程推进或等待时间增加而改变;
如高响应比优先调度算法

  1. 优先级调度算法的优缺点:
    优点:实现简单,考虑了进程的紧迫程度;灵活,可模拟其他算法;
    存在问题:饥饿-低优先级的进程可能永远得不到运行;
    解决方法:老化-视进程等待时间的延长提高其优先数;

  2. 时间片轮转(RR):
    专为分时系统设计,类似于FCFS,但增加了抢占;
    时间片:小单位的CPU时间,通常为10-100毫秒;
    为每个进程分配不超过一个时间片的CPU,时间片用完后,该进程将被抢占并插入就绪队列末尾,循环执行;
    假定就绪队列中有n个进程、时间片为q,则任何一个进程的等待时间不会超过(n-1)*q;

  3. 通常,RR的平均周转时间比SJF长,但响应时间要短;

  4. 时间片大小:
    q大———FCFS
    q小———增加上下文切换时间;
    一般准则:时间片/10>进程上下文切换时间

  5. 以上算法存在局限性,如:
    SJF有利短进程而不利长进程;
    RR系统开销大;
    所有进程采用同一策略,不合理

  6. 不同类型的进程需要不同策略:
    交互进程需要短的响应时间;批处理进程需要短的等待时间;

  7. 多级队列调度(MLQ):
    系统中存在多个就绪队列,每个队列有自己的调度算法;
    要素:
    队列数;
    每一队列的调度算法;
    决定新进程将进入哪个队列的方法

  8. 多级反馈队列调度(MLFQ):
    多级队列的延伸;
    不同:多级队列:进程不能在不同队列间移动;多级反馈队列:进程能在不同队列间移动;
    多级反馈队列调度需要考虑以下问题:
    队列数;
    每一队列的调度算法;
    决定进程升级(低级队列到高级队列)的方法;
    决定进程降级(高级队列到低级队列)的方法;
    决定新进程将进入哪个队列的方法;

  9. 多处理器调度:
    适用于多核处理器的CPU调度;
    多个CPU可用时,CPU调度将更为复杂;
    对称多处理器(SMP)- 每个处理器决定自己的调度方案,主流方案;
    非对称多处理器(ASM)- 仅一个处理器能处理系统数据结构,减轻对数据的共享需求;
    调度算法:和单处理器相似;
    负载平衡:将任务平均分配给多个处理器;
    亲和性:进程在某个给定的CPU上尽量长时间地运行而不被迁移到其他处理器的倾向性;
    软亲和性:进程通常不会在处理器之间频繁迁移;
    硬亲和性:进程不会在处理器之间迁移;

  10. 单队列调度方法(SQMP):
    单队列多核调度方法:
    系统有一个就绪队列;
    当任意一个CPU空闲时,就从就绪队列中选择一个进程到该CPU上运行;
    优点:
    容易从单核调度算法推广到多核/多处理器;
    实现简单,负载均衡;
    缺点:
    不具有亲和性;
    加锁问题;

  11. 多队列调度方法(MQMP):
    系统有多个就绪队列,每个CPU一个;
    每个就绪队列有自己的调度算法,并且调度相互独立;
    优点:
    亲和性好;
    不需要加锁;
    缺点:
    负载不均衡;
    策略:
    “偷”进程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值