系统进程死锁产生的原因 【百科全说】-凯发k8官方旗舰厅

腾讯视频/爱奇艺/优酷/外卖 充值4折起

1.有限资源的竞争引起进程死锁

当系统中为多个进程所共享的资源不能同?悸?闼?堑男枨笫?引起它们对资源的竞争而产生死锁。在通常情况下,系统中的资源分为可剥夺、非剥夺和临时性资源,不同类型的资源在发生死锁时的处理方式不同。

(1)可剥夺资源如cpu和主存等,在系统中优先权高的进程可剥夺优先权低的进程对这些资源的占用。

(2)非剥夺资源如打印机、读卡机和磁带机等是属于?妓承蛑馗词褂玫淖试础u饫嘧试吹奶氐闶牵?毕低嘲涯匙试捶峙涓?辰?毯螅?荒茉偾啃惺栈兀?荒茉诮?逃猛旰笞远?头拧m?所示是多个进程因争夺非剥夺资源产生死锁的典型例子。具体地说,如果有一组进程p1,p2,...,pn,其中p1,p2,...,pn分?e占有资源r1,r2,...,rn,p1同时又申请资源r2,p2同时又申请资源r3,…,pn-1同时又申请rn,pn占有资源rn同时再申请资源r1。此时,这组进程都因资源得不到满足而进人了互相等待的阻塞状态,永远也不可能前进并到达终点,这时就说系统中出现了死锁现象,p1,p2,...,pn这组进程处于死锁状态。



(3)临时性资源是指由进程产生、使用后无用的资源。如进程通信时使用的信件,如果对信件的发送和接收不加限制的话,则可能引起死锁。如图2所示,s1、s2和s3是临时性资源,分别由进程p1、p2和p3产生,进程之间的通信情况是:p1要求从p3接收信件,p3要求从p2接收信件,p2要求从p1接收信件。而实际的操作过程是:进程p1等待进程p3的信件s3来到后再向进程p2发送信件s1,p2又要等待p1的信件s1来到后再向p3发送信件s2,而p3也要等待p2的信件s2来到后才能发出信件s3。在这种情况下就形成了循环等待,发生死锁。



由此可见,多个进程竞争使用资源,而系统提供的资源数不能完全满足进程的需求,所以资源不足是引起死锁的主要原因。但需要注意的是,并不是多个进程要求使用多个资源就一定会产生死锁,上例还表明,进程在运行中对资源要求在时间上的冲突也是产生死锁的一个原因。

2.进程推进的顺序不当引起死锁

由于进程的调度是独立的,因此它们对资源的请求和释放操作也存在多种序列,其中有些序列是不安全的,如上面提到的对临时性资源的占用情况;而有些序列是安全的,例如进程p1、p2都需要资源r1、r2,如果两个进程的推进顺序是,进程p1占有资源r1,申请r2时,进程p2还未占有r2,这样就不会发生死锁。这说明死锁是一种与时间有关的错误,它和各进程推进的速度以及对资源清求的顺序有关。

