操作系统 死锁是什么

操作系统 死锁是什么

每个进程都需要一些资源来完成其执行。然而,资源按顺序分配。

  1. 进程请求某个资源。
  2. 如果资源可用,则操作系统分配资源;否则,让进程等待。
  3. 进程使用资源,并在完成后释放。

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

假设有三个进程P1、P2和P3。有三个不同的资源R1、R2和R3。R1被分配给P1,R2被分配给P2,R3被分配给P3。

经过一段时间,P1要求正在被P2使用的R1。P1停止执行,因为没有R2不能完成。P2也要求正在被P3使用的R3。P2也停止执行,因为没有R3不能继续。P3也要求正在被P1使用的R1,因此P3也停止执行。

在这种情况下,三个进程之间形成了一个循环。没有进程在前进,它们都在等待。计算机变得无响应,因为所有进程都被阻塞。

操作系统 死锁是什么

饥饿与死锁的区别

序号 死锁 饥饿
1 死锁是指没有进程被阻塞且没有进程继续执行的情况。 饥饿是指低优先级进程被阻塞而高优先级进程继续执行的情况。
2 死锁是无限等待。 饥饿是长时间等待但不是无限的。
3 每个死锁总是饥饿。 不是每个饥饿都是死锁。
4 请求的资源被其他进程阻塞。 请求的资源不断被高优先级进程使用。
5 当互斥、持续等待、无抢占和循环等待同时发生时,会发生死锁。 它是由于优先级和资源管理无法控制而发生。

死锁的必要条件

  1. 互斥

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

  1. 持有并等待

一个进程在同时持有另一个资源的情况下等待一些资源。

  1. 无抢占

一旦调度的进程将执行直到完成。在此期间,调度程序不能调度其他进程。

  1. 循环等待

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程