Operating system 考虑到进程和资源的数量,如何确定死锁是否可能

Operating system 考虑到进程和资源的数量,如何确定死锁是否可能,operating-system,deadlock,Operating System,Deadlock,考虑一个有三个进程和三个相同资源的系统。每个进程最多需要两个资源。在这个系统中可能出现死锁吗 我的理解是,如果四个条件同时存在,则可能出现僵局: 互斥、等待和等待、无先发制人和循环等待 如果每个进程分配一个资源,那么所有三个资源都将被保留。没有可用的资源 如何证明死锁是不可能的,如何计算应提供多少资源来释放系统死锁?在这种情况下,技巧是评估循环等待条件,看看它是否有效。3个过程和3个相同的资源。让我们给他们每人一个0剩余资源,但没有完成任何流程需求(因为每个流程需要2个),这意味着每个流程都在等

考虑一个有三个进程和三个相同资源的系统。每个进程最多需要两个资源。在这个系统中可能出现死锁吗

我的理解是,如果四个条件同时存在,则可能出现僵局: 互斥、等待和等待、无先发制人和循环等待

如果每个进程分配一个资源,那么所有三个资源都将被保留。没有可用的资源


如何证明死锁是不可能的,如何计算应提供多少资源来释放系统死锁?

在这种情况下,技巧是评估循环等待条件,看看它是否有效。3个过程和3个相同的资源。让我们给他们每人一个0剩余资源,但没有完成任何流程需求(因为每个流程需要2个),这意味着每个流程都在等待其他流程释放资源。满足循环等待条件。因此,给定的场景可能导致死锁

假设我们有n个进程和m个相同的资源,最大需求为d1、d2、d3……dn。

如果m>(d1-1)+(d2-1)+(d3-1)…(dn-1)。,则其无死锁


否则会导致死锁

请考虑一个系统,其中m个相同类型的资源由n个共享 过程。流程只能在同一时间请求和释放资源 时间当且仅当所有最大需求之和 例如: 一个系统有3个进程,共享4个资源。如果每个过程最多需要2个单元,则:

要使系统无死锁,请为每个进程分配一个小于其最大需要的进程。这样做之后,如果我们只剩下一个或多个资源,那么就不会出现死锁

为每个流程分配1个资源(最大需要-1)

分配的资源=1+1+1=3

为了避免死锁,我们还剩下1个资源

所以死锁永远不会发生