导致进程不死的系统进程死锁的原因是什么
如果我们的计算机同时运行多个程序,就会对某些数据资源进行竞争。此时,如果资源不够,它们将进入等待状态,由水果请求的资源被其他等待进程占用,等待过程可能一直处于等待状态而不改变状态,这就是所谓的系统进程死锁,那么,有没有什么方法可以使系统进程不死呢
事实上,锁定系统的基本方法是消除死锁的4个必要条件。其次,我们应该分析如何破坏这些条件。
互斥条件的破坏
互斥条件的破坏允许多个进程同时访问资源,因为大多数资源的固有特性必须是互斥的,所以不能改变。因此,死锁的预防在很多情况下是不可行的,如破坏这种必要条件,例如打印机资源必须互相排斥,否则将同时使用多个进程,每个进程将打印一行,输出信息的方式显然不被用户接受。
占有和等待条件的破坏
这种情况可以通过静态资源分配方法的损伤,这种方法是指经营过程中,一次性_请把操作所需的所有资源。如果系统有足够的资源分配给一个进程,它将分配其所需的资源,在一次的过程,所以没有资源的请求将操作过程中提出的,所以等待的条件是不成立的。如果有一个资源需求不能满足的时候,分配,该过程所需的其他资源没有分配给进程的第一,以免过程占用资源在等待期间,并摧毁了入住条件,以避免发生死锁。
该方法简单、易于实现,但由于各占所需资源的过程中,利用很短的时间内的资源被长时间占用,充分利用这将严重影响系统资源,降低了资源的利用率,同时也影响了所有资源不要延误手术的过程。
消灭非剥夺状态
剥夺式控制方法可以破坏条件,方法是把一把一些资源由于工艺的新要求,目前资源得不到满足,它必须先暂时释放所有资源都保持(可剥夺式),然后等待,然后提出系统的毛巾请它也可以防止僵局。这种方法较难实现,它将保护过程中自动放弃资源和随后的重新恢复现场花费很多。该方法只适用于处理器和内存资源,不适用于其他资源。这种方法不适用于W。
破坏循环等待条件
资源序列的分配方法使用会破坏条件。这种方法的基本思想是:把系统中所有资源划分为多个层次,一个过程,得到一个层的资源,它只能_请一个更高层次的资源;当一个进程在一层释放资源,必须先释放更高层次的资源的占有;当一个进程获得一层资源,它想重新申请在该层的另一个资源,你必须先释放在层中的资源的占有。或者,过程的顺序释放资源是资源的相反的顺序进行。这样可以防止循环等的发生,这样就不会发生死锁的亲。这个问题要特别注意使用这种方法对资源的水平排列。正常情况下,通常用在不同的进程资源设置在一个较低的水平,重要的和相对稀缺的资源被安排在一个较高的水平,从而最大限度地提高资源的利用率。这种方法在资源利用率和系统的吞吐量与以前的方法相比有明显的提高。但也存在一些缺陷。
(1)低水平的资源必须在要求资源提前分配的前提下,在申请过程中为低水平的资源而不使用临时性的,因闲置而产生的废物。
(2)各种设备的资源水平一旦设定就不能随意改变,这就限制了新设备的增加。
(3)每一个资源的层次都是按照资源的使用顺序进行的,在资源利用的过程中,资源可以有效地利用,否则资源的浪费仍然存在。
如果出现死锁,进程将永远无法完成,系统资源被阻塞,其他工作开始执行。因此,让系统进程不再出现死锁是如此重要,它需要引起我们的注意。