死锁是什么(打印机资源属于可顺序重复使用型资源)

作者:  更新 :2023-02-19

最佳答案

死锁是指两个或两个以上过程在执行过程中因竞争资源或相互通信而造成的堵塞。如果没有外力,他们将无法推动它。此时称系统处于死锁状态或系统形成死锁,这种永远在相互等待的过程称为死锁过程。

死锁是什么(打印机资源属于可顺序重复使用型资源)

造成标准

虽然死锁可能发生在运行过程中,但死锁的生产也应具备一定的标准,死锁的生产需要具备以下四个必要条件。

1)互斥标准:指过程中分配的资源的独家应用,即一段时间内只有一个过程占用一个资源。如果此时还有其他需要资源的流程,请求者只能等待,直到资源占用的过程用完释放。

2)要求和维护标准:指过程已经维护了至少一个资源,但提出了新的资源要求,资源已被其他过程占据,然后要求过程被堵塞,但没有保持其他资源。

3)不带走标准:指过程中获得的资源,在使用前不能带走,使用后只能自行释放。

4)环路等候标准:所指产生死锁时,必须有一个过程-资源环链,即过程结合{P0、P1、P2、Pn}里的 P0 等待一个 P1 占用的资源;P1 正在等待 P2 占用的资源,......Pn 正在等待已被 P0 占用的资源。

形成原因

竞争资源导致过程死锁

当复印机、公共序列等系统中多个过程共享的资源数量不能满足各个过程的需要时,就会导致各个过程对资源的竞争而死锁。

可剥夺资源和资源

系统中的资源可以分为两种,一种是可拆卸的资源,这意味着在获得这种资源后,资源可以被其他过程或系统拆卸。例如,优先权强的过程可以带走优先权低过程的处理器。例如,内存区域可以通过存储管理过程将一个过程从一个存储区域转移到另一个存储区域,即带走过程原始存储区域,甚至将一个过程从内存转移到外部存储区域,可见,CPU 而主存属于可夺走性资源。另一种资源是不可剥夺的资源。当系统将这种资源分配到某个过程中时,它不能被迫恢复,只能在过程结束后独立释放,如磁带机、复印机等。

竞争不能剥夺资源

设备中经常配备的不可剥夺的资源,因为它们的总数不能满足所有过程运行的必要性,这将使这些资源在运行过程中陷入困境。例如,系统中只有一台复印机 R1 还有一台磁带机 R2,能够过程 P1 和 P2 分享。假设 PI 已经占用了复印机 R1,P2 已经占用了磁带机 R2,若 P2 再次规定复印机 R1,P2 将堵塞;P1 如果需要磁带机,P1 都将堵塞。因此,在 P1 和 P2 中间会有一个困境,两个过程都在等待对方清空他们需要的资源,但他们不能继续推进,因为他们不能继续获得他们需要的资源,然后他们不能清空他们所拥有的资源,甚至进入死锁。

临时资源竞争

上述复印机资源属于可重复使用资源,称为永久资源。还有一种所谓的临时资源,是指由一个过程引起的无用资源,在短期内应用于另一个过程,因此也被称为消耗性资源,如硬件中断、信号、信息、缓冲区信息等,也可能导致死锁。比如,SI,S2,S3 是暂时性资源,过程 P1 造成信息 S1,又要求从 P3 接受信息 S3;过程 P3 造成信息 S3,并要求从过程中进行 P2 处接受信息 S2;过程 P2 造成信息 S2,又要求从 P1 处处接受产生的信息 S1。如按以下顺序进行信息通信:

P1: ···Relese(S1);Request(S3); ···

P2: ···Relese(S2);Request(S1); ···

P3: ···Relese(S3);Request(S2); ···

死锁不可能发生。但如果改为以下操作顺序:

P1: ···Request(S3);Relese(S1);···

P2: ···Request(S1);Relese(S2); ···

P3: ···Request(S2);Relese(S3); ···

可能会产生死锁。

2.过程推动顺序不当导致死锁

由于工艺在运行中具有异步性特征,这可能使工艺在运行中具有异步性特征 P1 和 P2 两个过程按以下两个顺序向前推进。

