1,处理机调度
在多道程序系统中,调度的实质是一种资源分配,处理机调度是对处理机资源进行分配。处理机调度算法是指根据处理机分配策略所规定的处理机分配算法。在多道批处理系统中,一个作业从提交到获得处理机执行,直至作业运行完毕,可能需要经历多级处理机调度。
1.1,处理机调度的层次
高级调度(外存→内存,作业调度):
- 任务:用于决定按照何种算法将外存上处于后备队列中的哪些作业调入内存,并为它们创建进程、分配必要的资源,然后,再将新创建的进程排在就绪队列上,准备执行。
在实时系统和分时系统中,由于对响应时间要求较高,所以一般不需要作业调度。
低级调度(内存→CPU,进程调度):
- 任务:用来决定就绪队列中的哪个进程应获得处理机,然后由分派程序把处理机分配给该进程。例如进程从就绪态 ➡ 运行态。
- 低级调度的主要功能如下:保存处理机的现场信息、按某种算法选取进程、把处理器分配给进程。
无论是批处理系统,还是分时系统或实时系统,都必须配置低级调度。
中级调度(外存→内存、内存→外存,中程调度):实际上就是存储器管理中的对换功能。
- 目的:提高内存利用率和系统吞吐量。
- 任务:将暂时不能运行的进程调至外存上去等待,此时的进程状态称为就绪驻外存或挂起状态;例如进程从运行态 ➡ 阻塞态。
- 当进程又具备运行条件,且内存又有空闲时,由中级调度决定把外存上的哪些具备运行条件的就绪进程,重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待进程调度。例如进程从阻塞态 ➡ 运行态。
进程调度(内存→CPU):运行频率最高,在分时系统中通常仅10~100ms便进行一次进程调度,因此称为短程调度。为避免调度本身占用太多CPU时间,不宜使进程调度算法太复杂。
作业调度(外存→内存):往往是发生一批作业已运行完毕并退出系统,有需要调入一批作业进入内存时,作业调度的周期较长,大约几分钟一次,因此称为长城调度。由于其运行效率低,故允许作业调度算法花费较多的时间。
中级调度(外存→内存、内存→外存):运行频率基本介于上述两种调度之间,因此称为中程调度。
1.3,调度原则
- 原则一:如果运行的程序,发生了 I/O 事件的请求,那 CPU 使用率必然会很低,因为此时进程在阻塞等待 硬盘的数据返回。这样的过程,势必会造成 CPU 突然的空闲。所以,为了提高 CPU 利用率,在这种发送 I/O 事件致使 CPU 空闲的情况下,调度程序需要从就绪队列中选择一个进程来运行。
- 原则二:有的程序执行某个任务花费的时间会比较⻓,如果这个程序一直占用着 CPU,会造成系统吞吐量 (CPU 在单位时间内完成的进程数量)的降低。所以,要提高系统的吞吐率,调度程序要权衡⻓任务和短 任务进程的运行完成数量。
- 原则三:从进程开始到结束的过程中,实际上是包含两个时间,分别是进程运行时间和进程等待时间,这 两个时间总和就称为周转时间。进程的周转时间越小越好,如果进程的等待时间很⻓而运行时间很短,那 周转时间就很⻓,这不是我们所期望的,调度程序应该避免这种情况发生。
- 原则四:处于就绪队列的进程,也不能等太久,当然希望这个等待的时间越短越好,这样可以使得进程更 快的在 CPU 中执行。所以,就绪队列中进程的等待时间也是调度程序所需要考虑的原则。
- 原则五:对于鼠标、键盘这种交互式比较强的应用,我们当然希望它的响应时间越快越好,否则就会影响 用户体验了。所以,对于交互式比较强的应用,响应时间也是调度程序需要考虑的原则。
1,处理机调度算法的共同目标
(1)资源利用率:应使系统中的处理机和其它所有资源的利用率尽可能的高。
(2)公平性:使得诸进程都获得合理的CPU时间,不会发生进程饥饿现象。
(3)平衡性:兼顾计算型作业和I/O型作业。
(4)策略强制执行:一旦制定了策略,必须执行,即使造成某些工作的延迟也要执行。
2,批处理系统目标
(1)平均周转时间短。https://shao12138.blog.csdn.net/article/details/103012606
(2)系统吞吐量高:吞吐量指的是单位时间内所完成的作业数。
(3)处理机利用率高。
3,分时操作系统目标
(1)响应时间快:响应时间是从用户通过键盘提交一个请求开始,直到屏幕上显示出处理结果为止的一段时间间隔。
(2)均衡性:系统响应时间的快慢应与用户所请求服务的复杂性相适应。
4,实时操作系统目标
(1)截至时间的保证:所谓截至时间是指某任务必须开始执行的最迟时间,或必须完成的最早时间。对于严格的实时系统,其调度方式和调度算法必须保证这一点,否则将可能造成难以预料的后果。
(2)可预测性。
2,作业调度(外存→主存)
在多道处理系统中,作业是用户提交给系统的一项相对独立的工作。操作员把用户提交的作业通过相应的输入设备输入到磁盘存储器,并保存在一个后备队列中。再由作业调度程序将其从外存调入内存。
2.1,作业
作业:仅包含了通常的程序和数据,而且还应配有一份作业说明书,系统根据该说明书来对程序的运行进行控制。
作业步:作业运行期间需要经过若干个相对独立而又相互关联的顺序加工步骤才能得到结果,每一个加工步骤称为一个作业步。
作业控制块JCB:作业在系统中存在的唯一标志,其中保存了系统对作业进行管理和调度所需的全部信息(作业标识、用户名称、用户账号、作业类型、作业状态、调度信息、资源需求、资源使用等)。
过程:当一个作业进入系统时,便由“作业注册”程序为该作业建立一个作业控制块JCB,再根据作业类型,将它放到相应的作业后备队列中等待调度。调度程序依据一定的调度算法来调度它们,被调度到的作业被装入内存。在作业运行期间,系统就按照JCB中的信息和作业说明书对作业进行控制。当一个作业执行结束进入完成状态时,系统负责回收已分配给它的资源,撤销该作业控制块。
收容阶段:操作员把用户提交的作业通过某种输入方式或SPOOLing系统输入到硬盘上,再为该作业建立JCB,并把它放入作业后备队列中,相应的状态为:后备状态。
2.2,主要任务
根据作业控制块(JCB)中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。然后再将新创建的进程插入就绪队列,准备执行。作业调度需决定:
(1)接纳多少个作业:取决于多道程序度,即允许多少个作业同时在内存中运行。对系统来说,希望装入较多的作业,有利于提高CPU的利用率和系统吞吐量。但如果内存中同时运行的作业太多时,进程在运行时因内存不足所发生的中断急剧增加。这将会使平均周转时间显著延长,影响系统的服务质量。因此,多道程序的确定使根据计算机的系统规模、运行速度、作业大小,以及能否获得较好的系统系统性能等情况做出适当的抉择的。
(2)接纳哪些作业取决于调度算法。主要根据调度算法来确定。
在批处理系统中,作业进入系统后,总是先驻留在外存的作业后备队列上,因此需要有作业调度,以便将它们分批地装入内存。然而在分时系统中,为了做到及时响应,用户通过键盘输入的命令或数据等都被直接送入内存,因而无需配置上述的作业调度机制,但也需要有某种接纳控制措施类来限制进入系统的用户数目。如果系统尚有能力处理更多的任务,将会接纳授权用户的请求,否则,便拒绝接纳。类似地,在实时系统中也不需要作业调度,而必须具有接纳控制措施。
2.3,先来先服务(FCFS)
先来先服务:可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,系统将按照作业到达的先后次序来进行调度,或者说它是优先考虑在系统中等待时间最长的作业,而不管该作业所需执行时间的长短,从后背队列中选择几个最先进入该队列的作业,将它们调入内存,为它们分配资源和创建进程,然后将它放入就绪队列。
当在进程调度中采用FCFS算法时,每次调度是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。
FCFS的特点:比较有利于长作业,而不利于短作业。有利于CPU繁忙的作业,而不利于I/O繁忙的作业。
ta到达时间、 tb开始时间、 tc完成时间、 ts服务时间 、tw 等待时间; ti周转时间 时间单位:分钟
T=6.9/4=1.725,W=27.5/4=6.875。
2.4,短作业优先(SJF)
短作业优先:这是对FCFS算法的改进,由于实际情况中,短作业(进程)占用了很大比例,其目标是减少平均周转时间。
SJF算法:(1)对预计执行时间短的作业(进程)优先调度;(2)通常后来的短进程不抢先正在执行的进程(非抢占方式)。
SJF的特点:
(1)优点:比FCFS改善平均周转时间和平均带权周转时间,缩短作业的等待时间;提高系统的吞吐量;
(2)缺点:必须预知作业的运行时间;对长作业非常不利,可能长时间失去执行机会;该算法未考虑作业的紧迫程度;
ta到达时间、 tb开始时间、 tc完成时间、 ts服务时间 、tw 等待时间; ti周转时间 时间单位:分钟
T=6.2/4=1.55,W=20.6/4=5.15。
2.4,优先级调度(PSA)和高相应比优先调度(HRRN)
优先级调度算法:基于作业的紧迫程度,由外部赋予作业相应的优先级,调度算法是根据该优先级进行调度的。可以保证紧迫性作业优先运行。
既可用于作业调度,也可用于进程调度,当用于作业调度时,系统选择若干个优先级最高的作业装入内存。
高相应比优先调度算法
高响应比优先调度算法则是既考虑作业的运行时间,又考虑作业运行时间的调度算法(是FCFS和SJ(P)F的折衷)。
算法优点:实现了对短作业和长作业的较好折中;
算法缺点:每次进行调度前,都需要先做响应比的计算,显然会增加系统开销。
实现方法:为每个作业(或进程)引入一个动态优先级,令它随等待时间延长而增加。其规律可描述为:
由于等待时间与服务时间之和就是系统对该作业(或进程)的响应时间,过该优先级又相当于响应比RP。
Rp= (等待时间 + 要求服务时间) /要求服务时间,由于等待时间+要求服务时间=响应时间,所以Rp= 响应时间/要求服务时间。
由上式可以看出:
- 如果作业的等待时间相同,则要求服务时间越短,其响应比越高,因而类似于SJF算法,有利于短作业。
- 当要求服务时间相同时,作业的优先权又决定于其等待时间,因而该算法又类似于FCFS算法。
- 对于长作业的优先级,可以随等待时间的增加而提高,当其等待时间足够长时,也可获得处理机。
3,进程调度
3.1,任务、机制和方式
进程调度的任务:
- 保存处理机的现场信息:在进行调度时首先需要保存当前进程的处理机的现场信息,如程序计时器、多个通用寄存器中的内容。
- 按某种算法选取进程:调度程序按某种算法从就绪队列中选取一个进程,将其状态改为运行状态,并准备把处理机分配给他。
- 把处理器分配给进程:由分派程序把处理器分配给该进程,此时需要将选中进程的进程控制块内有关处理机现场的信息装入处理器相应的各个寄存器中,把处理器的控制权交给该进程,让它从上次的断点处回复运行。
进程调度机制:
- 排队器:为了提高进程调度的效率,应事先将系统中所有的就绪进程按照一定的方式排成一个或多个队列,以便调度程序能最快地找到它。以后每当有一个进程转变为就绪状态时,排队器便将它插入到相应的就绪队列。
- 分派器(分派程序):分派器把由进程调度程序所选定的进程,从就绪队列中取出,然后进行上下文切换,将处理机分配给它。
- 上下文切换器:当对处理机进行切换时,会发生两对上下文切换操作:
- 第一对上下文切换时,OS将保存当前进程的上下文,即把当前进程的处理机寄存器内容保存到该进程的进程控制块内的相应的单元,再装入分配程序的上下文,以便分派程序运行;
- 第二对上下文切换是移除分派程序的上下文,而把新选进程的CPU现场信息装入到处理机的各个相应寄存器中,以便新选进程运行。
进程调度方式:
非抢占(非抢先、非剥夺)方式:进程获得CPU后,一直执行到完成或因等待某事 件而阻塞,才让出CPU。如:进程完成、等待I/O 、执行了wait、block原语等。
缺点:①平均周转时间长 ②紧急任务不能及时投入,通常用于批处理进程。
抢占方式:调度程序根据某种原则强制性暂停正在执行的进程,把CPU分配给另一进程运行。
抢占原则:(1)优先权原则 :指允许优先级高的新到进程抢占当前进程的处理机。(2)短作业(进程)优先 :指允许新到的短进程可以抢占当前长进程的处理机。即当新到达进程的运行时间比正在执行的进程尚需运行的时间明显短时,将处理机分配给新到的短进程。(3)时间片原则:即各进程按时间片轮转运行时,当正在执行的进程的一个时间片用完后,便停止该进程的执行而重新进行调度。
3.2,时间片轮转调度(RR)-抢占式
1,基本原理:系统将所有就绪进程按FCFS策略排成一个就绪队列。系统可设置每隔一定时间便产生一个中断,去激活调度程序进行调度,把CPU分配给队首进程,并令其执行一个时间片。当它运行完毕后,又把处理机分配给就绪队列中新的队首进程,也让它执行一个时间片。
2,进程切换时机:(1)正在运行的进程完成,应将其从就绪队列中删除,再调度就绪队列队首的进程运行,并启动一个新的时间片(2)在一个时间片用完时,计时器中断处理程序被激活。如果该进程尚未运行完毕,调度程序将它送往就绪队列的末尾。
3,时间片长短的确定:过长(退化为FCFS算法,进程在一个时间片内都执行完,响应时间过长)。过短(用户的一次请求需要多个时间片才能处理完,上下文切换次数增加,响应时间过长)。
时间片略大于一次典型的交互所需要的时间,使大多数进程在一个时间片内完成,应当使用户输入的80%以上的命令通常在一个时间片完成,否则使响应时间过长。
3.3,最高优先级调度
1,优先级调度算法的类型
① 非抢占方式:一旦把处理机分配给就绪队列中优先级最高的进程后,该进程便一直运行下去,直到主动释放处理机;
② 抢占方式:进程执行期间,只要出现了一个优先级更高的进程,调度程序就将处理机分配给新到的优先级最高的进程;
2,优先级的类型
① 静态优先级:创建进程时确定,直到进程终止前都不改变。通常是一个整数。
确定的依据:进程类型(系统进程优先级较高)、对资源的需求(对CPU和内存需求较少的进程,优先级较高)、用户要求(系统之外的准则)、进程紧迫程度、付费多少、赞助单位、以及其它的社会和政治因素。
② 在创建进程时赋予的优先级,在进程运行过程中可以自动改变,以便获得更好的调度性能。在就绪队列中的进程,随着等待时间延长则优先级逐步提高;当采用抢占式调度算法时,执行进程随着占CPU时间增加,其优先级逐步降低。可防止长作业长期垄断处理机。
3.4,多级队列调度算法
由于系统中仅设置一个进程的就绪队列,即低级调度算法是固定的、单一的,无法满足系统中不同用户对进程调度策略的不同要求,再多处理机系统中,这种单一调度策略实现机制的确定更显突出,为此多级队列调度算法在一定程度上弥补了这一缺点。
多级队列调度算法:该算法将系统中的进程就绪队列从一个拆分为多个,将不同类型或性质的进程固定分配在不同的就绪队列,不同的就绪队列采用不同的调度算法,一个就绪队列中可以设置不同的优先级,不同的就绪队列本身也可以设置不同 优先级。
多队列调度算法由于设置多个就绪队列,因此对每个就绪队列就可以实施不同的调度算法,因此,系统对不同用户进程的需求,很容易提供多种调度策略。
3.5,多级反馈队列调度算法
多级反馈队列算法是时间片轮转算法和优先级算法的综合和发展,目前被公认较好的一种进程调度算法。多级反馈队列调度算法不必事先知道各种进程所需的执行时间,而且还可以满足各种类型进程的需要。
调度机制
(1)应设置多个就绪队列,并为每个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。
(2)每个队列都采用FCFS算法。新进程进入内存后,首先将其放在第一队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,…如此下去,最后一个队列中采取时间片轮转的方式运行。
(3)按队列优先级调度。调度程序首先调度最高优先级队列中的就绪进程运行,仅当第一队列为空时才调度第二队列中的进程运行;如果是抢占方式,则进程执行时有新进程进入较高优先级的队列,则抢先执行新进程,并把被抢先的进程投入原队列的末尾。
算法性能:多级反馈队列调度算法具有较好的性能,能很好地满足各种类型用户的需要。
(1)终端型用户。由于终端型作业用户所提交的作业大多属于交互型作业,作业通常较小,系统只要能使这些作业在第一队列所规定的时间片内完成,便可使终端型作业用户都感到满意。
(2)短批处理作业用户。对于很短的批处理型作业,开始时像终端作业一样,如果仅在第一队列中执行一个时间片即可完成,便可获得与终端型作业一样的响应时间。对于稍长的作业,通常也只需在第二和第三队列各执行一个时间片即可完成,其周转时间仍然很短。
(3)长批处理作业用户。对于长作业,它将依次在第1,2,…,n队列中运行,然后再按轮转方式运行,用户不必担心其作业长期得不到处理。
例:假设一个系统中有5个进程,它们的到达时间和服务时间如下表所示,忽略I/O以及其他开销时间,若按照非抢占的多级反馈队列(FB,第i级队列的时间片=2^i-1)及立即抢占的多级反馈队列( FB,第i级队列的时间片=2^i-1 )调度算法进行CPU调度,请给出各进程的完成时间、周转时间、带权周转时间、平均周转时间和平均带权周转时间。
3.6,基于公平原则的调度算法
保证调度算法:保证处理机分配的公平性,如果在系统中有n个相同类型的进程同时运行,为公平起见,须保证每个进程都获得相同的处理机时间1/n。实施公平调度算法时需要具备以下功能:
- 跟踪计算每个进程自创建以来已经执行的处理时间;
- 计算每个进程应获得的处理机时间,即自创建以来的时间除以n;
- 计算进程获得处理机时间的比率,即进程实际执行的处理时间和应获得的处理机时间之比;
- 比较各进程获得处理机的比率;
- 调度程序选择比率最小的进程将处理机分配给它
公平分享调度算法:调度的公平性主要针对用户而言,使所有用户能获得相同的处理机时间,或所要求的时间比例。为此,必须考虑到每一个用户所拥有的进程数目。
例如,系统中有两个用户,用户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的两倍,则必须执行如下所示的强制调度序列:A B E C D E A B E C D E A B E C D E …
4,实时调度
实时系统中,可能存在着两种不同性质的热舞,即HRT任务和SRT任务,他们都联系着一个截止时间。为保证系统能够正常工作,实时调度必须满足实时任务对截止时间的要求。https://shao12138.blog.csdn.net/article/details/111083732#t10
4.1,基本条件
1,提供必要的信息:就绪时间(任务成为就绪状态的起始时间)、开始截止时间、完成截止时间、处理时间(指一个任务从开始执行直至完成所需的时间)、资源要求(任务执行时所需的一组资源)、优先级(可以设为绝对优先级或相对优先级)
2,系统处理能力强:若处理机处理能力不够强,则会出现处理机忙不过来而使某些实时任务不能得到及时处理,从而导致发生难以预料的后果。解决方法:(1)增强单处理机的处理能力,以减少单一任务的处理时间。(2)采用多处理机系统。
3,采用抢占式调度机制:在含有HRT任务的实时系统中,广泛采用抢占机制,这样便满足HRT(硬实时任务)对截止时间的要求。可预知任务开始截止时间的小型实时系统采用非抢占调度机制,以减少系统开销。这种OS中,实时任务小,完成关键任务和临界区后,阻塞自身释放处理机,使得调度程序可以选择开始截止时间即将到达的任务
4,具有快速切换机制:为保证硬实时的及时响应,OS需要具有快速切换机制。
- 对外部中断的快速响应能力:系统应具有快速硬件中断机构保证对紧迫外部中断请求的及时响应,同时也要保证本次中断的时间间隔尽量的小。
- 快速的任务分派能力:完成任务调度后,需要进行任务切换,此时应使系统中每个运行功能单位适当小,以减少切换的时间开销。
4.2,算法分类
按实时任务性质分:硬实时任务与软实时任务
按调度方式分:非抢占式与抢占式
按调度时间分:静态调度(进程执行前已经决定各进程执行顺序)和动态调度(根据当前运行情况选择可投入运行的进程)
多处理机环境下:集中式与分布式
非抢占式调度算法
优点:算法思想简单,易于实现,常用于小型或实时要求不严格的实时控制系统中
可分为:非抢占式轮转调度算法、非抢占式优先调度算法
非抢占式轮转调度算法算法思想:在一台计算机中为生产现场的多个相同或类似对象建立一一对应的实时任务,并将其排成轮转队列等待调度,每次可获得数秒或数十秒的时间片响应。常用于工业生产的群控系统。
非抢占式优先调度算法思想: 非抢占式优先调度算法可以为要求较为严格的任务赋予较高的优先级。当这些实时任务到达时,把它们安排在就绪队列的队首,等待当前任务自我终止或运行完成后才能被调度执行。常用于有一定要求的实时控制系统中。
抢占式调度算法
可分为:基于时钟中断的抢占式优先权调度算法、立即抢占的优先权调度算法
基于时钟中断的抢占式优先权调度算法思想:在某实时任务到达后,如果该任务的优先级高于当前任务的优先级,这时并不立即抢占当前任务的处理机,而是等到时钟中断到来时,调度程序才剥夺当前任务的执行,将处理机分配给新到的高优先权任务。
立即抢占的优先权调度算法思想:这种调度算法要求操作系统具有快速响应外部事件中断的能力。一旦出现外部中断,只要当前任务未处于临界区,便立即剥夺当前任务的执行,把处理机分配给请求中断的紧迫任务。
4.3,最早截止时间优先EDF算法
基本思想:根据任务的截止时间来确定任务的优先级。截止时间越早,优先级越高。该算法要求在系统中保持一个实时任务就绪队列,该队列按各任务截止时间的早晚排序。调度程序在选择任务时,总是选择就绪队列中的第一个任务,为之分配处理机,使之投入运行。
EDF算法即可用于抢占式调度,也可用于非抢占式调度。
非抢占式调度方式用于非周期实时任务:
抢占式调度方式用于周期任务:
4.4,最低松弛度优先LLF算法
基本思想:根据任务紧急(或松弛)程度,来确定任务的优先级。任务的紧急程度越高,为该任务赋予的优先级越高,以使之优先执行。实现该算法时,要求系统中有一个按松弛度排序的实时任务队列,松弛度最低的任务排在队列最前面,调度程序总是选择队列中的队首任务执行。
例如:一个任务在200ms时必须完成,而它本身所需的运行时间就有100ms,因此,调度程序必须在100ms之前调度执行,该任务的紧急程度(松弛程度)为100ms。又如,另一任务400ms时必须完成,它本身运行需要150ms,则其松弛程度为250ms。在实时系统中,有两个周期性实时任务A和B,任务A要求每20ms执行一次,执行时间为10ms;任务B则要求每50ms执行一次,执行时间为25ms。任务A和B每次必须完成的时间A1,A2,A3…和B1,B2,B3…如下图所示。
4.5,优先级倒置
优先级倒置:高优先级进程被低优先级进程延迟或阻塞。
例如:有三个完全独立的进程P1、P2、P3。P1优先级最高,P2次之,P3最低。P1和P3通过共享的一个临界资源进行交互。
P1:…P(mutex);CS-1;V(mutex);… P2: …program2…; P3: …P(mutex);CS-3;V(mutex);… ============================ P3最先执行,执行P操作后,进入临界区 时刻a,P2就绪,抢占P3的处理机而运行 时刻b,P1就绪,抢占P2的处理机而运行 时刻c,P1执行P操作,阻塞;P2继续运行 时刻d,P2运行完毕;P3接着运行 时刻e,P3退出临界区,唤醒P1;因P1优先级高,抢占P3的处理机而运行
按照以上的运行情况,违背了优先级高的进程优先执行的原则。因为:根据优先级原则,高优先级进程应当优先执行,但在此例中,P1和P3共享着“临界资源”,而出现了不合常理的现象。高优先级进程P1因P3进程阻塞了,又因为P2进程的存在而延长了P1被阻塞的时间,而且被延长的时间是不可预知和无法限定的。因此所产生的“优先级倒置”的现象是非常有害的,它不应出现在实时系统中。