zoukankan      html  css  js  c++  java
  • 死锁定义,产生原因

    在多道程序系统中,由于多个程序并发执行,改善了系统资源的利用率并提高了系统的处理能力。然后多个进程的并发执行也带来了新的问题-----死锁(定义)

    所谓死锁是指多个进程因竞争资源而造成的一种僵局(相互等待),若无外力作用,这些进程都将无法向前推进。

    通过生活中的实例来看死锁:

      在一条有一座桥,桥面很窄,只能容纳一辆汽车通行。如果有两辆汽车分别从桥的左右两端驶上该桥,则会出现上面所述的情况:此时,左边的汽车找有了桥面左边的一段,要想要过桥还需要等待右边的汽车让出桥面右边的一段,右边的汽车占有了桥面的右边的一段。想要过桥就需要等待左边的汽车让出桥面左边的一段。此时,若左右两边的汽车都只能向前行驶,则两辆汽车都无法通过该桥。

      在计算机中也有相似的情况:某计算机系统中只有一台打印机和一台输入设备,进程p1整占用输入设备,同时又提出使用打印机的请求,但此时打印机正被进程p2所占用,而p2未释放打印机前又提出请求使用被p1占用的输入设备。这样两个进程相互无止休地等待下去,均无法继续之心,此时两个进程陷入死锁状态。

    死锁产生的原因

      1.系统资源的竞争

        通常系统中拥有的不可剥夺资源,其数量不足以满足多个进程运行的需要,使得进程在运行过程中,会因争夺资源而陷入僵局,如磁带机,打印机等。只有对不可剥夺资源的竞争才会可能产生死锁,对可剥夺的竞争是不会引起死锁的。

      2.进程推进顺序非法

        进程云心过程中,请求和释放资源的顺序不当,也同样会导致死锁。例如,并发进程p1,p2分别保持了资源r1,r2,而进程p1申请资源r2,进程p2申请资源r1时,两者都会因为所需要资源被占用而阻塞。

        信号量使用不当也会造成死锁。进程间彼此相互等待对方发来的消息,结果也会使得这些进程间无法继续向前推进。例如进程A等待进程B发送消息,进程B等待进程A发送消息,可以看出进程A和进程B不是因为竞争同一资源,而是在等待对方的资源导致死锁。

      3死锁产生的必要条件

        互斥条件 一段时间内某资源仅为一个进程所有

        不剥夺条件进程的资源在未使用完之前,不能被其他的进程所剥夺

        请求和保持条件  进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已经获得的资源保持不释放

        循环等待条件 存在一种循环等待链,链中每一个进程已经获得的资源同时被链中下一个进程请求。 

  • 相关阅读:
    设置全屏的方法
    The connection to adb is down,and a server error has occured.解决办法---------------------亲测有效
    android 案例二 登录界面
    javaweb项目编译错误
    Ubuntu 14.04 tomcat配置
    Ubuntu 14.03 安装jdk
    Ubuntu 14.03 安装mysql
    Git 版本管理使用说明。
    getColor问题
    WebView 调试
  • 原文地址:https://www.cnblogs.com/littleswan/p/11368888.html
Copyright © 2011-2022 走看看