1) 这个过程促进了合法的顺序

当过程 P1 和 P2 并发执行时,如按以下顺序推动:P1:P1:Request(R1); P1:Request(R2); P1: Relese(R1);P1: Relese(R2); P2:Request(R2); P2:Request(R1); P2: Relese(R2);P2: Relese(R1);这两个过程可以顺利完成,这种不会导致过程死锁的推进顺序是合法的。

2) 这个过程促进了非法的秩序

若 P1 保持着资源 R1,P2 保持着资源 R2,系统处于不安全状态,因为这两个过程再向前推进,就有可能发生死锁。比如,当 P1 运作到 P1:Request(R2)时,将因 R2 已被 P2 占有和堵塞;当。当 P2 运作到 P2:Request(R1)时,都会有原因 R1 已被 P1 占有而堵塞,因此产生过程死锁。

防止

了解死锁的原因,特别是造成死锁的四个必要条件,可以最大限度地预防、预防和消除死锁。只有摆脱四个必要条件之一,才能有效防止死锁的产生:摆脱互斥标准:将独家资源转化为虚拟资源,大部分资源无法转化。摆脱不能占用的标准:当一个过程占用一个独占资源,申请一个独占资源而不能满足时,原来占用的资源将被撤回。摆脱占用和申请资格:选择资源提前分配对策,即在过程运行前申请所有资源,达到运行,否则等待,不占用和申请。摆脱循环等待标准:完成资源有序分配对策,完成所有设备的分类序列号,所有流程只能根据编号增长申请资源。

因此,在系统设计、过程调度等方面,要注意如何不建立这四个必要条件,如何确定资源的有效分配算法,防止过程永久占用系统资源。此外,还要避免过程在等待条件下占用资源。在设备运行过程中,每个系统都能满足资源申请的要求,并根据检验结果决定是否分配资源。如果系统在分配后可能被锁定,则不会分配,否则将被分配。因此,要合理规划资源分配。

以下方法可用于防止重装死锁:

①允许目地节点向目地端系统提交不完整的报文;

②不能详细重新安装的报文将被检测出来,并要求推送报文的源系统再次传输;

③为每个节点配置一个储备缓存空间,用于存储不完整的报文。

①、②这两种方法不能满意地处理重新安装的死锁,因为它使得终端系统中的协议更加复杂。在一般设计中,传输层应对端系统透明,即端系统不应考虑报纸拆卸、安装等问题。③虽然方法不涉及终端系统,但增加了每个节点的成本。

解决方案

死锁出现在系统中后,需要及时检测死锁的产生,并制定适当的消除死锁的措施。

死锁防止。

这是一种更简单、更直观的预防方法。该方法是通过设置一些限制来破坏导致死锁的四个必要条件中的一个或几个来防止死锁的产生。防止死锁是一种容易完成的方法,已被广泛使用。但由于限制通常过于严格,系统资源利用率和系统吞吐量可能会降低。

死锁防止。

系统过程中传输的每个系统都能满足资源申请的动态检查要求,并根据检查结果决定是否分配资源;如果系统在分配后可能会死锁,则不会分配,否则将分配。这是一种动态对策,以确保系统不进入死锁。

检测和消除死锁。

首先检查:该方法不需要事先采取任何约束性对策,也不需要检查系统是否已进入无缓冲区。该方法允许系统在运行过程中产生死锁。但是,死锁可以通过系统设置的检测中心及时检测到,并准确定义与死锁相关的过程和资源。检测方法包括及时检测、低效检测、等候检测等。

然后消除死锁:采取适当的对策,从系统中清除死锁。

这是一种与检查死锁相匹配的对策。当检测到系统中的死锁时,过程必须从死锁中解脱出来。常见的实施方法是取消或悬挂一些过程,以便于回收一些资源,然后将这些资源分配到被阻塞的过程中,使其处于就绪状态,以便再次运行。死锁的检测和消除对策可能会使系统获得更好的资源利用率和货运量,但完成起来也是最困难的。

- END -

查看更多知识百科