进程调度与为人处世

进程调度与为人处世

0. 序言

最近几天我复习了有关操作系统的进程调度的知识,温习了有关进程调度的几种调度方式。它们各有各的特点,我觉得颇有收获,分别是:

1.先来先服务

2.短进程优先

3.优先级调度

4.高响应比优先

5.时间片轮转调度

6.多级反馈队列调度

我将这六种调度算法做了一个类比,这就好比我们生活中的人以怎样的态度和原则来处理我们生活中遇到的事情。本来是偶然想到的,但后来仔细一想,我觉得还挺有趣的。反正最近几天也比较无聊。不妨把这些感想写下来。在写下自己的感想之前,我想这需要先复习一些相关概念。

进程:是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位

进程调度:是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。

1. 先来先服务(FCFS)

先来先服务是一种最简单的调度算法,在进程调度中,算法每次从就绪进程队列中选择最先进入该就绪队列的进程,给它分配处理机。

特点是算法简单,但是效率低,从表面上看,该算法对所有进程都是公平的,但是若有一个运行时间较长的进程先到达就绪队列,那么后面的所有进程,不论运行时间的长还是短,都需要等待前面的进程运行完成之后才能得到处理机,系统效率低。

这就有点像我们生活中严格按照程序办事的人。既不偏袒谁,也不针对谁。特点就是简单直爽。但是似乎缺少了一些什么东西,若有一个人办事时间需要很久,那么后面所有的需要办事的人都需要等待,等待久了,人就会不耐烦。容易急躁。做出不可预知后果的行为,对整个社会而言效率不是很高。但你也无法责怪他,对他而言,他对每个人都是公平的,都是按照同样的规则办事。

2. 短进程优先(SPF)

短进程优先是指对短进程优先调度的算法。短进程优先调度算法每次从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它。

特点就是平均等待时间、平均周转时间最少。虽然较好的缓和了上面先来先服务算法的等待时间较长的问题。但是短进程优先算法也有不容忽视的问题。

首先,该算法对运行时间较长的进程不利,若有一个长进程进入就绪队列,由于调度程序总是会选优先调度短进程(即使这个短进程是后面进来的),长进程就会长时间得不到处理机,导致“饥饿”现象。

其次,该算法没有考虑进程的紧迫程度,因而紧迫性的进程得不到及时的处理。

最后,由于进程运行时间的长短是用户估计的,而用户又会有意无意地缩短进程的估计运行时间,导致该算法不一定能真正做到算短进程优先调度。

映射到我们生活中来,有点像怕麻烦的人,每次都处理简单容易的事情。看起来好像处理了很多事情,但是却总把麻烦的事情越拖越久。事情有轻重缓急之分。若是一个麻烦而又重要的事情。到了他手里却迟迟得不到处理。这就麻烦大了。而且还有很强的主观性。大家都认为自己的事情很简单,希望被优先处理。

3. 优先级调度

优先级调度算法又称为优先权调度算法,该算法中的优先级用于描述进程的紧迫程度。在进程调度中,优先级调度算法每次从就绪队列中选择优先级最高的进程,将处理及分配给它,使之投入运行。

根据新的更高优先级进程能否抢占正在执行的进程,可以将该调度算法分为如下两种:

  1. 非剥夺式优先级调度算法,当一个进程正在处理机上运行的时候,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在运行的进程继续运行,直到该进程主动让出处理机的时候,才把处理机分配给更为重要或紧迫的进程。
  2. 剥夺式优先级调度算法,当一个进程正在处理机上运行的时候,若有某个更为重要或紧迫的进程进入就绪队列,则立即暂停正在运行的进程,将处理机分配给更为重要或紧迫的进程。

而根据进程创建之后其优先级是否可以改变,可以将优先级分为以下两种:

  1. 静态优先级,优先级在进程创建的时候确定的。且在进程的整个运行期间保持不变。确定静态优先级的主要依据有进程类型、进程对资源的要求、用户要求。
  2. 动态优先级,在进程的运行过程中,根据进程情况的变化动态调整优先级。动态调整优先级的主要依据有进程占有CPU的时间长短、就绪进程等待CPU时间的长短。

到了这里人总算聪明了一些,能够依据事情的轻重缓急来处理事情。算得上一位智者了。然智者千虑,必有一失。当有新的更为重要或紧迫的事情要处理时,是否要中断自己手头正在处理的事情呢?这是智者需要考虑和判断的事情。若是一件事情开始的时候很重要,到后来发生了一些变故,这件事情又不重要了。是否要中断呢?还是继续做完呢?这也是智者需要做出的抉择。在我看来智者是很累的。智者大多数时候能够做出正确的选择。但是偶尔也可能马失前蹄。

4. 高响应比优先

高响应比优先调度算法主要用于作业调度,是对FCFS调度算法和SJP调度算法的一种综合平衡。同时考虑了每个作业的等待时间和估计运行时间。在每次进行作业调度时。先计算后备作业队列中每个作业的响应比,从中选出响应比最高的作业投入运行。

