Process 为了避免死锁发生,可以使用N个资源运行的处理器的最大数量是多少?

Process 为了避免死锁发生,可以使用N个资源运行的处理器的最大数量是多少?,process,operating-system,deadlock,Process,Operating System,Deadlock,亚马逊采访问题: 问题陈述非常简单。 假设我们有N个资源(所有资源彼此独立),那么可以同时运行的最大进程数是多少,至少使用其中一个资源,这样就不会出现死锁? 下面提供了一个示例,说明使用两个资源的两个进程可能处于死锁状态。 (来源:) 有人请详细回答我。这个问题不完整。只有在系统中同时满足以下所有条件时,才会发生死锁 (核对): 互斥:在一个数据库中必须至少保存一个资源 不可共享模式。任何时候只有一个进程可以使用该资源 给定时间的瞬间 保持并等待或资源保持:一个过程 当前至少拥有一个资源并请求

亚马逊采访问题:

问题陈述非常简单。
假设我们有N个资源(所有资源彼此独立),那么可以同时运行的最大进程数是多少,至少使用其中一个资源,这样就不会出现死锁?
下面提供了一个示例,说明使用两个资源的两个进程可能处于死锁状态。

(来源:)


有人请详细回答我。

这个问题不完整。只有在系统中同时满足以下所有条件时,才会发生死锁 (核对):

  • 互斥:在一个数据库中必须至少保存一个资源 不可共享模式。任何时候只有一个进程可以使用该资源 给定时间的瞬间
  • 保持并等待或资源保持:一个过程 当前至少拥有一个资源并请求其他资源 由其他流程持有的资源
  • 无抢占:资源只能由持有它的进程自愿释放
  • 循环等待:进程必须等待一个 由另一个进程持有,而另一个进程又在等待 释放资源的第一个进程。一般来说,有一套 等待进程,P={P1,P2,…,PN},使得P1正在等待 P2持有的资源,P2正在等待P3持有的资源,并且 以此类推,直到PN等待P1持有的资源
  • 因此,以下是不同的假设和相应的答案:

    案例1:资源是非独占的,或者可以被抢占,或者具有任何其他机制来避免死锁(显而易见的答案)

    然后,可以运行任意数量的处理器。 作为旁注:当然,根据具体情况,您可能希望限制进程的数量以避免/减少

    情况2:之前的条件均不存在

    然后,在没有任何逻辑来避免死锁的情况下,如果希望避免死锁,一次只能运行一个进程。一旦将另一个进程添加到系统中,您就可以得到示例中描述的情况(P1有Ra并想要Rb,P2有Rb并想要Ra)



    PS:我认为这类问题更多的是为了了解你对概念的理解,而不是为了得到准确的答案。

    问题不完整。这个问题没有指定进程完成其执行所需的最大资源数

    让我重新表述一下问题:

    假设我们有N个资源(所有资源都相互独立),那么可以同时运行的最大进程数是多少,每个进程至少使用一个资源和最大M个资源,这样就不会出现死锁


    回答:

    让可用资源的数量=N,一个进程可以同时容纳的最大资源数量=M,进程数量=p

    如果满足以下条件,则系统处于安全模式

    N>=p(M-1)+1

    最大进程数


    p有人能解释一下吗?答案是:N*(N-1)
    Let, illustrate another scenario. the number of available resources is 6 (N=6) and each process uses at most 3 (M=3) resources to finish execution
    Now, we have 6 processes in the system. All possible resources allocations are:
    
        P1  |   P2  |   P3  |   P4  |   P5  |   P6  |   Available   |   Safe    |   Comment 
            |       |       |       |       |       |   resources   |           |           
    --------|-------|-------|-------|-------|-------|---------------|-----------|-----------------------------------------------------------
        1   |   1   |   1   |   1   |   1   |   1   |       0       |   No      |each process requires at least 2 resources to finish
            |       |       |       |       |       |               |           |But no resource is available
        
    Now, we have 5 processes in the system. All possible resources allocations are:
    
        P1  |   P2  |   P3  |   P4  |   P5  |   Available   |   Safe    |   Comment 
            |       |       |       |       |   resources   |           |
    --------|-------|-------|-------|-------|---------------|-----------|-----------------------------------------------------------
        1   |   1   |   1   |   1   |   1   |       1       |   No      |each process requires at least 2 resources to finish
            |       |       |       |       |       |       |           |But only one resource is available
    --------|-------|-------|-------|-------|---------------|-----------|-----------------------------------------------------------
        2   |   1   |   1   |   1   |   1   |       0       |   No      |P1 requires at least 1 resource to finish
            |       |       |       |       |       |       |           |But no resource is available
    
    Now, we have 4 processes in the system. All possible resources allocations are:
    
        P1  |   P2  |   P3  |   P4  |   Available   |   Safe    |   Comment 
            |       |       |       |   resources   |           |
    --------|-------|-------|-------|---------------|-----------|-----------------------------------------------------------
        1   |   1   |   1   |   1   |       2       |   Yes     |
    --------|-------|-------|-------|---------------|-----------|-----------------------------------------------------------
        2   |   1   |   1   |   1   |       1       |   Yes     |P1 requires at least 1 resources to finish
            |       |       |       |               |           |and 1 resource is available. So the system is safe for this allocation.
    --------|-------|-------|-------|---------------|-----------|-----------------------------------------------------------
        2   |   2   |   1   |   1   |       0       |   No      |
    
    Now, we have 3 processes in the system. All possible resources allocations are:
    
        P1  |   P2  |   P3  |   Available   |   Safe    |   Comment 
            |       |       |   resources   |           |
    --------|-------|-------|---------------|-----------|-----------------------------------------------------------
        1   |   1   |   1   |       3       |   Yes     |
        2   |   1   |   1   |       2       |   Yes     |
        2   |   2   |   1   |       1       |   Yes     |
        2   |   2   |   2   |       0       |   No      |
    
    Now, we have 2 processes in the system. All possible resources allocations are:
    
        P1  |   P2  |   Available   |   Safe    |   Comment 
            |       |   resources   |           |
    --------|-------|---------------|-----------|-----------------------------------------------------------
        1   |   1   |       4       |   Yes     |
        2   |   1   |       3       |   Yes     |
        2   |   2   |       2       |   Yes     |
    If the maximum no of processes is 2, the system will be safe whatever the resources allocations are.
    
    So using the given formula above, 
    For, the number of available resources, N = 6 
    And the maximum number of resources required by each process, M = 3
    The maximum number processes, P <= (6-1) / (3-1) = 2.5 = 2 (apx.)