操作系统(二)——进程管理(处理机调度、进程同步、死锁)

处理机
处理机是计算机系统中存储程序和数据,并按照程序规定的步骤执行指令的部件。程序是描述处理机完成某项任务的指令序列。指令则是处理机能直接解释、执行的信息单位。处理机包括中央处理器(cpu),主存储器,输入-输出接口。处理机加接外围设备就构成完整的计算机系统。
cpu
中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。

2.2 处理机调度

处理机调度是对处理机进行分配,就是从就绪队列中,按照一定的算法(公平、高效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。处理机调度是多道操作系统的基础,是操作系统的核心问题。

2.调度的层次

一个作业从提交开始直到完成,往往要经历以下三级调度:
1)作业调度(高级调度)
按一定的原则从外存上处于后备状态的作业中挑选一个(或多个)作业,给它(们)分配内存、输入/输出设备等必要资源,并建立相应的进程,以使它(们)获得竞争处理机的权利。就是内存与辅存之间的调度。对于每一个作业只调入一次,调出一次。
多道批处理系统中大多配有作业调度,而其他系统中通常不需要配置作业调度。作业调度的执行频率比较低,通常几分钟一次。
2)终极调度(内存调度)
引入是为了
提高内存利用率和系统吞吐量
。为此,应使那些暂时不能运行的进程,调至外存等待,把此时的进程状态称为挂起状态。当它们已具备运行条件且内存又稍有空闲时,由中级调度来决定,把外存上那些已具备运行条件的就绪进程再重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待。
3)进程调度(低级调度)
主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。进程调度是操作系统中最基本的一种调度,在一般操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。

3.三级调度的联系

作业调度从外存的后备队列中选择一批作业进入内存,为它们建立进程,这些进程被送入就绪队列,进程调度从就绪队列中选出一个进程,并把其状态改为运行状态,把CPU分配给它。中级调度是为了提高内存的利用率,系统将那些暂时不能运行的进程挂起来。当内存空间宽松时,通过中级调度选择具备运行条件的进程,将其唤醒。
1)作业调度为进程活动做准备,进程调度使进程正常活动起来,中级调度将暂时不能运行的进程挂起,中级调度处于作业调度和进程调度之间。
2)作业调度次数少,中级调度次数略多,进程调度频率最高。
3)进程调度是最基本,不可获取。

2.2.2 调度的时机、切换与过程

进程调度和切换程序是操作系统内核程序,当请求调度的事件发生后,才可能会运行进程调度程序,当调度了新的就绪进程后,才会去进行进程间的切换。在实际中,操作系统内核程序运行时,如果某时发生了引起进程调度的因素,并不一定能够马上进行进程的调度和切换。
不能进行进程调度和切换的情况有以下几种:
**1)在处理中断的过程中:**中断过程复杂,在实现上很难做到进程切换,而且中断处理是系统工作的一部分,逻辑上不属于某一进程,不应被剥夺处理机资源。
**2)进程在操作系统内核程序临界区中:**进入临界区后,需要独占式地访问共享数据,理论上必须加锁,以防止其他并行程序进入,在解锁前不应切换到其他进程运行,以加快共享数据的释放。
**3)其他需要完全屏蔽中断的原子操作过程中:**如加锁、解锁、中断现场保护、恢复等原子操作。在原子过程中,连中断都要屏蔽,更不应该进行进程调度与切换。
应当进行进程调度和切换的情况有:
**1)当发生引起调度条件,且当前进程无法继续运行下去时,可以马上进行调度和切换。**如果操作系统只在这种情况下进行进程调度,就是非剥夺调度。
**2)当中断处理结束或自陷处理结束后,返回被中断进程的用户态程序执行现场前,若置上请求调度标志,即可马上进行进程调度与切换。**如果操作系统支持这种情况下的运行调度程序就实现了剥夺方式的调度。

2.2.3 进程调度方式

