《操作系统导论》知识总结 第七章 进程调度:介绍

工作负载假设

为了方便概念的描述,对操作系统中运行的进程(有时也叫工作任务)做出如下的假设:

  1. 每一工作运行相同的时间
  2. 所有的工作同时到达。
  3. 一旦开始,每个工作保持运行直到完成。
  4. 所有的工作只是用 CPU(即它们不执行 IO 操作)。
  5. 每个工作的运行时间是已知的。

调度指标

除了做出工作负载假设之外,还需要一个东西能让我们比较不同的调度策略:调度指标。

任务的周转时间定义为任务完成时间减去任务到达系统的时间。

T 周转时间= T 完成时间−T 到达时间

因为我们假设所有的任务在同一时间到达,那么 T到达时间 = 0,因此 T周转时间= T完成时间。随着我们放宽上述假设,这个情况将改变。

周转时间是一个性能指标,而另一个有趣的指标是公平性能公平在调度系统中往往是矛盾的。例如,调度程序可以优化性能,但代价是以阻止一些任务运行,这就降低了公平。

先进先出(FIFO)

先进先出(First In First Out 或 FIFO)调度,有时候也称为先到先服务(First Come First Served 或 FCFS)。

FIFO 有一些积极的特性:它很简单,而且易于实现。而且,对于我们的假设,它的效果很好。

假设有三个几乎同时到达的进程,到达顺序为 A,B,C,B 和 C 执行 10s,A 有执行 10s 和执行 100s 的情况,调度结果如下图:
在这里插入图片描述
两者的平均周转周期

  • 左:(10 + 20 + 30)/3 = 20
  • 右:(100 + 110 + 120)/3 = 110

这个问题通常被称为护航效应(convoy effect),一些耗时较少的潜在资源消费者被排在重量级的资源消费者之后。

最短任务优先(SJF)

最短任务优先(Shortest Job First,SJF):先运行最短的任务,然后是次短的任务,如此下去

左图是在上一节条件下使用 SJF 策略时的表现,右图是在到达时间间隔 10s 条件下使用 SJF 策略时的表现:
在这里插入图片描述
两者的平均周转周期

  • 左:(10 + 20 + 120)/3 = 50
  • 右:(100+(110−10)+(120−10))/3 = 103.33

从图中可以看出,当 ABC 几乎同时到达时,SJF 相较于 FIFO 有较好的表现,但当 B 和 C 在 A 之后不久到达,由于 SJF 无法抢占,它们仍然被迫等到 A 完成,从而遭遇同样的护航问题。

最短完成时间优先(STCF)

我们放宽第一节提出的假设条件 3(工作必须保持运行直到完成),也就是允许抢占

向 SJF 添加抢占,称为最短完成时间优先(Shortest Time-to-Completion First,STCF)或抢占式最短作业优先(Preemptive Shortest Job First ,PSJF)调度程序

每当新工作进入系统时,它就会确定剩余工作和新工作中,谁的剩余时间最少,然后调度该工作:
在这里插入图片描述
平均周转周期为:

  • (120 + 10 + 20)/3 = 50

新度量指标:响应时间

响应时间定义为从任务到达系统到首次运行的时间。

T 响应时间= T 首次运行−T 到达时间

用户将会坐在终端前面,同时也要求系统的交互性和响应性好,所以响应时间是有意义的

轮转

轮转(Round-Robin,RR)调度:在一个时间片(time slice,有时称为调度量子,scheduling quantum)内运行一个工作,然后切换到运行队列中的下一个任务,而不是运行一个任务直到结束。它反复执行直到所有任务完成。因此,RR 有时被称为时间切片(time-slicing)。

请注意,时间片长度必须是时钟中断周期的倍数。因此,如果时钟中断是每 10ms 中断一次,则时间片可以是 10ms、20ms 或 10ms 的任何其他倍数。

