系列文章目录
第三章:处理机调度与死锁
文章目录
前言
在多道程序的环境下,内存中存在着多个进程,其数目往往多于处理机数目。(我们就以单核的CPU为例子,所以运行中的进程最多只能有一个,最少为0个) 这就要求那个系统能够按照某种算法,动态地将处理机分配给处于就绪状态的一个进程,使之执行。分配处理机的任务是由处理机调度程序完成的。对于大型系统运行时的性能,如系统吞吐量,资源利用率,作业周转时间或响应的及时性等,在很大程度上都取决于处理机调度性能的好坏。因而,处理机调度便成为OS中至关重要的部分。所以下面我们将讲讲处理机调度是如何进行调度的,我将用通俗易懂的话带领大家走进CPU的世界。
在多道程序系统中,调度的实质是一种资源的分配,处理机调度是对处理机资源进行分配。处理机调度算法是根据处理及分配策略所规定的处理机分配算法。在多道批处理系统中,一个作业从提交到获得处理机执行,直至作业运行完毕,可能需要经历多级处理机调度,下面我们先来了解处理机调度的层次。
在此之前我想给大家补充点知识点:
一、作业和资源:
作业 :是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一份作业说明书,系统根据该说明书来对程序运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的。
通俗易懂点来讲就是:
是用户在一次计算过程中,要求计算机系统所做工作的集合,包括程序、数据以及作业说明书等。例如,用户提交一个编译程序的任务,从源程序输入到编译出目标程序,这整个过程就是一个作业。
资源 :是操作系统管理的各种硬件和软件要素,如 CPU、内存、外存、设备(打印机、磁盘等)、文件系统、网络连接等,是作业运行的物质基础。
管理方式
- 作业:操作系统通过作业调度来管理作业,根据一定的调度算法,将作业从后备状态调入内存执行,在作业运行结束后进行善后处理。
- 资源:对于不同类型的资源,操作系统有不同的管理策略。如对于 CPU,采用进程调度算法分配时间片;对于内存,通过内存分配算法为进程分配空间;对于设备,采用设备分配算法来决定哪个进程可以使用设备。
作用与生命周期
- 作业 :是用户为完成特定任务而提交给系统的工作单元,其目的是让计算机完成用户指定的任务,作业从提交到完成是一个完整的生命周期。
- 资源:是为作业的运行提供支持和保障的,资源可以被多个作业共享和复用,其生命周期通常与操作系统的运行周期相关,只要操作系统在运行,资源就处于可被分配和使用的状态。
二、处理机调度的层次:
1.高级调度:
高级调度又称长程调度或作业调度,它的调度对象是作业(程序+数据+作业说明书)。其主要功能是根据某种算法,决定将外存上处于后备队列中的哪几个作业调入内存,为它们创建进程,分配必要的资源,并将它们放入就绪队列。高级调度主要用于多道批处理系统中,而在分时和实时系统中不设置高级调度。
2.低级调度:
低级调度又称为进程调度或短程调度,其所调度的对象是进程(或内核级线程)。其主要功能是,根据某种算法,决定就绪队列中的哪个进程应获得处理机,并由分派程序的将处理机分配给被选中的进程。进程调度是最基本的一种调度,在多道批处理,分时和实时三种类型的OS中,都必须配置这级调度。
3. 中级调度:
中级调度又称为内存调度。引入中级调度的主要目的是,提高内存利用率和系统吞吐量。为此,应把那些暂时不能运行的进程,调至外存等待,此时进程的状态称为就绪驻外存状态(或挂起状态)。当他们已具备运行条件且内存又稍有空闲的时候,由中级调度来决定,把外存上的那些已具备运行条件的就绪进程再重新调入内存,并修改状态为就绪状态,挂在就绪队列上等待。中级调度实际上就是存储器管理中的对换功能,这个我们以后再说。
三、作业调度算法举例:
今天先给大家开个头,给大家讲讲我认为最应该注意细节的一个调度算法,因为我当时也是想了很长时间才明白
高相应比优先调度算法:
这种算法比较合理,既考虑了作业的等待时间,又考虑作业运行时间的调度算法,因此既照顾了短作业,又不致使长作业的等待时间过长,从而改善了处理机调度的性能。
这里面其实有的点我认为是很重要的
高相应比优先算法是如何实现的呢?如果我们能为每个作业引入一个动态的优先级,即优先级是可以改变的,令它随等待时间延长而增加,这将使得长作业的优先级在等待期间不断增加,等到足够的时间后,必然有机会获得处理机,该优先级的变化规律可描述为:
优先级 = (等待时间+要求服务时间)/要求服务时间
由于等待时间与服务时间之和就是系统对该作业的响应时间,故该优先级又相当于响应比Rp,据此,优先又可表示为:
Rp = (等待时间+要求服务时间)/要求服务时间 = 响应时间/要求服务时间
这里还有一点可以符合的是 先来的等待时间长,谁先运行(FCFS);
我们举个简单的例子:
作业 | 提交时间 | 运行时间 | 开始时间 | 完成时间 |
---|---|---|---|---|
A | 0 | 3 | 0 | 3 |
B | 2 | 6 | 3 | 9 |
C | 4 | 4 | 9 | 13 |
在调度过程中,完成时间 ≠ 提交时间 + 运行时间 ,因为作业需要等待调度。完成时间实际上是开始时间 + 运行时间,而开始时间可能远晚于提交时间(由于等待)。
完成时间的真正含义
-
公式:
完成时间=开始执行时间+运行时间
- 开始执行时间:作业真正获得CPU开始运行的时间(可能因等待而延迟)。
- 运行时间:作业需要的CPU时间(固定不变)。
-
与提交时间的关系:
- 如果作业无需等待(立即执行),则:完成时间=提交时间+运行时间
- 如果作业需要等待,则:完成时间=提交时间+等待时间+运行时间
-
作业 A:
- 提交后立即执行(无等待),完成时间 = 0 + 3 = 3。
- 提交时间 + 运行时间 = 0 + 3 = 3,等于完成时间(无需等待的特殊情况)。
-
作业 B:
- 提交时间 2,但直到时间 3 才开始执行(等待了 1 单位时间)。
- 完成时间 = 开始时间 3 + 运行时间 6 = 9。
- 提交时间 + 运行时间 = 2 + 6 = 8,但实际完成时间是 9(因等待了 1 单位时间)。
-
作业 C:
- 提交时间 4,直到时间 9 才开始执行(等待了 5 单位时间)。
- 完成时间 = 开始时间 9 + 运行时间 4 = 13。
- 提交时间 + 运行时间 = 4 + 4 = 8,但实际完成时间是 13(等待了 5 单位时间)。
响应比的分子与周转时间的关系
-
响应比的分子:
响应比=1+运行时间当前等待时间
- 当前等待时间:调度时刻的等待时间(从提交到调度时刻的时间)。
- 注意 :这是作业在调度决策时的等待时间,而非总等待时间。
-
周转时间的分子:
周转时间=完成时间−提交时间=运行时间+总等待时间
- 总等待时间:从提交到开始执行的时间(即最终确定的等待时间)。
例子中的具体数值
-
作业 B 的响应比(时间 3 时调度):
- 当前等待时间 = 3(调度时间) - 2(提交时间) = 1。
- 响应比 = 1 + 1/6 ≈ 1.17。
-
作业 B 的周转时间:
- 完成时间 9 - 提交时间 2 = 7。
- 总等待时间 = 7(周转时间) - 6(运行时间) = 1。
- 与响应比的分子一致:这里的总等待时间(1)等于调度时的当前等待时间(1)。
-
作业 C 的响应比(时间 9 时调度):
- 当前等待时间 = 9(调度时间) - 4(提交时间) = 5。
- 响应比 = 1 + 5/4 = 2.25。
-
作业 C 的周转时间:
- 完成时间 13 - 提交时间 4 = 9。
- 总等待时间 = 9(周转时间) - 4(运行时间) = 5。
- 与响应比的分子一致:总等待时间(5)等于调度时的当前等待时间(5)。
为什么看起来"提交时间+运行时间=完成时间"?
- 特殊情况 :当作业无需等待时(如作业 A),完成时间确实等于提交时间 + 运行时间。
- 一般情况:作业需要等待调度,因此完成时间 = 提交时间 + 运行时间 + 等待时间。
关键结论
- 完成时间 ≠ 提交时间 + 运行时间(除非作业无需等待)。
- 响应比的分子是调度时刻的等待时间(部分等待时间)。
- 周转时间的分子是总等待时间(最终确定的全部等待时间)。
- 在调度完成的瞬间,响应比中的等待时间会等于总等待时间(如作业 B 和 C),因此两者数值最终一致。
总结
以上就是今天要讲的内容,本文我补充了作业和资源的定义和作用,又给大家讲了一下处理机的调度层次,然后又给大家补充了一个我最感觉有点容易犯错的调度算法,接下来我会继续更新处理机调度的,从3月25号后我要开始给大家讲蓝桥杯的枚举和模拟的题了,谢谢大家,我会持续更新的。