**1)非剥夺调度方式(非抢占方式)。**这种方式的优点是实现简单、系统开销小,适用于大多数的批处理系统,但它不能用于分时系统和大多数实时系统。
**2)剥夺调度方式(抢占方式)。**可以提高系统吞吐率和响应效率,但剥夺不是一种任意性的行为,必须遵循一定的准则,主要有:优先权、短进程有限和时间片原则等。

2.2.4 调度的基本准则

1)CPU利用率;
**2)系统吞吐量;**表示单位时间内CPU完成作业的数量。
**3)周转时间;**是指从作业提交到作业完成所经历的时间。计算公式如下:
周转时间=作业完成时间-作业提交时间
带权周转时间是指作业周转时间与作业实际运行时间的比值。
平均带权周转时间是指多个作业带权周转时间的平均值。
**4)等待时间;**是指进程处于等处理机状态时间之和,等待时间越长,用户满意度越低。**处理机调度算法实际上并不影响作业执行或输入/输出操作的时间,只影响作业在就绪队列中等待所花的时间。**因此,衡量一个调度算法的优劣,常常只需简单地考察等待时间。
**5)响应时间;**是指用户提交请求到系统首次产生响应所用的时间。在交互系统中,周转时间不可能是最好的评价准则,一般采用响应时间作为衡量调度算法的重要准则之一。

2.2.5 典型的调度算法

1、先来先服务(FCFS)调度算法——不可剥夺算法(作业调度&进程调度)
它不作为分时系统和实时系统的主要调度策略,但它常常被结合在其他调度策略中使用。
特点是:算法简单,但效率低;对长作业比较有利,但对短作业不利;有利于CPU繁忙型作业,而不利于I/O繁忙型作业。
2、短作业优先(SJF)调度算法(作业调度)
从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
缺点:1)对长作业不利,容易出现**“饥饿”现象**;
2)该算法未完全考虑作业的紧迫程序,因而不能保证紧迫性作业会被及时处理;
3)由于作业的长短只是根据用户所提供的预估执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业优先调度。
SJF调度算法的平均等待时间、平均周转时间最少。
3、优先级调度算法(优先权调度算法,作业调度&进程调度)
根据新的最高优先级进程能否抢占正在执行的进程,可以将该调度算法分为:
1)非剥夺式优先级调度算法。
2)剥夺式优先级调度算法。

根据进程创建后其优先级是否可以改变,可以将进程优先级分为以下两种:
**1)静态优先级。**创建时确定,在进程整个运行期间保持不变。
**2)动态优先级。**进程运行过程中,根据进程情况的变化(进程占有CPU时间的长短、就绪进程等待CPU时间的长短)动态调整优先级。
4、高响应比优先调度算法(主要用于作业调度)
对FCFS和SJF调度算法的一种综合平衡,公式:
响应比=(等待时间+要求服务时间)/要求服务时间
1)当作业的等待时间相同时,则要求服务时间越短,其响应比越高,有利于短作业;
2)当要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长,其响应比越高,因而它实现的是先来先服务;
3)对于长作业,作业的响应比可以随等待时间的增加而提高,当其等待时间足够长时,其响应比便可升到很高,从而也获得处理机。克服了饥饿状态,兼顾了长作业。
5、时间片轮转调度算法(分时系统)
进程调度程序选择就绪队列中第一个进程执行,但仅能运行一个时间片,如100ms。在使用完一个时间片之后,即使进程并未完成其运行,它也必须释放出(被剥夺)处理机给下一个就绪进程,而被剥夺的进程返回到就绪队列的末尾重新排队,等候再次运行。
**时间片的大小对系统性能的影响很大,**时间片的长短通常由以下因素确定:系统的响应时间、就绪队列中的进程数目和系统处理能力。
6、多级反馈队列调度算法(集合了前面几种算法的优点)
1)应设置多个就绪队列,并为各个队列赋予不同的优先级,第1级队列的优先级最高,2级队列次之,其余队列的优先级逐次降低。
2)赋予各个队列中进程执行时间片的大小也各不相同,在优先级越高的队列中,每个进程的运行时间片就越小。
3)。。。
多级反馈队列的优势:
1)终端型作业用户:短作业优先。
2)短批处理作业用户:周转时间较短。
3)长批处理作业用户:经过前面几个队列得到部分执行,不会长期得不到处理。

