zoukankan      html  css  js  c++  java
  • 操作系统-死锁问题

    进程死锁的原因可归结为两点:竞争资源、进程间推进顺序非法。

    可能发生死锁:

    1.设系统中由六个并发的进程,共同竞争的R1类资源有68个,为使系统有可能会发生死锁,每个进程需要R1类资源最少为(  )。

    A.14  B.12  C.69  D.13

    可能会发生死锁,即系统按照某种极端的分配(每个进程都刚好缺少一个资源)发生死锁。

    设每个进程需要的资源最少为X。

    6 * (X - 1) >= 68

    简单的理解下:有可能发生死锁:最极端的情况是每个进程都刚好缺少一个该类型资源(X - 1),如果进程拥有的该类型资源再多一个,那么整个进程就可以运行完。

    ————————————————————————————————————————————————————————

    一定不会发生死锁:2.设系统中共同竞争的R1类资源有74个,每个进程需要R1类资源最多为15个,为使系统一定不会发生死锁,并发进程最多为(  )个。

    A.7  B.4  C.5  D.6

    系统一定不会发生死锁,即无论资源怎么分配,资源都可以至少满足一个进程 

    设并发进程为X个。

    X * (15 - 1) + 1 <= 74

    简单的理解下:每个进程需要资源最多为15个,即为15个的时候就可以运行完该程序,如果每个程序都为14(15 - 1)那么每个进程都不可以运行,

    如果在此基础上在给1个,那么这些进程一定可以按某种顺序完成。因此,只要系统最少拥有每个进程缺一个资源的基础上加上一个资源即可运行完整个程序。

    基本公式:计算死锁时,假设有m个共享资源,n个进程,每个进程所需的最大资源数为w,那么m>n*(w-1)时,才会不死锁。如果每个进程所需的资源数不同,则先平均分配,只要有一个进程满足了资源要求,就不会死锁。

  • 相关阅读:
    【LeetCode-栈】栈排序
    【LeetCode-数组】旋转数组
    【LeetCode-数组】两个数组的交集 II
    【LeetCode-树】二叉树的层次遍历 II
    【LeetCode-字符串】Fizz Buzz
    【LeetCode-数组】数组的相对排序
    解决Oracle表中数据乱码的问题
    docker搭建mysql 用户名密码忘记了怎么办
    java中如何将string 转化成long
    http三次握手四次挥手
  • 原文地址:https://www.cnblogs.com/Angfe/p/14164307.html
Copyright © 2011-2022 走看看