响应比变化规律可以描述为:

根据公式可以知道:

  1. 作业等待时间相同时,要求服务时间越短,响应比越高,有利于短作业。
  2. 要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长,其响应比越高,因而它实现的是先来先服务。
  3. 对于长作业,作业的响应比可以随等待时间的增加而提高,等待时间足够长时,其响应比可以升到很高,从而获得处理机。因此,克服了“饥饿”状态,兼顾了长作业。

我想这一定是一个精明的人,他精于计算,在面对不同的事情的时候,能够计算出最有益的事情先去做。兼顾麻烦的事情和简单的事情。谁也不得罪。缺点是很明显的,计算的开销很大。活得很累。

5. 时间片轮转调度

时间片轮转调度算法主要适用于分时系统,在这种算法中,系统将所有的就绪进程按到达时间的先后次序排成一个队列,进程调度程序总是选择就绪队列中的第一个进程执行。即先来先服务的原则,但仅能运行一个时间片,如100ms。在使用完一个时间片的时候,即使进程并未完成。也必须让出处理机给下一个就绪进程。被剥夺处理机的进程重新进入就绪进程队列的末端重新排队。

在时间片轮转调度算法中,时间片的大小对系统的性能影响很大。若时间片足够大,以至于所有的进程都能在一个时间片之内执行完毕。则时间片轮转调度算法就退化为先来先服务算法。若时间片很小,则处理机将在进程间过于频繁的切换,使得处理机的开销增大。而真正用于运行用户进程的时间将减少。因此,时间片的大小应选择适当。

时间片的大小通常由以下因素决定:系统响应时间、就绪队列中的进程数目和系统的处理能力。

我认为这是一个很有时间概念的人。他知道时间是自己的宝贵财富,一寸光阴一寸金,不浪费自己生命的每一分钟。均匀分配,注重公平。对每件事情投入相同的时间和精力。尽管这件事情不一定能够及时完成。但自己付出了自己的一份力,没有亏待过任何事任何人。可谓问心无愧。缺点就是平均等待时间较长。上下文切换浪费时间。

6. 多级反馈队列调度

 

 

 

多级反馈队列调度算法是时间片轮转调度算法和优先级调度算法的综合与发展。通过动态调整进程优先级和时间片的大小。多级反馈队列调度算法可以兼顾多方面的系统目标。例如,为提高系统吞吐量和缩短平均周转时间而照顾短进程;为获得较好的I/O设备利用率和缩短响应时间而照顾I/O型进程;同时不必事先估计进程的执行时间。

 

多级反馈队列调度算法的实现思想如下:

  1. 设置多个就绪队列,并为各个队列设置不同的优先级,第1级队列的优先级最高,第2级队列次之,其余队列的优先级逐次降低。
  2. 赋予各个队列中进程执行的时间片大小各不相同。在优先级越高的队列中。每个进程的运行的时间片越小。例如,第2级队列中的时间片要比第1级队列的时间片要长1倍……第i+1级队列中的时间片要比第i级的时间片长1倍。
  3. 当一个新进程进入内存后,首先将它放在第1级队列的末尾,按FCFS的原则排队等待调度。当轮到该进程执行的时候。如果它能够在该时间片内完成。便可准备撤离系统;若它在一个时间片结束时尚未完成,调度程序便将该进程转入第2级队列的末尾,再同样按照FCFS的原则等待调度;若它在第2级队列中运行一个时间片之后仍未完成,再以同样的方法放入第3级队列……如此下去,当一个长进程从第一级队列依次降到第n级队列之后。在第n级队列中便采用时间片轮转的的方式运行。
  4. 仅当第1级队列为空的时候,调度程序才调度第2级队列中的进程运行;仅当第1~(i-1)级队列均为空的时候。才会调度第i级队列中的进程运行。若处理机正在执行第i级队列中的某进程,这时又有新的进程进入优先级较高的队列中[第1~(i-1)中任何一个队列],则此时新进程将抢占(剥夺)正在运行进程的处理机,即由调度程序把正在运行的进程放回第i级队列的末尾,把处理机分配给新到的更高优先级的进程。

多级反馈队列的有以下几点优势:

  1. 终端型作业用户:短作业优先。
  2. 短批处理作业用户:周转时间较短。
  3. 长批处理作业用户:经过前面几个队列得到部分执行,不会长期得不到处理。

我以为,这是有大智慧的人才能做到的。饱经风霜。历经世事。兼顾各方。既能做到简单或容易的事情先做,也能做到紧急或重要的事情先做。还能使复杂或麻烦的事情一步一步得到处理。

7. 结语

这进程调度与为人处世有共通之处。我觉得不论各行各业都隐藏着人生的哲学。马克思主义认为,联系是普遍的,联系存在一切事物中,确实是这样的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值