医院网站 功能,怎样做seo网站推广,外贸软件哪个好,青海城乡住房和建设厅网站点个关注#xff0c;必回关 文章目录什么是死锁死锁产生的原因#xff1a;1、系统资源的竞争2、进程运行推进顺序不当引起死锁产生死锁的四个必要条件#xff1a;死锁的避免与预防什么是死锁
死锁是指两个或两个以上的线程在执行过程中#xff0c;由于竞争资源或者由于彼此…点个关注必回关
文章目录什么是死锁死锁产生的原因1、系统资源的竞争2、进程运行推进顺序不当引起死锁产生死锁的四个必要条件死锁的避免与预防什么是死锁
死锁是指两个或两个以上的线程在执行过程中由于竞争资源或者由于彼此通信而造成的一种阻塞的现象若无外力作用它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁这些永远在互相等待的进程称为死锁进程。
例如在某个计算机系统中只有一台打印机和一台输入 设备进程P1正占用输入设备同时又提出使用打印机的请求但此时打印机正被进程P2 所占用而P2在未释放打印机之前又提出请求使用正被P1占用着的输入设备。这样两个进程相互无休止地等待下去均无法继续执行此时两个进程陷入死锁状态。
死锁产生的原因
1、系统资源的竞争
当系统中供多个进程共享的资源如打印机、公用队列的等其数目不足以满足诸进程的需要时会引起诸进程对资源的竞争而产生死锁。
2、进程运行推进顺序不当引起死锁
进程推进顺序合法
当进程P1和P2并发执行时如果按照下述顺序推进P1RequestR1 P1RequestR2 P1: ReleseR1P1: ReleseR2 P2RequestR2 P2RequestR1 P2: ReleseR2P2: ReleseR1这两个进程便可顺利完成这种不会引起进程死锁的推进顺序是合法的。
进程推进顺序非法
若P1保持了资源R1,P2保持了资源R2系统处于不安全状态因为这两个进程再向前推进便可能发生死锁。例如当P1运行到P1RequestR2时将因R2已被P2占用而阻塞当P2运行到P2RequestR1时也将因R1已被P1占用而阻塞于是发生进程死锁。
产生死锁的四个必要条件
● 互斥条件指进程对所分配到的资源进行排它性使用即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源则请求者只能等待直至占有资源的进程用毕释放。
● 请求与保持条件进程已经保持了至少一个资源但又提出了新的资源请求而该资源 已被其他进程占有此时请求进程被阻塞但对自己已获得的资源保持不放。
● 不可剥夺条件进程所获得的资源在未使用完毕之前不能被其他进程强行夺走即只能 由获得该资源的进程自己来释放只能是主动释放)。
● 循环等待条件指在发生死锁时必然存在一个进程——资源的环形链即进程集合{P0P1P2···Pn}中的P0正在等待一个P1占用的资源P1正在等待P2占用的资源……Pn正在等待已被P0占用的资源。
这四个条件是死锁的必要条件只要系统发生死锁这些条件必然成立而只要上述条件之一不满足就不会发生死锁。
死锁的避免与预防
死锁避免的基本思想系统对进程发出每一个系统能够满足的资源申请进行动态检查并根据检查结果决定是否分配资源如果分配后系统可能发生死锁,则不予分配否则予以分配。这是一种保证系统不进入死锁状态的动态策略。
理解了死锁的原因尤其是产生死锁的四个必要条件就可以最大可能地避免、预防和解除死锁。只要打破四个必要条件之一就能有效预防死锁的发生
● 打破互斥条件改造独占性资源为虚拟资源大部分资源已无法改造。
● 打破不可抢占条件当一进程占有一独占性资源后又申请一独占性资源而无法满足则退出原占有的资源。
● 打破占有且申请条件采用资源预先分配策略即进程运行前申请全部资源满足则运行不然就等待这样就不会占有且申请。
● 打破循环等待条件实现资源有序分配策略对所有设备实现分类编号所有进程只能采用按序号递增的形式申请资源。
死锁避免和死锁预防的区别
死锁预防是设法至少破坏产生死锁的四个必要条件之一严格的防止死锁的出现而死锁避免则不那么严格的限制产生死锁的必要条件的存在因为即使死锁的必要条件存在也不一定发生死锁。死锁避免是在系统运行过程中注意避免死锁的最终发生。