本文是
操作系统系列
第四篇文章,介绍处理机调度进程相关算法。进程调度的算法和调度框架(Kubernetes)类似,可以相互借鉴。原文链接,更多内容见公号机器学习与系统
,欢迎与我互动~
这里写目录标题
概念
发生进程切换时,本质是CPU资源占用者间的切换。此时需要保存当前进程在PCB中的执行上下文(CPU状态),然后恢复下一个进程的执行上下文。
处理机调度涉及两个方面,一是选择进程:从就绪队列中挑选下一个占用CPU运行的进程。二是选择CPU资源:从多个可用CPU中挑选就绪进程可使用的CPU资源。
准则
调度策略是指确定如何从就绪队列中选择下一个执行进程,可以理解为调度算法。评价算法的基准有以下几个:
- CPU使用率:CPU处于忙状态的时间百分比
- 吞吐量:单位时间内完成的进程数量
- 周转时间:进程从初始化到结束(包括等待)的总时间
- 就绪等待时间:进程在就绪队列中的总时间
- 响应时间:从提交请求到产生响应所花费的总时间
另外,处理机调度需要保证公平:
- 保证每个进程占用相同的CPU时间
- 保证每个进程的等待时间相同
算法
先来先服务算法(FCFS: First Come, First Served)
FCFS依据进程进入就绪状态的先后顺序排列,它简单、易于实现。
但是也存在一些缺点,以上图为例,进程到达次序不同,对周转时间影响较大。总结如下:
- 平均等待时间波动较大:短进程可能排在长进程后面
- I/O资源和CPU资源的利用率较低:CPU密集型进程会导致I/O设备闲置时,I/O密集型进程也等待
短进程优先算法(SPN)
SPN是F