进程调度1

进程调度

背景

上下文切换 cpu调度

  • 什么时候调度? 进程状态变化时会发生调度
  • 内核运行调度程序的条件
    • 一个进程从运行状态切换到等待状态
    • 一个进程被终结了
  • 不可抢占
    • 调度程序必须等待事件结束
  • 可以抢占
    • 调度程序在中断被响应后执行
      • 当前进程从运行切换到就绪,或者一个进程从等待切换到就绪
      • 当前运行的进程可以被换出

调度原则

  • 程序执行模型: 程序在cpu突发和I/O中交替

  • 量化分析调度算法的指标

    • cpu使用率 : cpu处于忙状态所占时间的百分比
    • 吞吐量: 在单位时间内完成的进程数量
    • 周转时间 : 一个进程从启动到结束,包括所有等待时间所花费地时间 等待时间+服务时间
    • 等待时间: 进程在就绪队列中的总时间
    • 响应时间 : 从一个请求被提交到产生第一次响应所花费地时间
  • 人们通常都需要“更快”的服务
    什么是更快

    • 传输文件的高宽带 吞吐量大
    • 玩游戏的低延迟 时间快 这两个因素是独立的
      **根据需求不同设计不同的策略 **
  • 公平的定义 : 保证每个进程占用相同的cpu时间 但会增加平均响应时间

调度算法

FCFS

在这里插入图片描述

  • 优点:简单
  • 缺点:
    • 平均等待时间波动较大
    • 花费时间少的任务可能排在时间长的任务后面
    • 可能导致I/O和cpu之间的重叠处理
      • cpu密集型进程会导致IO设备闲置时,IO密集型进程也在等待

短任务SPN

  • 按照预测的完成时间来将任务入队列
  • 抢占SRT
  • 缺点:
    • 可能导致饥饿
      • 连续短任务流会使长任务饥饿
      • 短任务可用时的任何长任务的cpu时间都会增加平均等待时间
    • 需要预知未来
      • 怎么预估下一个cpu突发的持续时间
      • 不知道进程的执行时间
      • 简单的解决办法:询问用户
      • 如果用户欺骗就杀死进程
      • 如果用户不知道怎么办

最高响应比优先算法

  • R=(w+s)/s waiting time service time执行时间
  • 在SPN上改进
  • 不可抢占
  • 关注进程等待了多长时间
  • 防止无限期推迟

Round robin 时间片轮转

在这里插入图片描述

  • 缺点:
    • 额外的上下文切换
    • 时间片的设置 太小 开销大 太大 与FCFS相同
  • 目标:
    • 选择一个合适的时间片
    • 维持上下文切换开销1%

多级反馈对队列

  • 就绪队列被划分成独立的队列
    前台交互 后台批处理
  • 每个队列拥有自己的调度策略
    前台RR 后台FCFS
  • 调度必须在队列间进行
    • 固定优先级
      • 先处理前台,然后处理后台 可能导致饥饿
    • 时间切片
      • 每个对列都得到一个确定的能够调度其进程的cpu总时间
  • 一个进程可以在不同的队列中移动
    例如:
  • n级优先级–优先级调度在所有级别中,RR在每个级别中
    时间片大小随优先级级别增加而增加 如果任务在当前的时间片中没有完成,则降到下一个优先级
  • 优点:
    • cpu密集型任务的优先级下降的很快
    • IO密集型任务留在最高优先级

FFS公平共享

  • 控制用户对系统资源的访问
    • 一些用户组比其他用户组更重要
    • 保证不重要的组无法垄断资源
    • 未使用的资源按照每个组所分配的资源的比例来分配
    • 没有达到资源使用率目标的组获得更高的优先级
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值