A. 进程调度的实时系统
最简单最直观的进程调度策略是基于优先级的调度,多数实时系统采用基于优先级的调度,每个进程根据它重要程度的不同被赋予不同的优先级,调度器在每次调度时,总选择优先级最高的进程开始执行.
首先要考虑的问题是如何分配优先级,对于进程优先级的分配可以采用静态和动态两种方式,静态优先级调度算法:这种调度算法给那些系统中得到运行的所有进程都静态地分配一个优先级.静态优先级的分配可以根据应用的属性来进行,比如进程的周期,用户优先级,或者其它的预先确定的策略.单调率算法(RM)调度算法是一种典型的静态优先级调度算法,它根据进程的执行周期的长短来决定调度优先级,那些具有小的执行周期的进程具有较高的优先级.动态优先级调度算法:这种调度算法根据进程的资源需求来动态地分配进程的优先级,其目的就是在资源分配和调度时有更大的灵活性.在实时系统中,最早期限优先算法(EDF)算法是使用最多的一种动态优先级调度算法,该算法给就绪队列中的各个进程根据它们的截止期限(Deadline)来分配优先级,具有最近的截止期限的进程具有最高的优先级.
分配好优先级之后下一个要考虑的问题是何时让高优先级进程掌握CPU的使用权,这取决于操作系统的内核,有不可抢占式和可抢占式两种.
不可抢占式内核要求每个进程自我放弃CPU的所有权,各个进程彼此合作共享一个CPU.异步事件还是由中断服务来处理.中断服务可以使一个高优先级的进程由挂起状态变为就绪状态.但中断服务以后控制权还是回到原来被中断了的那个进程,直到该进程主动放弃CPU的使用权时,那个高优先级的进程才能获得CPU的使用权.这就出现了响应时间的问题,高优先级的进程已经进入了就绪状态但不能执行,这样进程的响应时间变得不再确定这与实时系统的要求不符,因此一般的实时操作系统都要求是可抢占式的内核,当一个运行着的进程使一个比它优先级高的进程进入了就绪态,当前进程的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的进程立刻得到了CPU的控制权,如果是中断服务子程序使一个高优先级的进程进入就绪态,中断完成时,中断了的进程被挂起,优先级高的那个进程开始运行.在这种内核设置下,多个进程可能处于并发的状态,这就出现了多个进程共享资源的情况,因此我们需要设置信号量来保证临界资源的正确使用,任何一个想使用临界资源的进程在进入临界区之前必须拥有使用临界资源的信号量,否则不可以执行临界区代码.
这样基于优先级的可抢占式进程调度策略就基本架构完成,但此时仍然有系统崩溃的危险,假设系统中有3个进程,分别为p1,p2和p3. p1的优先权高于p2,而p2的优先权高于p3.恰在此时p1和p2 因某种原因被阻塞,这时候系统调度p3执行.p3执行一段时间后,p1被唤醒.由于采取的是PBP的调度策略,因此p1抢占 p3的CPU, p1执行.p1执行一段时间后要进入临界区,但此时p3占有此临界资源的信号量.因此p1被阻塞,处于等待状态,等待p3 释放此信号量.经过这么一段时间后,p2此时此刻处于就绪状态.因此系统调度p2执行.如果p3在p2的执行期间一直没有能够被调度执行的话,那p1和p3将一直等到p2执行完后才能执行,p1更要等到p3释放它所把持的信号量才能执行;而这段时间完全有可能超出p1的Deadline,使得p1崩溃.我们看到在这个过程中,由于临界资源的使用问题使得优先级低的进程先于优先级高的进程先执行,这就出现了优先级反转的问题,从而造成了系统崩溃,对于这个问题可以采用优先级继承的办法来进行解决.在优先级继承方案中,当高优先级进程在等待低优先级的进程占有的信号量时,让低优先级进程继承高优先级进程的优先级,即把低优先级进程的优先权提高到高优先级进程的优先级;当低优先级进程释放高优先级进程等待的信号量时,立即把其优先权降低到原来的优先权.采用这种方法可以有效地解决上面所述的优先权反转的问题.当高优先级进程p1想要进入临界区时,由于低优先级进程p3占有这个临界资源的信号量,导致p1被阻塞.这时候,系统把p3的优先权升到p1的优先权,此时优先权处于p1和p3之间的进程p2,即使处于就绪状态也不可以被调度执行,因为此时p3的优先权已经高于p2,所以p3此时被调度执行.当p3释放p1需要的信号量时,系统立即把p3的优先权降到原来的高度,来保证p1和p2正常有序执行,有许多实时系统是采用这种方法来防止优先级反转的,如VXWORKS. 对于那些具有稳定,已知输入的简单系统,可以使用时间驱动的调度算法,它能够为数据处理提供很好的预测性.这种调度算法本质上是一种设计时就确定下来的离线的静态调度方法.在系统的设计阶段,在明确系统中所有的处理情况下,对于各个进程的开始,切换,以及结束时间等就事先做出明确的安排和设计.这种调度算法适合于那些很小的嵌入式系统,自控系统,传感器等应用环境.这种调度算法的优点是进程的执行有很好的可预测性,但最大的缺点是缺乏灵活性,并且会出现有进程需要被执行而 CPU 却保持空闲的情况.
对于不同要求下的实时系统可以采用不同的进程调度策略来进行设计,也可以将这些方法进行综合之后得到更适合的调度策略.
B. 在操作系统中,常见的调度算法有哪些
1.批处理系统:增加系统吞吐量和提高系统资源的利用率;
2.分时系统:保证每个分时用户能容忍的响应时间。
3.实时系统:保证对随机发生的外部事件做出实时响应。
先来先服务队列
最短优先优先队列
高优先权优先调度算法
优先权调度算法的类型
高响应比优先调度算法
基于时间片的轮转调度算法
时间片轮转法
多级反馈队列调度算法
电梯调度算法
C. 实时操作系统常用任务调度算法有哪些
实时操作系统常用任务调度算法有哪些
操作系统常用的批处理作业调度算法
1.先来先服务调度算法
先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
2.短作业(进程)优先调度算法
D. 进程常用的调度方式有哪三种
进程调度有以下两种基本方式:
非剥夺方式
分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把处理机分配给另一个进程。
剥夺方式
当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的处理机,将之分配给其它进程。剥夺原则有:优先权原则、短进程、优先原则、时间片原则。
例如,有三个进程P1、P2、P3先后到达,它们分别需要20、4和2个单位时间运行完毕。
假如它们就按P1、P2、P3的顺序执行,且不可剥夺,则三进程各自的周转时间分别为20、24、
26个单位时间,平均周转时间是23.33个时间单位。
假如用时间片原则的剥夺调度方式,可得到:
可见:P1、P2、P3的周转时间分别为26、10、6个单位时间,平均周转时间为14个单位时间。
衡量进程调度性能的指标有:周转时间、响应时间、CPU-I/O执行期。
E. 8.在批处理系统、分时系统和实时系统中,各采用哪几种进程(作业)调度算法
批处理系统常用调度算法:
①、先来先服务:FCFS
②、最短作业优先
③、最短剩余时间优先
④、响应比最高者优先
分时系统调度算法:
①、轮转调度
②、优先级调度
③、多级队列调度
④、彩票调度
实时系统调度算法:
①、单比率调度
②、限期调度
③、最少裕度法
F. 进程调度有哪几种方式有哪几种评价方式
进程调度的几种方式:
1、非剥夺(非抢占)调度方式:当一个进程正在处理机上执行时,即使有某个更为重要或者紧迫的进程进入就绪队列,仍然让正在执行的进程继续执行,知道该进程完成或发生某种事件而进入阻塞态时,才把处理机分配给更为重要或紧迫(优先级更高)的进程。其优点是实现简单,系统开销小,适用于大多数批处理系统,但它不能用于分时系统和大多数实时系统。
2、剥夺(抢占)调度方式:当一个进程正在处理机上执行时,若有某个更为重要或紧迫的进程(优先级更高)的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给这个更重要的进程。这种方式对提高系统吞吐率和响应效率都有明显的好处。但抢占也要遵循一定原则。
(6)实时系统常用的调度方法扩展阅读:
为了比较处理机调度算法的性能,人们提出了很多评价准则,主要有一下几种:
1、CPU利用率:CPU是计算机系统中最重要和最昂贵的资源之一,所以应该尽可能使得CPU保持忙的状态,资源利用率尽可能高。
2、系统吞吐量:单位时间内CPU完成的作业数量。长作业需要消耗较长的处理机时间,会降低系统的吞吐量。对于短作业,他们所需消耗的处理机时间较短,因此能提高系统吞吐量。调度算法和方式不同,也会对系统的吞吐量产生较大影响。
3、周转时间:周转时间是指从作业提交到作业完成所经历的时间,是作业等待、在就绪队列中排队,在处理机上运行及输入输出操作所花费的时间的总和。
4、等待时间:进程处于等处理机状态的时间之和。等待时间越长,用户满意度越低。实际上,处理机调度算法实际上并不影响作业执行或输入输出操作的时间,只影响作业在就绪队列中等待所花的时间。因此,衡量一个调度算法的优劣,常常只需简单地考察等待时间。
5、响应时间:用户提交请求到系统首次产生响应所用的时间。在交互式系统中,周转时间不可能是最好的评价准则,一般采用响应时间作业衡量调度算法的重要准则之一。从用户角度来看,调度策略应该尽量降低响应时间,使得响应时间处在用户能接受的范围之内。
G. 操作系统中进程调度策略有哪几种
linux内核的三种调度方法:
1,SCHED_OTHER 分时调度策略,
2,SCHED_FIFO实时调度策略,先到先服务
3,SCHED_RR实时调度策略,时间片轮转
实时进程将得到优先调用,实时进程根据实时优先级决定调度权值,分时进程则通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大,也就是曾使用了cpu最少的进程将会得到优先调度。
SHCED_RR和SCHED_FIFO的不同:
当采用SHCED_RR策略的进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾确保了任何具备相同优先级的RR任务的调度公平。