几种操作系统调度算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

保证调度算法

基本思想:向用户做出明确的性能保证,然后去实现它.如你工作时有n个用户的登录,则你将获得cpu处理能力的1/n

算法实现:跟踪计算各个进程已经使用的cpu时间和应该获得的cpu时间,调度将转向两者之比最低的进程

五,保证调度算法

思想:向用户做出明确的性能保证,然后去实现它.

算法:容易实现的一种保证是:当工作时己有n个用户登录在系统,则将获得CPU处理能力的1/n.类似的,如果在一个有n个进程运行的用户系统中,每个进程将获得CPU处理能力的1/n.

实现方法:OS应记录及计算,各个进程在一定时间段内,已经使用的CPU时间和应该得到的CPU时间,二者之比小者优先级高.

5. 保证调度

一种完全不同的调度算法是向用户作出明确的性能保证,然后去实现它。一种很实际并很容易实现的保证是:若用户工作时有n个用户登录,则用户将获得CPU处理能力的1/n。类似地,在一个有n个进程运行的单用户系统中,若所有的进程都等价,则每个进程将获得1/n的CPU时间。看上去足够公平了。

为了实现所做的保证,系统必须跟踪各个进程自创建以来已使用了多少CPU时间。然后它计算各个进程应获得的CPU时间,即自创建以来的时间除以n。由于各个进程实际获得的CPU时间是已知的,所以很容易计算出真正获得的CPU时间和应获得的CPU时间之比。比率为0.5说明一个进程只获得了应得时间的一半,而比率为2.0则说明它获得了应得时间的2倍。于是该算法随后转向比率最低的进程,直到该进程的比率超过它的最接近竞争者为止。

彩票调度算法

基本思想:为进程发放针对系统各种资源(如cpu时间)的彩票;当调度程序需要做出决策时,随机选择一张彩票,持有该彩票的进程将获得系统资源

合作进程之间的彩票交换

六,彩票调度算法

彩票调度算法:

为进程发放针对各种资源(如CPU时间)的彩票.调度程序随机选择一张彩票,持有该彩票的进程获得系统资源.

彩票调度算法的特点:

平等且体现优先级:进程都是平等的,有相同的运行机会.如果某些进程需要更多的机会,可被给予更多彩票,增加其中奖机会.

易计算CPU的占有几率:某进程占用CPU的几率,与所持有的彩票数成正比例.该算法可实现各进程占用CPU的几率.

响应迅速

各个进程可以合作,相互交换彩票.

容易实现按比例分配如图象传输率,10帧/s,15帧/s,25帧/s

6. 彩票调度

给用户一个保证,然后兑现之,这是个好想法,不过很难实现。但是,有一个既可给出类似预测结果而又有非常简单的实现方法的算法,这个算法称为彩票调度(lottery scheduling)(Waldspurger和Weihl,1994)。

其基本思想是向进程提供各种系统资源(如CPU时间)的彩票。一旦需要做出一项调度决策时,就随机抽出一张彩票,拥有该彩票的进程获得该资源。在应用到CPU调度时,系统可以掌握每秒钟50次的一种彩票,作为奖励每个获奖者可以得到20ms的CPU时间。

为了说明George Orwell关于“所有进程是平等的,但是某些进程更平等一些”的含义,可以给更重要的进程额外的彩票,以便增加它们获胜的机会。如果出售了100张彩票,而有一个进程持有其中的20张,那么在每一次抽奖中该进程就有20%的取胜机会。在较长的运行中,该进程会得到20%的CPU。相反,对于优先级调度程序,很难说明拥有优先级40究竟是什么意思,而这里的规则很清楚:拥有彩票f份额的进程大约得到系统资源的f 份额。

彩票调度具有若干有趣的性质。例如,如果有一个新的进程出现并得到一些彩票,那么在下一次的抽奖中,该进程会有同它持有彩票数量成比例的机会赢得奖励。换句话说,彩票调度是反应迅速的。

如果希望协作进程可以交换它们的彩票。例如,有一个客户进程向服务器进程发送消息后就被阻塞,该客户进程可以把它所有的彩票交给服务器,以便增加该服务器下次运行的机会。在服务器运行完成之后,该服务器再把彩票还给客户机,这样客户机又可以运行了。事实上,如果没有客户机,服务器根本就不需要彩票。

彩票调度可以用来解决用其他方法很难解决的问题。一个例子是,有一个视频服务器,在该视频服务器上若干进程正在向其客户提供视频流,每个视频流的帧速率都不相同。假设这些进程需要的帧速率分别是10、20和25帧/秒。如果给这些进程分别分配10、20和25张彩票,那么它们会自动地按照大致正确的比例(即10∶20∶25)划分CPU的使用。

7. 公平分享调度

到现在为止,我们假设被调度的都是各个进程自身,并不关注其所有者是谁。这样做的结果是,如果用户1启动9个进程而用户2启动1个进程,使用轮转或相同优先级调度算法,那么用户1将得到90%的CPU时间,而用户2只得到10%的CPU时间。

为了避免这种情形,某些系统在调度处理之前考虑谁拥有进程这一因素。在这种模式中,每个用户分配到CPU时间的一部分,而调度程序以一种强制的方式选择进程。这样,如果两个用户都得到获得50% CPU时间的保证,那么无论一个用户有多少进程存在,每个用户都会得到应有的CPU份额。

作为一个例子,考虑有两个用户的一个系统,每个用户都保证获得50% CPU时间。用户1有4个进程A、B、C和D,而用户2只有1个进程E。如果采用轮转调度,一个满足所有限制条件的可能序列是:

A E

B E

C E

D

E A E B E C E D E …

另一方面,如果用户1得到比用户2两倍的CPU时间,我们会有

A B E C D E A B E C D E …

当然,大量其他的可能也存在,可以进一步探讨,这取决于如何定义公平的含义。

实时调度

实时系统:那些时间因素非常关键的系统

硬实时系统:存在必须满足的时间限制

软实时系统:可以容忍偶尔超过时间限制

周期性事件:每个一段固定的时间发生

非周期性事件:在不可预测的时间发生

可时刻调度的的实时系统:

设有m个周期性事件,事件i的周期为pi,其中每个事件需要ci秒的cpu时间来处理,可时刻调度的的实时系统必须满足:

c1/p1 + c2/p2 + … + cm/pm ≤ 1实时调度算法

动态实时调度算法:在运行时作出调度决定

静态实时调度算法:在系统启动之前完成所有的调度决策

经典实时调度算法

单比率调度算法:事先为每个进程分配一个与事件发生频率成正比的优先数,并采取抢占式分配策略

基本思想:为每个进程分配一个与事件发生频率成正比的优先数.例如,周期为20ms 的进程优先数为50,周期为100ms的进程优先数为10,运行时调度程序总是调度优先数最高的就绪进程,并采取抢占式分配策略.

限期调度算法:当一个事件发生时,对应的进程就被加入就绪进程队列,该就绪队列按照截止期限排序

限期调度算法

基本思想:当一个事件发生时,对应的进程就按照截止期限被加入就绪进程队列.对于一个周期性事件,其截止期限即为事件下一次发生的时间.该调度算法首先运行队首进程,即截止时间最近的那个进程.

相关文档
最新文档