2.3 进程同步

1、临界资源 一次仅允许一个进程使用的资源。比如许多物理资源,例如打印机等,还有血多变量、数据等都可以被若干进程共享。
在每个进程中,访问临界资源的那段代码称为临界区,临界资源的访问过程可以分为四个部分:
1)进入区。在进入区要检查可否进入临界区,如果可以进入临界区,则应设置正在访问临界区的标志,以阻止其他进程同时进入临界区。
2)临界区。进程中正在访问临界资源的那段代码,又称临界段。
3)退出区。将正在访问临界区的标志清除。
4)剩余区。代码中的其余部分。
2、同步亦称直接制约关系,是指完成某种任务而建立的两个或多个进程,这些进程因为要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。
3、互斥亦称间接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一进程才允许去访问此临界资源。
为禁止两个进程同时进入临界区,同步机制应遵循以下准则:
1)空闲让进。2)忙则等待。3)有限等待。4)让权等待(当进程不能进入临界区时,应立即释放处理器,防止进程忙等待)。

2.3.2 实现临界区互斥的基本方法

1、软件实现方法
1)算法一:单标志法,使用一个公用整型变量turn,用于指示被允许进入临界区的进程编号。(若turn编号对应的进程不进入临界区,则其他进程也无法进入,不能做到空闲让进)
2)算法二:双标志法先检查,在每一个进程访问临界区资源之前,先查看以下临界资源是否正在被访问,若正在被访问,则该进程需要等待;否则,进程才进入自己的临界区。
优点:不用交替进入,可连续使用;缺点:Pi和Pj可能同时进入临界区。(违背忙则等待)
3)算法三:双标志法后检查,先设置自己标志为TRUE后,再检测对方状态标志,若对方标志为TRUE,则进程等待;否则进入临界区。(容易导致饥饿现象)
3)Peterson‘s Algorithm。为了防止两个进程为进入临界区而无限期等待,又设置变量turn,每个进程在先设置自己标志后再设置turn标志。这是,再同时检测另一个进程状态标志和不允许进入标志,这样可以保证当两个进程同时要求进入临界区,只允许一个进程进入临界区。
2、硬件实现
计算机提供了特殊的硬件指令,允许对一个字中的内容进行检测和修正,或者时对两个字的内容进行交换等。通过硬件支持实现临界段问题的低级方法或称为元方法。
1)中断屏蔽方法
当一个进程正在使用处理机执行它的临界区代码时,要防止其他进程再进入其临界区访问,最简单的方法是禁止一切中断的发生,或称为之屏蔽中断、关中断。这种方法限制了处理机交替执行程序的能力,因此执行的效率会明显降低。对于内核来说,但它执行更新变量或列表的几条指令期间关中断是很方便的,但将关中断的权利交给用户则很不明智,若一个进程关中断之后不再断开中断,则系统可能会因此终止。
2)硬件指令方法
TestAndSet指令:原子操作,执行该代码时不允许被中断。其功能是读出指定标志后把该标志设置为真。
Swap指令:该指令的功能是交换两个字(字节)的内容。
对TestAndSet和Swap指令的描述仅仅是功能的实现。并非软件实现定义,事实上,它们是由硬件逻辑直接实现的,不会被中断。
优点:适用于任意数目的进程,不管是单处理机还是多处理机;简单、容易验证其正确性。可以支持进程内有多个临界区,只需为每一个临界区设立一个布尔变量。
缺点:进程等待进入临界区时要耗费处理机时间,不能实现让权等待。从等待进程中随机选择一个进入临界区,有的进程可能一直选不上,从而导致“饥饿”现象。

