个性化阅读
专注于IT技术分析

系统死锁简介

每个进程都需要一些资源来完成其执行。但是, 资源是按顺序授予的。

  1. 该线程需要一些资源。
  2. 如果资源可用, 则OS会授予该资源, 否则让进程等待。
  3. 该线程使用它并在完成时释放。

死锁是指每个计算机进程都在等待分配给另一个进程的资源的情况。在这种情况下, 由于所需的资源由其他正在等待释放其他资源的进程所保留, 因此没有任何进程被执行。

让我们假设存在三个线程P1, P2和P3。存在三个不同的资源R1, R2和R3。 R1分配给P1, R2分配给P2, R3分配给P3。

一段时间后, P1要求R2正在使用R1。 P1暂停执行, 因为没有R2就无法完成。 P2还要求P3正在使用R3。 P2也停止执行, 因为没有R3就无法继续执行。 P3还要求由P1使用的R1, 因此P3也停止执行。

在这种情况下, 三个线程之间将形成一个循环。没有任何进展, 他们都在等待。由于所有进程都被阻止, 因此计算机无响应。

死锁

饥饿和僵局之间的区别

Sr. Deadlock Starvation
1 死锁是没有进程被阻塞并且没有进程继续的情况 饥饿是低优先级进程被阻塞而高优先级进程继续进行的情况。
2 死锁是无限的等待。 饥饿是漫长的等待, 但不是无限的。
3 每个死锁总是饥饿。 每个饥饿都不必陷入僵局。
4 所请求的资源被其他进程阻止。 所请求的资源被更高优先级的进程连续使用。
5 当相互排斥, 保持和等待时, 不会同时发生抢占和循环等待, 就会发生死锁。 它是由于不受控制的优先级和资源管理而发生的。

死锁的必要条件

互斥

资源只能以互斥的方式共享。这意味着, 如果两个进程不能同时使用同一资源。

保持并等待

进程在等待某些资源的同时保留另一资源。

无抢占

计划好的线程将一直执行到完成为止。调度程序无法同时调度其他进程。

循环等待

所有进程都必须以循环方式等待资源, 以便最后一个进程正在等待第一个进程所持有的资源。

赞(0)
未经允许不得转载:srcmini » 系统死锁简介

评论 抢沙发

评论前必须登录!