写在前面:
- 本系列笔记主要以《计算机操作系统(汤小丹…)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
- 视频链接:操作系统(汤小丹等第四版)_哔哩哔哩_bilibili
一、处理机调度的层次
1、高级调度
高级调度又称长程调度或作业调度,它的调度对象是作业,其主要功能是根据某种算法,决定将外存上处于后备队列中的哪几个作业调入内存(处于后备状态的作业在系统资源满足的前提下可以被作业调度选中进入内存计算),为它们创建进程、分配必要的资源,并将它们放入就绪队列。
高级调度主要用于多道批处理系统中,而在分时和实时系统中不设置高级调度。
2、低级调度
低级调度又称为进程调度或短程调度,其所调度的对象是进程(或内核级线程),主要功能是根据某种算法,决定就绪队列中的哪个进程应获得处理机,并由分派程序将处理机分配给被选中的进程。
进程调度是最基本的一种调度,在多道批处理、分时和实时三种类型的OS中,都必须配置这级调度。
3、中级调度
中级调度又称为内存调度。引入中级调度的主要目的是,提高内存利用率和系统吞吐量。中级调度把那些暂时不能运行的进程调至外存等待,此时进程的状态称为就绪驻外存状态(或挂起状态);当它们已具备运行条件且内存又稍有空闲时,由中级调度来决定把外存上的那些已具备运行条件的就绪进程再重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待。
中级调度实际上就是存储器管理中的对换功能,将在下一章中介绍。
4、三种调度的运行频率
(1)进程调度的运行频率最高,在分时系统中通常仅10~100 ms便进行一次进程调度,因此把它称为短程调度,为避免调度本身占用太多的CPU时间,不宜使进程调度算法太复杂。
(2)作业调度往往是发生在一批作业已运行完毕并退出系统,又需要重新调入一批作业进入内存时,作业调度的周期较长,大约几分钟一次,因此把它称为长程调度。由于其运行频率较低,故允许作业调度算法花费较多的时间。
(3)中级调度的运行频率基本上介于上述两种调度之间,因此把它称为中程调度。
二、处理机调度算法的目标
1、处理机调度算法的共同目标
(1)资源利用率。
对于用户来说,他们总是希望自己作业的周转时间(所谓周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔)尽可能少,而对于系统来说,则是希望诸作业的平均周转时间尽可能少,这样有利于提高CPU的利用率和系统的吞吐量(单位时间内完成作业的数量)。为提高系统的资源利用率,应使系统中的处理机和其它所有资源都尽可能地保持忙碌状态,其中最重要的处理机利用率可用以下方法计算。
(2)公平性。
公平性是指应使诸进程都获得合理的CPU时间,不会发生进程饥饿现象(饥饿指的是进程长期得不到想要的资源,从而无法向前推进)。
公平性是相对的,对相同类型的进程应获得相同的服务,但对于不同类型的进程,由于其紧急程度或重要性的不同,则应提供不同的服务。
(3)平衡性。
由于在系统中可能具有多种类型的进程,有的属于计算型作业,有的属于I/O型,为使系统中的CPU和各种外部设备都能经常处于忙碌状态,调度算法应尽可能保持系统资源使用的平衡性。
(4)策略强制执行。
对所制订的策略(其中包括安全策略),只要需要,就必须予以准确地执行,即使会造成某些工作的延迟也要执行。
2、批处理系统的目标
(1)平均周转时间短。
作业周转时间包括四部分,分别是作业在外存后备队列上等待(作业)调度的时间、进程在就绪队列上等待进程调度的时间、进程在CPU上执行的时间、以及进程等待I/O操作完成的时间。
对于用户来说,他们总是希望自己作业的周转时间尽可能少,在批处理系统中为照顾为数众多的短作业,应采用短作业优先的调度算法(SJF)。
可把平均周转时间描述为:
为了进一步反映调度的性能,往往使用带权周转时间,即作业的周转时间T与系统为它提供服务的时间之比,而平均带权周转时间则可表示为:
(2)系统吞吐量高。
吞吐量是指在单位时间内系统所完成的作业数,它与批处理作业的平均长度有关。事实上,如果单纯是为了获得高的系统吞吐量,就应尽量多地选择短作业运行,也就是采用短作业优先的调度算法(SJF)。
(3)处理机利用率高。
对于大、中型计算机而言,CPU价格十分昂贵,致使处理机的利用率成为衡量系统性能的十分重要的指标,而调度方式和算法又对处理机的利用率起着十分重要的作用,如果单纯是为使处理机利用率高,应尽量多地选择计算量大的作业运行。由上所述可以看出,这些要求之间是存在着一定矛盾的。
3、分时系统的目标
(1)响应时间快。
响应时间快是选择分时系统中进程调度算法的重要准则,所谓响应时间,是从用户通过键盘提交一个请求开始,直到屏幕上显示出处理结果为止的一段时间间隔。它包括三部分时间:一是请求信息从键盘输入开始,直至将其传送到处理机的时间;二是处理机对请求信息进行处理的时间;三是将所形成的响应信息回送到终端显示器的时间。
(2)均衡性。
用户对响应时间的要求并非完全相同,通常用户对较复杂任务的响应时间允许较长,而对较简单任务的响应时间则要短,所谓均衡性,是指系统响应时间的快慢应与用户所请求服务的复杂性相适应。为了保证具有合理的响应时间,在分时系统中应采用时间片轮转法进行调度。
4、实时系统的目标
(1)截止时间的保证。
所谓截止时间,是指某任务必须开始执行的最迟时间,或必完成的最迟时间。对于严格的实时系统,其调度方式和调度算法必须能保证这一点,否将可能造成难以预料的后果。
(2)可预测性。
在实时系统中,可预测性显得非常重要。例如,在多媒体系统中无论是电影还是电视剧都应是连续播放的,这就提供了请求的可预测性。
三、调度队列模型
1、仅有进程调度的调度队列模型
在分时系统中就绪进程组织成FIFO(先进先出)队列形式,当创建一个新进程时,将它放入队列末尾,按时间片轮转方式运行。
该模型只有一个阻塞队列。
2、具有高级和低级调度的调度队列模型
在批处理系统中,不仅需要进程调度,而且还需要作业调度,由作业调度按一定的调度算法,从外存的后备队列中选择一批作业调入内存,并为它们建立进程,送入就绪队列,然后才由进程调度算法按照一定的进程调度算法(最常用的是最高优先权优先调度算法),选择一个进程,把处理机分配给该进程。
该模型有多个阻塞队列,每一队列对应一个阻塞事件,这样可以使阻塞队列不至于过长,从而提高对阻塞队列的操作效率。
3、同时具有三级调度的调度队列模型
当在OS中引入中级调度后,可以把进程的就绪状态分为内存就绪和外存就绪,把阻塞状态分为内存阻塞和外存阻塞两种状态。
在调出操作的作用下,可使进程状态由内存就绪转变为外存就绪,由内存阻塞转变为外存阻塞;在中级调度的作用下,又可使外存就绪转变为内存就绪。