大数跨境
0
0

死锁的防止

死锁的防止 知识代码AI
2025-03-18
0

死锁产生的四个必要条件

互斥条件: 进程应互斥使用资源,任一时刻一个资源仅为一个进程独占;
占有和等待条件: 一个进程请求资源得不到满足而等待时,不释放已占有的资源;
不剥夺条件: 任一进程不能从另一进程那里抢夺资源;
循环等待条件: 存在一个循环等待链,每一个进程分别等待它前一个进程所持有的资源;

死锁的防止

破坏四个必要条件之一,死锁就可防止;
破坏第一个条件,把独占型资源改造成共享性资源,使资源可同时访问而不是互斥使用。这是一个简单的办法,但对许多资源往往是不能做到的;
采用剥夺式调度方法可以破坏第三个条件,但剥夺式调度方法目前只适用于对主存资源和处理器资源的分配,而不适用于所有资源;

静态分配(预分配)

所谓静态分配是指一个进程必须在执行前就申请它所要的全部资源,并且直到它所要的资源都得到满足之后才开始执行;
所有并发执行的进程要求的资源总和不超过系统拥有的资源数;
采用静态分配后,进程在执行中不再申请资源,因而不会出现占有了某些资源再等待另一些资源的情况,即破坏了第二个条件;

层次分配

这种分配策略将阻止第四个条件的出现;
在层次分配策略下,资源被分成多个层次;
一个进程得到某一层的一个资源后,它只能再申请在较高层的资源;
当一个进程要释放某层的一个资源时,必须先释放所占用的较高层的资源;
当一个进程获得了某一层的一个资源后,它想再申请该层中的另一个资源,那么,必须先释放该层中的已占资源;


【声明】内容源于网络
0
0
知识代码AI
技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
内容 366
粉丝 0
知识代码AI 技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
总阅读83
粉丝0
内容366