天天动画片 > 八卦谈 > 操作系统第二周——进程调度

操作系统第二周——进程调度

八卦谈 佚名 2024-01-29 18:30:35

    进程调度在多道程序操作系统中进程数量往往是大于处理机数目的,在此时就需要一个调度机制来保证操作系统能实现合理的分配处理机到每个进程。

    为什么需要进程调度机制呢?试想如果操作系统没有一个合理高效且公平的分配调度机制,当多个进程同时争用处理机时就无法确定谁该获得处理机的使用权。能想象出没有交通指示灯和交通规则后城市道路的样子吗?交通系统瘫痪是必然的。

    进程调度的层次:进程调度自外向内分为三层,分别是高级调度(作业调度),中级调度(内存调度)和低级调度(进程调度)。接下来分别解释三层调度所做的工作。

    高级调度:也称为作业调度,这个调度过程的目的是将外存中的作业调入内存中,可以理解为当该作业在此之前一直在外存的后备队列等待,当内存等待队列有空余空间时操作系统将该作业调入内存并分配资源让其成为进程拥有竞争处理机资源机会的过程,这个调度过程往往只有一次,所以是次数最少的调度。

    中级调度:称为内存调度,目的是为了提高操作系统的吞吐率和内存利用率,其过程就是当某些进程阻塞,短时间无法进行时操作系统可以使用内存调度将其转移到外存上,当该进程又能执行时操作系统可以立即将其转移回内存中的就绪队列。

    低级调度:低级调度又称进程调度,低级调度是最为频繁的调度,每当进程在处理机上的时间片耗尽后操作系统都会使用低级调度切换当前的进程,低级调度的调度过程实际上就是从就绪队列选择一个进程到处理机上执行的过程。

调度机制性能指标

如何判断某个进程调度机制的性能呢?

进程调度机制需要考虑高效,公平,合理,但是最终都要服务于让计算机发挥出最好的性能。比较两个调度机制的优劣就需要某种手段进行评价。    

    进程调度性能的关键指标有CPU的利用率,进程的周转时间,平均周转时间,带权周转时间和平均带权周转时间

    CPU利用率:顾名思义,作为计算机最为稀缺的资源,自然要保证调度机制能让CPU始终保证最高的利用率以避免因为CPU空闲导致的算力资源浪费。其计算方法如下。

CPU利用率=CPU有效运行时间/(CPU有效运行时间+CPU空闲等待时间)

    进程的周转时间:进程周转时间是指自作业提交到该作业执行完毕所经历的时间。而平均周转时间就是多个作业的周转时间的平均值。

周转时间=作业完成时间-作业提交时间

    带权周转时间:带权周转时间是周转时间与进程实际执行时间的比值。平均带权周转时间是带权周转时间的平均值。

带权周转时间=周转时间/实际执行时间

除了以上几个指标外还有如等待时间和响应时间等指标,等待时间是评判调度算法优劣的常用方法,而在交互式操作系统中响应时间往往直接与用户体验挂钩。响应时间过长给用户的直接感觉就是卡顿。



操作系统常用的调度策略


在讲解操作系统的不同调度方式前首先要解释两个概念,即抢占式调度策略和非抢占式调度策略。

如果操作系统想执行一个进程,但是处理机正在被另一个进程占用时该怎么办呢?有两种方法,第一种是让占用处理机的进程继续执行,另一个进程等待,如果前者出现阻塞而主动让出处理机后等待的进程就能开始执行。这种方式就叫做非抢占式调度策略,即只有执行中的进程主动让出处理机,操作系统没有权限剥夺处理及资源的调度方式。而抢占式调度策略即操作系统可以直接剥夺执行中进程的处理机资源。但是非抢占式策略往往不适用于分时操作系统与实时操作系统。


先进先服务(FCFS)非抢占式调度

这是最简单的调度策略,谁先提交申请就先为谁提供服务,这种调度方式不需要耗费太多的性能,但是这种调度策略对执行周期短的进程不利且效率低,如果某个周期长的进程先占用的处理机,那么在后面等待的短周期进程就会等待很长的周期。适用于CPU繁忙作业而不适合IO繁忙作业。


短作业优先调度方法(SJF)可抢占式也可非抢占式

前面提到FCFS调度方法对短作业不友好,而这种调度方式则是将执行时间最短的作业优先执行,这种调度方式能保证有最小的平均等待时间,但是对短作业有利而对长作业不利,同时也可能由于长时间的短作业抢占而让长作业长期无法执行导致”饥饿“发生。


优先级调度算法   可抢占式也可非抢占式

优先级调度算法就是为每个进程根据其各种特性以某种标准为其分配一个优先级,而高优先级的进程可以优先获得处理机的资源,但优先级低的进程可能会因为长时间被高优先级进程抢占而得不到执行导致”饥饿“。

值得一提的是几种默认的优先级评定规则:

系统进程>用户进程,一般系统进程的指令可能影响整个操作系统运行,所以理所当然有更高执行优先级。

响应式进程>非响应式进程,在交互过程中如果让响应进程等待时间过长会导致用户使用时感到卡顿,所以有更高优先级。

IO式进程>计算型进程,由于IO设备往往是低速设备所以需要让有IO工作的进程提前进入IO工作以提高整体效率。

 

高相应比优先调度方法  可抢占式也可非抢占式

这个调度方法是对FCFS和SJF的折中调度方式,其原理是为每个进程添加一个叫”响应比“的变量,该变量在不同时间时值也不同。高相应比的进程能优先执行,其响应比计算公式如下

响应比=(进程预计执行时间+等待时间)/ 进程预计执行时间

由公式可以看出来进程的等待时间和其执行时间都是影响其优先级的因素。不过这种调度方式对性能的消耗较高。


多级队列调度方式  抢占性由队列中的调度策略决定

多级队列调度方式中存在多个进程队列,而不同进程队列中采用不同的调度方式,通过某种标准把不同的进程分配到相对应的队列中,这样就能同时使用多种调度策略,多级队列调度策略综合性更好。


多级反馈队列调度算法 队列内算法不一定,但队列间是抢占的

这个调度策略是最复杂的但同时也是非常重要的,他的结构和多级队列调度策略相似,同样有多个队列,但是其使用方式却不同,在多级反馈队列中每个队列都拥有一个优先级,在最开始所有队列都为空,当有新的进程进入时都统一放入优先级最高的队列。而每个队列使用FCFS策略。操作系统永远优先从优先级最高的队列中取进程,当取到一个进程后开始执行,如果时间片耗尽后该进程没有结束则放入优先级更低一级的队列中,操作系统再从优先级最高的非空队列并用该队列的调度算法取进程执行。这就意味同时考虑到了短作业与长作业,短作业不用等待过长时间,因为长作业在未执行完毕就会被放入优先级更低的队列中,而长作业也不会出现”饥饿“现象,因为当高优先级队列为空后操作系统就会执行低优先级队列的进程。

需要注意的是如果操作系统此时在执行低优先级队列中的进程,但高优先级队列新增了一个进程会抢占处理机。


本文标题:操作系统第二周——进程调度 - 八卦谈
本文地址:www.ttdhp.com/article/46769.html

天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
扫码关注我们