2.3.3 信号量

信号量机构是一种功能较强的机制,可用来解决互斥与同步问题,它只能被两个标准的原语wait(S)和signal(S)来访问,也可以记为“P操作”和“V操作”。
1、 整型信号量
整型信号量被定义为一个表示资源数目的整型量S,wait和signal操作可描述为

wait(S){
	while(S<=0);
	S=S-1;
}
signal(S){
	S=S+1;
}

wait操作中,只要信号量S<=0,就会不断测试。因此,该机制并未遵循“让权等待”的准则,而是使进程处于“忙等”的状态。
2、记录型信号量
记录型信号量是不存在“忙等”现象的进程同步机制。除了需要一个用于代表资源数目的整型变量value外,再增加一个进程链表L,用于链接所有等待该资源的进程,记录型信号量是由于采用了记录型的数据结构而得名的。
3、利用信号量实现进程同步
4、利用信号量实现进程互斥
只需把临界区置于P(S)和V(S)之间,即可实现两进程对临界资源的互斥访问。
在同步问题中,如果某个行为要用到某种资源,那么在那个行为面前P那种资源以下,如果某个行为会提供某种资源,就在那个行为后面V那种资源一下。
在互斥问题中,P、V操作要紧紧夹着使用互斥资源的那个行为,中间不能有其他冗余代码。
5、利用信号量实现前驱关系
6、分析进程同步和互斥问题的方法步骤
1)关系分析。找到问题中的进程数,并分析它们之间的同步和互斥关系。
2)整理思路。找出解决问题的关键点,并根据做过的题目找出解决的思路。根据进程的操作流程确定P操作、V操作的大致顺序。
3)设置信号量。根据上面两步,设置需要的信号量,确定初值,完善整理。

2.3.4 管程

管程是由一组数据以及定义在这组数据的操作组成的软件模块,这组操作能初始化并改变管程中的数据和同步进程。
2、管程的组成
1)局部于管程的共享数据结构说明。
2)对该数据结构进行操作的一组过程。
3)对局部与管程的共享数据设置初始值的语句。
管程很像一个抽象类
3、管程的基本特性
1)局部于管程的数据只能被局部于管程内的过程所访问。
2)一个进程只有通过调用管程内的过程才能进入管程访问共享数据。
3)每次仅允许一个进程在管程内执行某个内部过程。
由于管程是一个语言成分,所以管程的互斥访问完全由编译程序在编译时自动添加,无需程序员关注,且保证正确。

2.4 死锁