05/20 21:51
如果我们的电脑有多个程序在同时进行,肯定会出现竞争得到一定数据资源的情况,而此时资源如果不够用便会进入等待的状态。果所申请的资源被其他等待进程占有,那么该等待进程有可能永远处于等待状态而无法改变该状态,这便是所谓的系统进程死锁。那么,有什么办法能让系统进程不死锁吗? 其实,想要系统不死锁的根本办法便是要将产生死锁的4个必要条件消失,下面一起来分析下该如何破坏这些条件吧。 破坏互斥条件 破坏互斥条件即允许多个进程同时访问资源。由于多数资源的必须互斥访问这一固有特性不能改变,因此,死锁的预防通过破坏
01/06 21:10
预防死锁的根本办法就是要使死锁产生的4个必要条件之一不存在。下面来分析一下破坏这些条件的可能性。 破坏互斥条件 破坏互斥条件即允许多个进程同时访问资源。由于多数资源的必须互斥访问这一固有特性不能改变,因此,死锁的预防通过破坏这个必要条件实现在很多场合是行不通的。例如,打印机资源必须互斥使用,否则几个进程同时使用,每个进程各打印一行,这种输出信息的方式显然是不能被用户接受的。 破坏占有和等待条件 采用资源静态分配法可破坏这一条件,该方法是指在进程运行前,一次性地_请分配它运行所需的全部资源。若系统
07/20 01:36
预防死锁的根本办法就是要使死锁产生的4个必要条件之一不存在。下面来分析一下破坏这些条件的可能性。 破坏互斥条件 破坏互斥条件即允许多个进程同时访问资源。由于多数资源的必须互斥访问这一固有特性不能改变,因此,死锁的预防通过破坏这个必要条件实现在很多场合是行不通的。例如,打印机资源必须互斥使用,否则几个进程同时使用,每个进程各打印一行,这种输出信息的方式显然是不能被用户接受的。 破坏占有和等待条件 采用资源静态分配法可破坏这一条件,该方法是指在进程运行前,一次性地_请分配它运行所需的全部资源。若系统
01/01 10:29
预防死锁的根本办法就是要使死锁产生的4个必要条件之一不存在。下面来分析一下破坏这些条件的可能性。 破坏互斥条件 破坏互斥条件即允许多个进程同时访问资源。由于多数资源的必须互斥访问这一固有特性不能改变,因此,死锁的预防通过破坏这个必要条件实现在很多场合是行不通的。例如,打印机资源必须互斥使用,否则几个进程同时使用,每个进程各打印一行,这种输出信息的方式显然是不能被用户接受的。 破坏占有和等待条件 采用资源静态分配法可破坏这一条件,该方法是指在进程运行前,一次性地_请分配它运行所需的全部资源。若系统
01/01 20:17
预防死锁的根本办法就是要使死锁产生的4个必要条件之一不存在。下面来分析一下破坏这些条件的可能性。 破坏互斥条件 破坏互斥条件即允许多个进程同时访问资源。由于多数资源的必须互斥访问这一固有特性不能改变,因此,死锁的预防通过破坏这个必要条件实现在很多场合是行不通的。例如,打印机资源必须互斥使用,否则几个进程同时使用,每个进程各打印一行,这种输出信息的方式显然是不能被用户接受的。 破坏占有和等待条件 采用资源静态分配法可破坏这一条件,该方法是指在进程运行前,一次性地_请分配它运行所需的全部资源。若系统
10/11 01:17
microsoft ole db provider for sql server 错误 '80004005' 事务(进程 id)与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品。请重新运行该事务。 原因是你的数据库在并发插入,删除,更新同一个记录的时候,要锁一下,同时被并发了,所以就lock住了 结果的方法是,从程序设计上解决并发查询的问题 比如对同一个记录的操作都是临时的,缓存的,后面排队自动执行
12/31 15:02
如果电脑出现电脑cpu使用率忽高忽低不稳定的情况,出现这种故障该怎么解决?小编就教大家电脑上cpu使用率不稳定忽高忽低怎么办吧? 首先我们打开任务管理器,然后切换到cpu行列,对占用cpu的出程序逐一排查,查看哪个cpu程序占用的cpu忽高忽低的情况。找到占用cpu不稳定的进程将其结束掉(不是系统进程的前提下),如果发现时系统进程不能结束的话,那就系统的问题了。 系统的问题包括驱动安装不正常,或者系统被病毒木马入侵的情况,还有一种情况就是杀毒软件对电脑的监控占用大量的cpu导致不稳定的情况。 解
10/28 01:04
经常使用电脑的朋友一定对windows 任务管理器很熟悉,任务管理器的作用对很多电脑高手来说是非常重要的,通过任务管理器我们可以查看到当前电脑上正在运行哪些程序,可以查看cpu的使用情况等如下图: 任务管理器的应用程序 以及可以结束关闭程序,可以发现是否有程序在运行,也可以当程序无响应时结束无响应的程序,关于如何结束无响应的电脑程序请参考:浅谈引起电脑程序无响应的几种原因和解决办法 尽管在任务管理器的--应用程序里--可以看到当前运行的程序,但还有不少的隐藏运行系统程序或病毒在应用程序里是看不到
07/16 10:18
u盘出现大故障时,很多用户都会选择对u盘进行量产操作,但是量产之后却发生了一件奇怪的现象:u盘显示量产成功,却无法启动电脑,这是怎么回事呢? u盘量产后却启动不了的原因分析: 1、u盘量产成功却不能启动首先要求电脑本身支持usb启动,然后是你量产时选择的iso必须要支持usb启动。 2、usb光驱启动和ide光驱启动是不一样的。这就造成了不少人的困惑:我在虚拟机上测试iso启动明明是正常的啊,为什么u盘量产成功却不能启动呢。那是因为在虚拟机中人们都习惯把iso放入ide光驱中测试
网站地图