调度算法评价指标
CPU利用率
由于早期的CPU造价极其昂贵,因此人们会希望让CPU尽可能多地工作
CPU利用率:指CPU“忙碌”的时间占总时间的比例。
Eg:某计算机只支持单道程序,某个作业刚开始需要在CPU上运行5秒,再用打印机打印输出5秒,之后再执行5秒,才能结束。在此过程中,CPU利用率、打印机利用率分别是多少?
系统吞吐量
对于计算机来说,希望能用尽可能少的时间处理完尽可能多的作业
即平均每秒可以完成多少道作业?
周转时间
对于计算机的用户来说,他很关心自己的作业从提交到完成花了多少时间。
周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔。
它包括四个部分:
-
作业在外存后备队列上等待作业调度(高级调度)的时间、
-
进程在就绪队列上等待进程调度(低级调度)的时间、
-
进程在CPU上执行的时间、
-
进程等待I/O操作完成的时间。
后三项在一个作业的整个处理过程中,可能发生多次。
对于用户来说,更关心自己的单个作业的周转时间
对于操作系统来说,更关心系统的整体表现,因此更关心所有作业周转时间的平均值
思考:有的作业运行时间短,有的作业运行时间长,因此在周转时间相同的情况下,运行时间不同的作业,给用户的感觉肯定是不一样的
带权周转时间
对于周转时间相同的两个作业,实际运行时间长的作业在相同时间内被服务的时间更多,带权周转时间更小,用户满意度更高。
对于实际运行时间相同的两个作业,周转时间短的带权周转时间更小,用户满意度更高。
带权周转时间必然≥1
带权周转时间与周转时间都是越小越好
等待时间
计算机的用户希望自己的作业尽可能少的等待处理机
等待时间,指进程/作业处于等待处理机状态时间之和,等待时间越长,用户满意度越低。
作业调入内存后,建立对应的进程。这个进程会被CPU服务、会被I/O设备服务,当然也会有等待被服务的时候
-
对于进程来说,等待时间就是指进程建立后等待被服务的时间之和,但是在等待I/O完成的期间其实进程也是在被服务的,所以不计入等待时间。
-
对于作业来说,不仅要考虑建立进程后的等待时间,还要加上作业在外存后备队列中等待的时间。
一个作业总共需要被CPU服务多久,被I/O设备服务多久一般是确定不变的,因此调度算法其实只会影响作业/进程的等待时间。当然,与前面指标类似,也有“平均等待时间”来评价整体性能。
响应时间
对于计算机用户来说,会希望自己的提交的请求(比如通过键盘输入了一个调试命令)尽早地开始被系统服务、回应。
- 响应时间,指从用户提交请求到首次产生响应所用的时间。
调度算法(早期批处理)
Tips:各种调度算法的学习思路
-
算法思想
-
算法规则
-
这种调度算法是用于作业调度还是进程调度?
-
抢占式?非抢占式?
-
优点和缺点
-
是否会导致饥饿(某进程/作业长期得不到服务)
先来先服务FCFS
先来先服务调度算法:按照到达的先后顺序调度,事实上就是等待时间越久的越优先得到服务。
周转时间
带权周转时间
等待时间
注意:本例中的进程都是纯计算型的进程,一个进程到达后要么在等待,要么在运行。如果是又有计算、又有1/0操作的进程,其等待时间就是周转时间-运行时间1/0操作的时间
平均周转时间/带权周转时间/平均等待时间
短作业优先SJF
严格来说,用于进程调度应该称为短进程优先调度算法(SPF)
短作业/进程优先调度算法:每次调度时选择当前已到达且运行时间最短的作业/进程。
注意,不是运行时间最短就先走,要先看到没到达!!!
指标计算
对比FCFS算法的结果,显然SPF算法的平均等待/周转/带权周转时间都要更低
抢占式版本:最短剩余时间优先算法:
每当有进程加入就绪队列改变时就需要调度,
如果新到达的进程剩余时间比当前运行的进程剩余时间更短,则由新进程抢占处理机,当前运行进程重新回到就绪队列。另外,当一个进程完成时也需要调度
需要注意的是,当有新进程到达时就绪队列就会改变,就要按照上述规则进行检查。以下P, (m)表示当前P,进程剩余时间为m。各个时刻的情况如下:
对比非抢占式的短作业优先算法,显然抢占式的这几个指标又要更低
指标计算
提醒
-
如果题目中未特别说明,所提到的“短作业/进程优先算法”默认是非抢占式的
-
很多书上都会说"SJF调度算法的平均等待时间、平均周转时间最少”严格来说,这个表述是错误的,不严谨的。
之前的例子表明,最短剩余时间优先算法得到的平均等待时间、平均周转时间还要更少应该加上一个条件“在所有进程同时可运行时,采用SJF调度算法的平均等待时间、平均周转时间最少”;
或者说“在所有进程都几乎同时到达时,采用SJF调度算法的平均等待时间、平均周转时间最少”
-
虽然严格来说, SJF的平均等待时间、平均周转时间并不一定最少,但相比于其他算法(如FCFS) ,SJF依然可以获得较少的平均等待时间、平均周转时间
-
如果选择题中遇到"SJF算法的平均等待时间、平均周转时间最少”的选项,那最好判断其他选项是不是有很明显的错误,如果没有更合适的选项,那也应该选择该选项
FCFS vs SJF
-
FCFS算法是在每次调度的时候选择一个等待时间最长的作业(进程)为其服务。但是没有考虑到作业的运行时间,因此导致了对短作业不友好的问题
-
SJF 算法是选择一个执行时间最短的作业为其服务。但是又完全不考虑各个作业的等待时间,因此导致了对长作业不友好的问题,甚至还会造成饥饿问题
高响应比优先HRRN
算法规则:在每次调度时先计算各个作业/进程的响应比,选择响应比最高的作业/进程为其服务
高响应比优先算法:非抢占式的调度算法,只有当前运行的进程主动放弃CPU时(正常/异常完成,或主动阻塞) ,才需要进行调度,调度时计算所有就绪进程的响应比,选响应比最高的进程上处理机。
P2和P4要求服务时间一样,但P2等待时间长,所以必然是P2响应比更大
对于长作业来说,随着等待时间越来越久,其响应比也会越来越大,从而避免了长作业饥饿的问题
注:这几种算法主要关心对用户的公平性、平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。因此这三种算法一般适合用于早期的批处理系统,当然, FCFS算法也常结合其他的算法使用,在现在也扮演着很重要的角色。而适合用于交互式系统的调度算法将在下个小节介绍….
调度算法(交互式系统)
Tips:各种调度算法的学习思路
- 算法思想
- 算法规则
- 这种调度算法是用于作业调度还是进程调度?
- 抢占式?非抢占式?
- 优点和缺点
- 是否会导致饥饿
时间片轮转RR
常用于分时操作系统,更注重“响应时间”,因而此处不计算周转时间
时间片轮转调度算法:轮流让就绪队列中的进程依次执行一个时间片(每次选择的都是排在就绪队列队头的进程)
时间片大小为2
(注:以下括号内表示当前时刻就绪队列中的进程、进程的剩余运行时间)
时间片大小为5
↑与FCFS差不多哦
如果时间片太大,使得每个进程都可以在一个时间片内就完成,则时间片轮转调度算法退化为先来先服务调度算法,并且会增大进程响应时间。因此时间片不能太大。
比如:系统中有10个进程在并发执行,如果时间片为1秒,则一个进程被响应可能需要等9秒…也就是说,如果用户在自己进程的时间片外通过键盘发出调试命令,可能需要等待9秒才能被系统响应
另一方面,进程调度、切换是有时间代价的(保存、恢复运行环境),因此如果时间片太小,会导致进程切换过于频繁,系统会花大量的时间来处理进程切换,从而导致实际用于进程执行的时间比例减少。可见时间片也不能太小。
优先级调度算法
算法规则:每个作业/进程有各自的优先级,调度时选择优先级最高的作业/进程
非抢占式优先级调度
抢占式的优先级调度算法:
每次调度时选择当前已到达且优先级最高的进程。当前进程主动放弃处理机时发生调度。
另外,当就绪队列发生改变时也需要检查是会发生抢占。
补充
补充:就绪队列未必只有一个,可以按照不同优先级来组织。另外,也可以把优先级高的进程排在更靠近队头的位置
根据优先级是否可以动态改变,可将优先级分为静态优先级和动态优先级两种。
静态优先级:创建进程时确定,之后一直不变。
动态优先级:创建进程时有一个初始值,之后会根据情况动态地调整优先级。
如何合理地设置各类进程的优先级?
I/O设备和CPU可以并行工作。如果优先让I/O繁忙型进程优先运行的话,则越有可能让I/O设备尽早地投入工作,则资源利用率、系统吞吐量都会得到提升
如果采用的是动态优先级,什么时候应该调整?
多级反馈队列调度算法
设置多级就绪队列,各级队列优先级从高到低,时间片从小到大,优先级越高时间片越小。
新进程到达时先进入第1级队列,按FCFS原则排队等待被分配时间片。
若用完时间片进程还未结束,则进程进入下一级队列队尾。
如果此时已经在最下级的队列,则重新放回最下级队列队尾
只有第 k 级队列为空时,才会为 k+1 级队头的进程分配时间片:
执行两个时间片,但是还没执行完。继续放到第三级队列!
但是这个时候P3进入第一级队列,此时p2还没运行完。被抢占处理机的进程重新放回原队列队尾,p3抢占!
没有其他进程了,P1会一直在第三级队列。
注:比起早期的批处理操作系统来说,由于计算机造价大幅降低,因此之后出现的交互式操作系统(包括分时操作系统、实时操作系统等)更注重系统的响应时间、公平性、平衡性等指标。而这几种算法恰好也能较好地满足交互式系统的需求。因此这三种算法适合用于交互式系统。(比如UNIX使用的就是多级反馈队列调度算法)
多级队列调度算法
系统中按进程类型设置多个队列,进程创建成功后插入某个队列
标签:作业,调度,算法,时间,进程,等待时间 From: https://www.cnblogs.com/nekodream/p/18119593