操作系统进程调度算法

文章目录

总结

  1. 操作系统分为三种批处理系统、交互式(分时)系统、实时系统
  2. 所有系统都需要考虑的是公平、策略强制执行、平衡
  3. 批处理系统需要考虑的是吞吐量、周转时间、CPU利用率
  4. 分时系统需要满足的是响应时间、均衡性
  5. 实时系统需要满足的是满足截止时间,可预测性

概念

系统性能指标

  1. 公平:给每个进程公平的CPU份额
  2. 策略强制执行:保证规定的策略被执行
  3. 平衡:保证系统的所有部分都忙碌
  4. 吞吐量:一定时间段完成的作业数
  5. 周转时间:从提交任务到任务完成的时间,包括分为服务时间和等待时间
  6. CPU利用率:反映CPU忙碌程度的量
  7. 响应时间:从发起请求到接收到响应的时间。类似的有往返时间RTT(Round-Trip Time),往返时间是数据完全发送完(完成最后一个比特推送到数据链路上)到收到确认信号的时间,RTT时延包括发生(传输)时延、传播时延、排队时延、处理时延)。处理时延包括在路由器和交换机上面的时延和应用程序的处理时延
  8. 均衡性:满足用户的期望
  9. 满足截止时间:实时系统有时任务不在截止时间之内完成任务就会出现很大问题,如胰岛素自动注射系统,如果不在截止时间内完成任务,可能会出现生命危险
  10. 可预测性:在多媒体系统需要稳定的传输速率,否则视频一卡一卡的

与执行任务相关的时间

  1. 到达时间:任务到达时刻(时间点)
  2. 服务时间:任务总共执行时间(时间段)
  3. 等待时间:从任务到达后到开始服务之间的时间段
  4. 开始时间:任务开始执行时刻(时间点)
  5. 完成时间:任务完成时刻(时间点)
  6. 周转时间:任务从到达到完成之间时间(时间段)
  7. 带权周转时间:周转时间/服务时间

批处理系统进程调度算法

  1. 先来先服务FCFS(First-Come First-Served):先来先服务是非抢占式的,进程按照请求CPU的时间顺序排队使用CPU,即使有些任务运行时间非常长,也不会中断该任务,优点是公平,CPU利用率高,不用发生太多进程切换,缺点是效率低,当出现IO密集型和CPU密集型两个任务时,如果使用分时算法可以在IO密集型作业等待时执行CPU密集型作业,在IO密集型作业准备好后执行以下IO密集型作业
  2. 最短作业优先SJF(Shortest Job First):非抢占式的,当执行长任务即使来了个短任务也会把长任务执行完
  3. 最短剩余时间优先(Shortest Remaining Time Next):抢占式的,总是选择最短剩余时间的任务执行,这样当执行一个长任务来了一个短任务,短任务会直接抢占执行
  4. 最高响应比优先算法HRN(Highest Response Ratio Next):响应比 = 等待时间 + 服务时间 / 服务时间,则当小任务和大任务一起到达时,小任务响应比较高先执行,如果大任务等待过久,也可以获得比较高的响应比,也可以执行,不会存在饥饿的情况

交互式(分时)系统进程调度算法

  1. 轮转调度RR(round robin):每个进程被分配一个时间片,在这个时间片内该进程可以使用CPU,当然如果等待IO也可以提前释放CPU
  2. 优先级调度:不同进程可能执行的不同重要程度的任务,优先级高的进程会先运行,当优先级高的进程使用完一个时间片后,优先级会降低,一种简单的算法是分配一个比较大的时间片T=50ms,如果一个进程需要使用的时间为t=1ms,则其优先级为50,如果一个进行需要使用时间t=25ms,则其优先级为2,即T/t
  3. 多级队列:将队列分级,每个队列的时间片大小不同,一开始任务都在第一级,用完时间片后如果任务还没完成,则调入优先级低一级的队列,优先级低一级的队列所分的时间片是高一级的两倍,但是只有优先级高的队列空了才会执行低优先级队列中的任务
  4. 最短进程优先:可以保证响应时间短,但是可能长进程饥饿
  5. 保证调度:保证用户进程使用CPU的比率
  6. 彩票调度(lottery scheduling):使用随机算法,当抽奖抽中的进程可以使用时间片
  7. 公平分享调度:不再按进程数量区分,而是按用户分时间片,如果一个用户有很多进程,它也不会额外占用很多CPU时间

实时系统进程调度算法

实时系统一般都引入截止时间,作为优先级调度的依据

  1. 最早截止期优先EDF(Earliest Deadline First)
  2. SCAN-EDF是先按照最早截止期优先,相同截止时间按照SCAN扫描算法,扫描算法是最常用电梯算法,规定一个方向,只有方向上的请求都满足的,或者到头了才调转方向
  3. FD-SCAN(Feasible Deadline SCAN)算法,首先从请求队列中找出时限最早,从当前位置开始移动又可以满足其时限要求的请求,作为下一次SCAN的方向,如果从当前位置移动过去还是不能满足要求,就放弃该任务

参考

《 现代操作系统 》

    原文作者:lolxxs
    原文地址: https://blog.csdn.net/weixin_45754452/article/details/120927246
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