来看一个例子:假设 3 个任务 A、B 和 C 在系统中同时到达,并且它们都希望运行 5s。

在这里插入图片描述
平均响应时间:

  • SJF:(0 + 5 + 10)/ 3 = 5
  • RR:(0 + 1 + 2)/3 = 1

时间片长度对于 RR 是至关重要的。时间片长度越短,RR 在响应时间上表现越好。然而,时间片太短是有问题的:突然上下文切换的成本将影响整体性能。因此,系统设计者需要权衡时间片的长度,使其足够长,以便摊销(amortize)上下文切换成本,而又不会使系统不及时响应(书上53页介绍了摊销的基本知识)

结合I/O

首先,我们将放宽假设 4:所有程序都不执行 I/O。

一种常见的方法是将 A 的每个 10ms 的子工作视为一项独立的工作。因此,当系统启动时,它的选择是调度 10ms 的 A,还是 50ms 的 B。对于 最短完成时间优先(STCF),选择是明确的:选择较短的一个,在这种情况下是 A。然后,A 的工作已完成,只剩下 B,并开始运行。然后提交 A 的一个新子工作,它抢占 B 并运行 10ms。这样做可以实现重叠(overlap),一个进程在等待另一个进程的 I/O 完成时使用 CPU,系统因此得到更好的利用
在这里插入图片描述
有了应对I/O的基本方法,我们来到最后的假设5:调度程序知道每个工作的长度。如前所述,这可能是可以做出的最糟糕的假设。事实上,操作系统通常不知道每个作业的长度。因此,我们将在第8章利用最近的历史预测未来,从而解决这个问题。

小结

我们介绍了调度的基本思想,并开发了两类方法。第一类(SJF,STCF)是运行最短的工作,从而优化周转时间(但对响应时间不利)。第二类(RR)是交替运行所有工作,从而优化响应时间(但对周转时间不利)。

补充

等待时间

等待时间是书上没有的内容,结果期中考试考了,无语子😅 😅 😅

对于计算机的用户来说,他们希望自己的作业尽可能少的等待处理机。于是人们又提出了一个衡量指标, 等待时间。
等待时间,是指进程/作业处于等待处理机状态的时间之和,显然,等待时间越长,用户满意度越低。公式如下。

等待时间=周转时间−运行时间

参考

https://github.com/2w1nd/os-study/tree/main/%E8%99%9A%E6%8B%9F%E5%8C%96

https://hjk.life/posts/operating-systems-5/

https://www.cnblogs.com/shuo-ouyang/p/12740241.html

《操作系统导论》

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
操作系统导论》是一本关于操作系统基本概念和原理的教材。操作系统是计机系统中最核心的软件之一,它管理和控制计机硬件资源,并提供给用户和应用程序一个简单易用、高效稳定的接口。 《操作系统导论》主要内容包括操作系统的历史、发展背景,以及操作系统的基本概念、功能和特性等。通过对操作系统的研究,读者能够了解操作系统的架构和组成,掌握操作系统的重要原理和法,并能够利用这些知识进行操作系统的设计和开发。 在《操作系统导论》中,读者将深入学习操作系统的各个模块,比如进程管理、内存管理、文件系统等。通过对这些模块的学习,读者能够理解操作系统的核心功能,并能够掌握操作系统的基本工作原理。此外,书中还介绍操作系统的各种经典法和策略,如调度法、页面置换法等,这些法是实现操作系统功能的基础。 除了基本概念和原理外,《操作系统导论》还涵盖了一些研究热点和前沿技术,如分布式系统、虚拟化技术和云计等。通过深入了解这些新领域的内容,读者可以了解到操作系统在不同领域的应用和发展趋势。 总之,《操作系统导论》是一本系统介绍操作系统的教材,内容丰富、深入浅出,适合计机科学与技术相关专业的学生和从业人员阅读使用。通过学习这本书,读者能够全面了解操作系统的基本概念和原理,提高操作系统的设计和开发能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值