本文介绍的是调度算法,跟算法还是有关联的,我们平时可能觉得算法这个东西很难,可能也会很抑或这个概念,其实他并不是很难,算法只是我们处理事情的思维逻辑而已。
就像你做一件事,你的规划就可以称之为一种算法。算法只是一个思考的过程,它可以间接的去生成结果,但无法直接得到结果。
那它在调度里有什么用呢,瞎买那我们来介绍调度
调度按照字面意思来讲就是把一些资源通过某种规则从一个地方放到另一个地方,这就称之为调度。这里的资源的概念很广泛,你想让它是什么就是什么。上边里提到了某种规则,而这种规则就称之为算法,进而产生了我们的调度算法。例如:先来先服务(FCFS)、短作业优先、优先级调度、高响应比优先、时间片轮转(RR)和多级反馈队列。下边我们来依次介绍各个算法
计算机中的调度是外存–>内存–>CPU的任务调度。其分为高级调度(外存–>内存)、中级调度(外存–>内存)和低级调度(内存–>CPU)
复习任务不在,这里后续在介绍
调度算法的评价指标有:CPU利用率,系统吞吐量,周转时间(平均周转,带权周转,平均带权周转),等待时间和响应时间。下边依次介绍
CPU利用率:CPU忙碌时间占总工作时间的比例
利用率=忙碌时间/工作总时间
系统吞吐量:单位时间内完成作业的数量
系统吞吐量=完成作业数总和/总共花费时间
周转时间:从作业被提交给系统开始,到作业完成为止的这段时间间隔。
周转时间=作业完成时间-作业提交时间
平均周转时间=(各作业的周转时间之和)/作业数
带权周转时间=作业周转时间/作业实际运行时间
平均带权周转时间=各作业周转时间之和/作业数
等待时间:作业等待处理机状态时间的总和
响应时间:指用户提出请求到首次响应时间所用的时间
关键知识点 | 概念 |
---|---|
算法思想 | 先到先接受服务,类似于我们超市购物 |
算法规则 | 按照作业/进程的先后到达顺序进行服务 |
是否可抢占 | 非抢占式算法 |
优点 | 比较公平 |
缺点 | 对长作业有利,短作业不利(短作业排在长作业后边的话会消耗掉大量时间) |
是否会产生饥饿现象 | 不会 |
关键知识点 | 概念 |
---|---|
算法思想 | 追求最少的平均等待时间、最少的平均周转时间、最少的平均平均带权周转时间 |
算法规则 | 最短的作业/进程优先得到服务 |
是否可抢占 | 非抢占式算法 |
优点 | 对短作业有利,缩短了平均等待时间、平均周转时间 |
缺点 | 不公平,对长作业不利,可能产生饥饿现象 |
是否会产生饥饿现象 | 会 ,在源源不断短作业/进程到达的时候,会导致长进程得不到服务,进而发生饿死现象 |
响应比计算公式=(等待时间+要求服务时间)/要求服务时间 响应比>=1
关键知识点 | 概念 |
---|---|
算法思想 | 综合考虑作业/进程的等待时间和要求服务时间 |
算法规则 | 在每次调度时,先计算各个作业/进程的响应比,选择响应比比较高的作业/进程为其服务 |
是否可抢占 | 非抢占式算法 |
优点 | 上述两种算法的权衡折中,综合考虑的等待时间和运行时间 |
缺点 | 无吧 |
是否会产生饥饿现象 | 不会 |
关键知识点 | 概念 |
---|---|
算法思想 | 公平的轮流的为各个进程服务,让每一个进程在一定时间间隔内都可以响应 |
算法规则 | 按照进程到达就队列的顺序,轮流让各个进程执行一个时间片。若没有执行完就下处理机在排到就就绪队列队尾 |
是否可抢占 | 抢占时算法 |
优点 | 公平,响应快,适用于分时操作系统 |
缺点 | 由于高频率的进程切换,因此有一定的开销;不区分任务的紧急情况 |
是否会产生饥饿现象 | 不会 |
补充:时间片过大或过小的影响
时间片过小,会因为高频率的进程切换,导致大量开销,从而影响系统的效率
时间过大,进而就变成了先来先服务算法
上提到了不区分任务的紧急情况,而优先级调度解决了这一情况
关键知识点 | 概念 |
---|---|
算法思想 | 根据任务的应用场景,给任务新增优先级标签,以优先级的程度来决定处理顺序 |
算法规则 | 调度时优先选择优先级最高的作业/进程 |
是否可抢占 | 抢占式、非抢占式都有 |
优点 | 可以区分任务的紧急程度,重要程度,适用与实时操作系统 |
缺点 | 会导致饥饿状态 |
是否会产生饥饿现象 | 是 |
关键知识点 | 概念 |
---|---|
算法思想 | 对其他调度算法的折中权衡 |
算法规则 | 详情请看表格下方 |
是否可抢占 | 抢占式 |
优点 | |
缺点 | |
是否会产生饥饿现象 | 会 |
算法规则
1.设置多级就绪队列,各级队列优先级从高到低,时间片从小到大
2.新进程首先进入1级队列,按照FCFS+RR的方式进行执行,不过与RR不同的是,在进程执行一个时间片后,若是还没有完成,则下沉到第二队列,在次没有在一个时间片时间执行完毕就继续下沉,直至到地K的序列。这里的K代表的是最后的队列
3.只有当上一级队列的所有任务都执行过一个时间片后,才会执行下边一级队列。
总结算法是一个很有意思东西,越研究越有趣的哦,你要是没兴趣,那我也没办法。其次本问参考老师的讲义加个人的一些理解。谢谢观看。例题后续会添加,现在只想睡觉