参考网站:https://www.studytonight.com
1 什么是CPU调度?
1.1 概念
CPU调度是一种进程,由于诸如I / O等任何资源的不可用,该进程允许一个进程使用CPU,而另一个进程的执行处于暂停状态(处于等待状态),从而充分利用CPU。CPU调度的目的是使系统高效,快速且公平。
每当CPU闲置时,操作系统必须选择就绪队列中要执行的进程之一。选择过程由短期调度程序(或CPU调度程序)执行。调度程序从内存中准备执行的进程中进行选择,并将CPU分配给其中一个。
1.2 CPU调度:调度程序
CPU调度功能中涉及的另一个组件是分派器。调度程序是为短期调度程序选择的进程提供CPU控制的模块。该功能涉及:
- 切换上下文
- 切换到用户模式
- 跳转到用户程序中的正确位置,以从上次离开的位置重新启动该程序。
鉴于在每个流程切换期间都会调用调度程序,因此调度程序应尽可能快。调度程序停止一个进程并启动另一个进程所花费的时间称为调度延迟。
可以使用下图解释调度延迟。
1.3 CPU调度的类型
CPU调度决策可能在以下四种情况下发生:
- 当进程从运行状态切换到等待状态时(用于I / O请求或调用等待以终止子进程之一)。
- 当进程从运行状态切换到就绪状态时(例如,发生中断时)。
- 当进程从等待状态切换到就绪状态时(例如,I / O完成)。
- 进程终止时。
在情况1和4中,就调度而言别无选择。必须选择一个新进程(如果就绪队列中存在一个进程)来执行。但是在情况2和3有一个选择。
当仅在情况1和4下进行调度时,我们说调度方案是非抢占式;否则,调度方案是抢占式的。
1.3.1 非抢占式调度
在非抢占式调度下,一旦将CPU分配给某个进程,该进程将保留CPU,直到通过终止或切换到等待状态释放CPU。
Microsoft Windows 3.1和Apple Macintosh操作系统使用此调度方法。
这是在某些硬件平台上可以使用的唯一方法,因为它不需要抢先式调度所需的特殊硬件(例如:计时器)。
1.3.2 抢占式调度
在这种类型的计划中,通常为任务分配优先级。
有时有必要运行优先级更高的特定任务,尽管该任务正在运行。因此,正在运行的任务会中断一段时间,然后在优先任务完成执行后再继续执行。
1.4 CPU调度:调度标准
在考虑“最佳”调度算法时,有许多不同的标准要检查,它们是:
CPU利用率CPU Utilization
为了充分利用CPU而不浪费任何CPU周期,CPU大部分时间都处于工作状态(理想情况下为100%的时间)。考虑到一个真实的系统,CPU使用率应介于40%(轻载)到90%(重载)之间。
通量Throughput
它是每单位时间完成的过程总数,或者是说单位时间内完成的工作总量。根据特定的过程,范围可能从10 /秒到1 /小时。
周转时间Turnaround Time
它是执行特定过程所花费的时间,即从提交过程到完成过程之间的时间间隔(挂钟时间)。
等待的时间Waiting Time
在就绪队列中等待进程等待就绪队列以获取CPU上的控制权所花费的时间总和。
平均负载Load Average
它是就绪队列中等待轮流进入CPU的平均进程数。
响应时间Response Time
从提交请求到生成第一个响应所花费的时间。请记住,这是直到第一个响应而不是流程执行(最终响应)完成的时间。
通常,CPU利用率和吞吐量会最大化,而其他因素也会有所减少,以进行适当的优化。
1.5 调度算法
为了确定首先执行哪个进程以及最后执行哪个进程以最大程度地利用CPU,计算机科学家定义了一些算法,它们是:
- 先来先服务(FCFS)调度
- 最短工作优先(SJF)调度
- 优先排程
- 循环调度(RR)调度
- 多级队列调度
- 多级反馈队列调度