07: cpu调度
CPU Scheduling
content
本文简要说明了多进程任务是怎么由cpu调度运转的,我们可以将负载的逻辑简化,使用多个假设构建简单的模型,并一步步的舍弃假设条件,逐渐逼近真实场景下的调度过程。
假设:
- 任务运行时长相同
- 任务是同时到达cpu的
- 任务一旦运行则不可中断
- 任务运行过程中没有IO操作
- 任务所需时间是已知的
在固定假设后,我们还需要两个指标来描述调度结果是否是符合预期的。指标1:周转时长;指标2:响应时长。
指标:
周转时长=任务完成时刻 - 任务到达时刻
响应时长=任务第一次被执行的时刻 - 任务到达时刻
先进先出(FIFO)
first in first out, 因为任务时长都一致,假设ABC三个任务同时到达,且都需要10s运行完。那么对于单个cpu,以排队的方式运行他们即可。

实际上任务运行时长基本都是非等长的,我们尝试着去掉假设1。如果ABC同时到达,A运行时长为100s,BC运行时长仍为10s。CPU面对同时到达的任务必须给出一个运行顺序,当优先运行A时,BC将被严重阻塞。

此时整体的周转时间=(100+110+120)/3=110s
最短任务优先(SJF)
shortest job first, 优先运行耗时短的任务。ABC同时到来,这时计算下各自运行时长,优先运行小任务。此时整体的周转时间=(10+20+120)/3=50s。

实际上任务的到来时间并非同时,往往是前后交错的,我们尝试抛弃假设2。 ABC三个任务的耗时不变,但是A在0刻到达,BC在10刻到达。受限于假设3,必须等A执行结束再执行BC,那么最终运行效果将降级为FIFO。为此我们必须再尝试抛弃假设3。

最短完成时间优先(STCF)
shortest time to complete first, 这里引入的抢占的概念,当BC到来,即使A在运行,也要优先给BC提供资源,保证小任务优先执行。(BC到达时,A还需要90s,BC相对来说是小任务)

此时整体周转时间=(10+20+120)/3=50s,通过任务抢占,适应了“任务在不同时间达到”这一场景。
轮转(RR)
round robin, 轮转调度。当人使用计算机交互时,任务的响应速度对使用感影响较大,因此响应时间成为不可忽视的一个指标。为了更快的响应,os可以利用硬件提供的时钟中断,收回cpu控制权,计算出需要及时响应的任务并运行。
比如ABC同时到达,并都需运行5s,时钟中断周期(时间片)为1s。在SJF和RR下的表现:

SJF整体响应时长=(0+5+10)/3=5s,周转时长=(5+10+15)/3=10s
RR整体响应时长=(0+1+2)/3=1s,周转时长=(13+14+15)/3=14s
实际上,时间片执行完后的任务切换也是需要时间的,如果任务切换过于频繁,或是时间片太小,上下文的切换成本将会大大提高,耗时也会收到较大影响。
如果想快速执行完所有任务,可以使用STCF,但会舍弃一些公平性,任务将无法公平的获取资源;如果想要公平性,可以使用RR,但这不可避免的会损耗一些时间。
结合IO
实际上任务的运行不止使用到CPU,往往还需与IO驱动进行交互,网络通信,文件读写等等。我们需要抛弃假设4。 当IO发生时,将任务A停止并切换到另一个等待调度的任务B,A的IO结束后再切换回执行。使CPU和IO利用率尽可能提高。

最终的问题
对于假设5,实际上任务运行时长是不可估算的,我们可以尝试着从过去的运行规律总结些经验,并以此推算未来任务运行时长。
homework
1.使用 SJF 和 FIFO 调度程序运行长度为 200 的 3 个作业时,计算响应时间和周转时间。
SJF:
响应时间=(0+200+400)/3=200s
周转时间=(200+400+600)/3=400s
FIFO: 同上
2.现在做同样的事情,但有不同长度的作业,即 100、200 和 300。
SJF:
response=(0+100+300)/3=400/3s
turnaround=(100+300+600)/3=1000/3s
FIFO: 同上
3.现在做同样的事情,但采用 RR 调度程序,时间片为 1。
RR:
response=(0+1+2)/3=1s
turnaround=(298 + 300+199 + 300+200+100)/3=456.67s
4.对于什么类型的工作负载,SJF 提供与 FIFO 相同的周转时间?
任务时长相同。
5.对于什么类型的工作负载和量子长度,SJF 与 RR 提供相同的响应时间?
任务时长 不大于 时间片时长。
6.随着工作长度的增加,SJF 的响应时间会怎样?你能使用模拟程序来展示趋势吗?
SJF对长任务不利,响应时长增加。
7.随着量子长度的增加,RR 的响应时间会怎样?你能写出一个方程,计算给定 N 个
工作时,最坏情况的响应时间吗?
时间片变长,响应时间也变长。
(0 + C + 2C + 3C + ... + (n-1)C) = (n-1)nC/2

浙公网安备 33010602011771号