zoukankan      html  css  js  c++  java
  • 死锁

    死锁英语:Deadlock),又译为死锁,计算机科学名词。当两个以上的运算单元,双方都在等待对方停止运行,以获取系统资源,但是没有一方提前退出时,这种状况,就称为死锁。在多任务操作系统中,操作系统为了协调不同进程,能否获取系统资源时,为了让系统运作,就必须要解决这个问题。

    这里指的是进程死锁,是个计算机技术名词。它是操作系统或软件运行的一种状态:在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其它进程占用时,就形成了死锁。有个变种叫活锁

    如图:P1、P2两个process都需要资源才能继续运行。P1拥有资源R2、还需要额外资源R1才能运行;P2拥有资源R1、还需要额外资源R2才能运行,两边都在互相等待而没有任何一个可运行。

    目录

    简介

    例如,一个进程p1占用了显示器,同时又必须使用打印机,而打印机被进程p2占用,p2又必须使用显示器,这样就形成了死锁。

    死锁的预防

    如果系统中只有一个进程,当然不会产生死锁。如果每个进程仅需求一种系统资源,也不会产生死锁。不过这只是理想状态,在现实中是可遇不可求的。

    死锁的四个条件是:

    禁止抢占:no preemption

    持有和等待:hold and wait

    互斥:mutual exclusion

    循环等待:circular waiting

    预防死锁就是至少破坏这四个条件其中一项,即破坏“禁止抢占”、破坏“持有等待”、破坏“资源互斥”和破坏“循环等待”。

    死锁的避免

    我们也可以尝试回避死锁。因为在理论上,死锁总是可能产生的,所以操作系统尝试监视所有进程,使其没有死锁。

    死锁的消除

    最简单的消除死锁的办法是重启系统。更好的办法是终止一个进程的运行。

    同样也可以把一个或多个进程回滚到先前的某个状态。如果一个进程被多次回滚,迟迟不能占用必需的系统资源,可能会导致进程饥饿

    来源:Wikipedia

  • 相关阅读:
    jsp页面input输入框限制输入内容
    sql计算两个日期之间的相差天数
    sql根据一个字段日期加减7天存入另一字段中
    ajax请求捕获异常
    跨网段和局域网的SQL SERVER发布订阅配置图解和常见问题
    一次得到多个数据集
    SQL Server 2008语句大全完整版
    关于已开票已收款未发货的账务处理
    高格-一些特点话题【7】
    高格-塑料管业中厂内工单,满足随时换料的处理【6】
  • 原文地址:https://www.cnblogs.com/vacation/p/5024477.html
Copyright © 2011-2022 走看看