zoukankan      html  css  js  c++  java
  • 操作系统——死锁相关

    操作系统——死锁相关

    1、死锁:在计算机系统中有许多互斥资源(如打印机)或软件资源(如临界区),若两个进程同时使用打印机,或者同时进入临界区必然会出现问题。所谓死锁,是指两个以上的进程互相都要求对方已经占有的资源导致无法继续运行下去的现象。

    2、死锁产生的必要条件:

    (1)互斥条件:即一个资源每次只能被一个进程使用,在操作系统中这是真实存在的情况。

    (2)保持和等待条件:有一个进程已获得了一些资源,但因请求其他资源被阻塞时,对已获得的资源保持不放。

    (3)不剥夺条件:有些系统资源是不可剥夺的,当某个进程已获得这种资源后,系统不能强行收回,只能由进程使用完时自己释放。

    (4)环路等待条件:若干个进程形成环形链,每个都占用对方要申请的下一个资源。

    3、死锁预防:死锁预防是采用某种策略,限制并发进程对资源的请求,破坏死锁产生的4个必要条件之一,使系统在任何时刻都不满足死锁的必要条件。

    (1)预先静态分配法。破坏了“不可剥夺条件”。预先分配所需资源,保证不等待资源。该方法的问题是降低了对资源的请求,降低进程的并发程度;有时可能无法预先知道所需资源。

    (2)资源有序分配法。破坏了“环路条件”。把资源分类按顺序。保证不形成环路。该方法存在的问题是限制进程对资源的请求;由于资源的排序占用系统开销。

    4、死锁避免:避免是指进程在每次申请资源时判断这些操作是否安全,典型算法是“银行家算法”。但这种算法会增加系统的开销。

    5、死锁检测:判断系统是否处于死锁状态,如果是,则执行死锁解除策略。

    6、死锁解除:与死锁检测结合使用,它使用的方式就是剥夺。即将资源强行分配给别的进程。

    更多请参考:http://blog.csdn.net/a_long_/article/details/51222906

  • 相关阅读:
    android 使用AlarmManager定时启动service
    mac 删除文件夹里所有的.svn文件
    Eclipse配置SVN
    OSD锁定怎么解锁?
    如何用Mac远程桌面连接windows
    获取设备识别信息
    类库冲突问题
    如何将Eclipse中的项目迁移到Android Studio中
    python 日历(Calendar)模块
    python datetime处理时间(转)
  • 原文地址:https://www.cnblogs.com/yongheng20/p/5845061.html
Copyright © 2011-2022 走看看