1、死锁的定义
死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。
2、死锁产生的原因
1)系统资源的竞争
只有对不可剥夺资源的竞争才可能产生死锁,对可剥夺资源的竞争是不会引起死锁的。
2)进程推进顺序非法
信号量使用不当也会造成死锁。进程间彼此相互等待对方发来的消息,结果也会使得这些进程间无法继续向前推进。
3)死锁产生的必要条件
死锁产生必须要满足以下四个条件,只要其中任一条件不成立,死锁就不会发生。
互斥条件(在一段时间内某资源仅为一个进程所占有,此时其他进程请求该资源,只能等待)
不可剥夺条件(进程所获得的资源只能自己主动释放,不能被其他进程剥夺)
请求和保持条件(进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放
循环等待条件(存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被链中下一个进程所请求)

2.4.2 死锁的处理策略

为使系统不发生死锁,必须设法破坏产生死锁的四个必要条件之一,或者允许死锁产生,但当死锁发生时能检测出死锁,并有能力实现恢复。
1、预防死锁
设置某些限制条件,破坏死锁的四个必要条件之一或几个,以预防发生死锁。
2、避免死锁
在资源的动态分配过程中,用某种方法防止系统进入不安全状态,从而避免死锁。
3、死锁的检测及解除
预防死锁和避免死锁都是事先预防策略,但预防死锁的限制条件比较严格,实现起来较为简单,但往往导致系统的效率低,资源利用率低;避免死锁的限制条件较宽松,资源分配后需要通过算法来判断是否进入不安全状态,实现起来较为复杂。

2.4.3 死锁预防

1、破坏互斥条件
如果允许资源都能共享使用,则系统不会进入死锁状态。但是有些资源根本不能同时访问。所以,破坏互斥条件而预防死锁的方法不太可行,而且在有的场合应该保护这种互斥性。
2、破坏不剥夺条件
这种策略实现起来比较复杂,释放以获得的资源可能造成前一阶段工作的失效,反复地申请和释放资源会增加系统的开销,降低系统吞吐量。这种方法常用于状态易于保存和恢复的资源,如CPU的寄存器及内存资源,一般不能用于打印机之类的资源。
3、破坏请求和保持条件
采用预先静态分配方法,即进程在运行前一次申请完它所需要的全部资源,在它的资源未满足前,不把它投入运行。一旦投入运行后,这些资源就一直归它所有,也不再提出其他资源请求,这样就可以保证系统不会发生死锁。
缺点:系统资源被严重浪费,其中有些资源可能仅在运行初期或运行快结束时才使用,甚至根本不使用。而且还会导致“饥饿”现象,当由于个别资源长期被其他进程占用时,将至使等待该资源的进程迟迟不能开始运行。
4、破坏循环等待条件
可采用顺序资源分配法。首先给系统中的资源编号,规定每个进程,必须按照编号递增的顺序请求资源,同类资源一次申请完。也就是说,只要进程提出申请分配资源Ri,则该进程在以后的资源申请中,只能申请编号大于Ri的资源。
存在的问题:编号必须相对稳定,这就限制了新类型设备的增加;尽管在为资源编号时已考虑到大多数作业实际使用这些资源的顺序,但也经常会发生作业使用资源的顺序与系统规定顺序不同的情况,造成资源的浪费;此外,这种按规定次序申请资源的方法,也必然会给用户的编程带来麻烦。

2.4.4 死锁避免

死锁避免是在资源动态分配中,防止系统进入不安全状态,以避免发生死锁。这种方法施加的限制条件较弱,可以获得较好的系统性能。
1、系统安全状态
避免死锁的方法中,允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,让进程等待。
所谓安全状态,是指系统能按某种进程推进顺序(P1,P2,…,Pn),为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺序地完成。此时 P1,P2,…,Pn为安全序列。如果系统无法找到一个安全序列,则称系统处于不安全状态。
并非所有的不安全状态都是死锁状态,但当系统进入不安全状态之后,便可能进入死锁状态;反之,只要系统处于安全状态,系统便可避免进入死锁状态。
2、银行家算法
算法思想:把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占有的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。

2.4.5 死锁检测和解除

死锁预防和避免算法,都是在为进程分配资源时施加限制条件或进行检测,若系统为进程分配资源时不采取任何措施,则应该提供死锁检测和解除的手段。
1、资源分配图
2、死锁定理
S为死锁的条件是当且仅当S状态的资源分配图是不可完全简化的,该条件为死锁定理。
3、死锁解除
1)资源剥夺法。挂起某些死锁进程,并抢占它的资源,将这些资源分配给其他的死锁进程。但应防止被挂起的进程长时间得不到资源,而处于资源匮乏的状态。
2)撤销进程法。强制撤销部分、甚至全部死锁的进程并剥夺这些进程的资源。撤销的原则可以按进程优先级和撤销进程代价的高低进行。
3)进程回退法。让一(或多)个进程回退到足以回避死锁的而底部,进程回退时,自愿释放自愿而不是被剥夺。要求系统保持进程的历史信息,设置回退点。

疑难点

