操作系统中死锁的基本概念和解决方法
96 浏览量
更新于2024-06-29
收藏 2.36MB PPTX 举报
操作系统死锁
操作系统中,死锁是指一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程。死锁的产生原因有多种,包括资源数量有限、锁和信号量错误使用等。
从死锁的定义中可以得到几个推论:
1.参与死锁的所有进程都在等待资源。
2.参与死锁的进程是当前系统中所有进程的子集。
死锁的产生的原因包括:
1. 资源数量有限:在操作系统中,资源使用的一般模式是:进程提出申请,操作系统进行相应的分配,如果进程所需要的资源不能满足的话,这个进程就进入阻塞或者等待状态,如果可以满足的话进程就直接使用资源,当进程使用完毕之后就释放资源。由于资源的使用方式就是申请-分配-使用-释放,因此有些进程得不到资源就会处理阻塞等待状态,资源有限的话就有可能出现死锁。
2. 锁和信号量错误使用:锁和信号量的使用可能是开发人员编程导致的。
死锁的必要条件包括:
1. 互斥使用(资源独占):一个资源每次只能给一个进程使用占有且等待进程在申请新的资源的同时保持对原有(请求和保持,部分分配)资源的占有产生死锁的必要条件。
2. 部分分配:资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放,不可剥夺。
3. 循环等待:存在一个进程等待队列{P1, P2,…,Pn},其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路。
资源分布图(RAG)是用有向图描述系统资源和进程的状态,从图的角度为解决死锁提供理论和依据。定义一个二元组G=(V,E)有两个集合组成。其中V是结点的集合,分为P(进程),R(资源)两部分,P={P1,P2,…,Pn},R={R1,R2,…,Rm}。E是有向边的集合,其元素为有序二元组,可以是进程节点指向资源节点的有向边后者资源节点指向进程节点的有序边。
资源分配图图画法说明:
系统由若干类资源构成,一类资源称为一个资源类;每个资源类中包含若干个同种资源,称为资源实例。使用用方框表示资源类;用方框中的黑圆点表示资源实例;用圆圈中添加资源实例的数量表示资源的可用性。
死锁是操作系统中的一种严重问题,可能导致系统崩溃。因此,理解死锁的定义、产生原因和必要条件对解决死锁问题非常重要。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-06-22 上传
2022-11-14 上传
2022-06-22 上传
2022-11-15 上传
2022-04-16 上传
zzzzl333
- 粉丝: 783
- 资源: 7万+
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建