1、进程和程序的区别
1)进程是程序及其数据在计算机上的一次运行活动,是一个动态的概念。进程的运行实体是程序,离开了程序的进程是没有存在的意义的。程序是一组有序的指令集合,是一种静态的概念。
2)进程是程序的一次执行过程,它是动态地创建和消亡的,具有一定的生命周期,是暂时存在的;而程序则是一组代码的集合,它是永久存在的,可长期保存。
3)一个进程可以执行一个或几个程序,一个程序也可以构成多个进程。进程可创建进程,而程序不可能形成新的程序。
4)进程与程序的组成不同。进程的组成包括程序、数据和PCB。
2、死锁和饥饿
具有等待队列的信号量的实现可能导致这样的情况:两个或多个进程无限地等待一个事件,而该事件只能由这些等待进程之一来产生。这里的事件是V操作(即释放资源)。当出现这样的状态时,这些进程称为死锁。
与死锁相关的另一个问题是无限期阻塞或饥饿,即进程在信号量内无穷等待的情况。
饥饿与死锁的主要差别:
1)进入“饥饿”状态的进程可以只有一个,而由于循环等待条件而进入死锁状态的进程却必须大于或等于两个。
2)处于“饥饿”状态的进程可以是一个就绪进程,如静态优先权调度算法时的低优先权进程,而处于死锁状态的进程必定是阻塞进程
3、银行家算法的工作原理
主要思想是避免系统进入不安全状态,银行家算法保证系统始终处于安全状态,从而避免死锁现象的发生。
4、进程同步、互斥的区别与联系
5、作业和进程的关系
进程是系统资源的使用者,系统的资源大部分都是以进程为单位分配的。而用户使用计算机是为了实现一串相关的任务,通常把用户要求计算机完成的这一串任务称为作业。
1)批处理系统中作业与进程的关系(进程组织)
一个作业在运行时会动态地转换成一组运行实体——进程族。
2)分时系统中作业与进程的关系
分时系统的用户通过命令语言逐条地与系统应答式地输入命令,提交作业步。每输入一条(或一组)命令,便直接在系统内部对应一个(或若干个)进程。
分时系统的作业就是用户的一次上机交互过程,可以认为终端进程的创建是一个交互作业的开始,登出命令运行结束代表用户交互作业的终止。命令解释程序流程扮演着批处理系统中作业控制语言解释程序的角色,只不过命令解释程序是从用户终端接收命令。
3)交互地提交批作业

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
处理机调度是指操作系统对CPU的分配和调度,以便高效地完成各种任务。在多道程序环境下,由于有多个进程需要占用CPU,因此需要进行处理机调度,以便各个进程都能够得到合理的CPU时间片,并且能够尽早地完成任务。 处理机调度算法主要有以下几种: 1. 先来先服务 (FCFS):按照进程到达的先后顺序进行处理机分配,即谁先到谁先得到CPU的使用权。 2. 短作业优先 (SJF):按照进程的执行时间进行处理机分配,即先处理执行时间最短的进程。 3. 优先级调度 (Priority Scheduling):按照进程的优先级进行处理机分配,即优先级高的进程先执行。 4. 时间片轮转 (Round Robin):将CPU时间片分成多个时间段,每个进程在一个时间段内执行一定时间,然后切换到下一个进程,直到所有进程都执行完毕。 死锁是指在多进程环境下,由于资源竞争而导致的一种进程无限等待的现象。死锁的发生通常由于以下四个条件的同时满足: 1. 互斥条件:一个资源同时只能被一个进程使用。 2. 不可抢占条件:进程在使用一个资源时,不能被其他进程抢占。 3. 占有和等待条件:一个进程在持有一个资源的同时,可以等待其他资源。 4. 循环等待条件:多个进程之间形成一种循环等待资源的关系。 避免死锁的方法主要有以下几种: 1. 破坏互斥条件:允许多个进程同时访问一个资源。 2. 破坏不可抢占条件:允许进程在使用一个资源时被抢占。 3. 破坏占有和等待条件:一个进程在申请资源时,必须释放已经占有的资源。 4. 破坏循环等待条件:对所有资源进行编号,每个进程按照编号顺序申请资源,释放资源时按照相反的顺序释放。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值