操作系统:死锁与饥饿

目录

死锁概念

饥饿与饿死概念

饥饿和死锁对比

死锁类型

死锁条件(Coffman条件)

死锁恢复方法

死锁避免

安全状态与安全进程序列:

银行家算法: 

死锁检测时机(了解):

死锁检测

死锁案例

过河问题


死锁概念

定义:一组进程中的每一个进程,均无限期地等待此组进程中某个其他进程占有的资源,因而永远无法得到的资源,这种现象称为进程死锁。

由定义可得:参与死琐的进程至少有二个; 每个参与死锁的进程均等待资源。

饥饿与饿死概念

饥饿:没有时间上界的等待。排队等待、忙式等待。

饿死:等待时间超过极限,进程即使完成也不再具有实际意义时

饥饿和死锁对比

1、死锁进程处于等待状态,饿死进程已经死了。

2、死锁(一定发生了循环等待)可以检测,饿死不可以。

3、死锁进程等待永远不会被释放的资源,饿死进程等待会被释放但却不会分配给自己的资源,其等待时限没有上限。

4、死锁一定涉及多个进程,而饥饿或被饿死的进程可能只有一个。

死锁类型

1.  竞争资源引起的死锁:

  例如:P1需要4台打印机,P2需要两台打印机。P1申请了3台,P2申请了一台,造成死锁。

 2、进程通讯引起的死锁

 3、其它原因引起的死锁

死锁条件(Coffman条件)

1、资源独占(mutual exclusion):资源被进程占用

2、不可抢占(non preemption):不可强制抢夺被进程占用的资源

3、保持申请(hold-while-applying):申请新资源并不释放它占用的资源

4、循环等待(circular wait):存在一个进程循环等待序列,P1等P2,P2等P3,P3等P1的循环等待。

死锁恢复方法

1. 系统重新启动:  简单,代价大

2.终止进程(process termination):终止环路上占有资源的进程并收回它们占有的资源。

3.剥夺资源(resource preemption):剥夺进程所占用的全部或部分资源。

4.进程回退(rollback):回退到以前没有发生死锁的状态。

死锁避免

死锁避免是保证系统不会进入死锁状态的动态策略。

安全状态与安全进程序列:

安全状态:所有进程可以按照某一次序安全运行,说明系统处于安全状态。

安全进程序列: 系统出于安全状态,可以按照某一次序安全运行,这个次序叫安全进程序列

银行家算法: 

数据结构:

m:资源类总数   n:进程总数
int Available:[m];   //系统可用资源
int Claim[n,m];      //进程最大需求
int Allocation[n,m]; //当前分配
int Need[n,m];       //尚需资源
int Request[n,m];    //当前请求资源
int Work[m];         //记录可用资源 
int Finish[n];       //记录进程是否可以执行完

安全性检测算法 

1、初始化Work数组=Available数组,Finish = {false}。

2、循环查找Need[i]<=Work[i] 且 Finish[i]=false,找到转3,未找到转4。

3、Work+=Allocation[i](相当于释放资源),Finish[i]=true,记录i到安全序列。

4、对于所有i,存在Finish[i]=true,则系统处于安全状态,从而得到安全序列。

资源分配算法

1、判断请求资源量是否小于需求资源量,若没有则返回错误。

2、判断请求资源量是否小于可用资源量,若没有则等待。

3、分配资源,可用资源减少,进程占用资源增加,需求资源减少。

4、运行安全性检测算法,检测系统是否安全,不安全则归还分配资源,并转入等待。

5、系统安全则确认资源分配。

死锁检测时机(了解):

考虑因素:死锁发生频度,死锁影响的进程。

1、等待时检测

2、定时检测

3、资源(eg. CPU)利用率下降时检测

死锁检测

1、初始化Work=Available,Finish={false}。

2、查找满足条件Request[i]<=Work,Finish[i]=false的i,转到3,没找到转到4。

3、Work+=Allocation[i](相当于释放资源),Finish[i]=true,继续转2。

4、对于所有i,存在Finish[i]=true,则系统未死锁,反之系统死锁。

 死锁案例

过河问题

        这里要求找到S最大人数,不会死锁情况下,桥上可以容纳的最大人数。其次每一个S0-S8代表石块,P(Sn) 代表石块占用,V(Sn)代表石块释放。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/62647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RPO: Read-only Prompt Optimization for Vision-Language Few-shot Learning

文章汇总 想解决的问题对CoOp的改进CoCoOp尽管提升了性能,但却增加了方差(模型的准确率波动性较大)。 模型的框架一眼看去,跟maple很像(maple跟这篇文章都是2023年发表的),但maple的视觉提示是由文本提示经过全连接转换而来的,而这里是文本提示和视觉提示是独立的。另外m…

『MySQL 实战 45 讲』24 - MySQL是怎么保证主备一致的?

MySQL是怎么保证主备一致的&#xff1f; MySQL 主备的基本原理 基本的主备切换流程 状态 1&#xff1a;客户端的读写都直接访问节点 A&#xff0c;而节点 B 是 A 的备库状态 2&#xff1a;切换时&#xff0c;读写访问的都是节点 B&#xff0c;而节点 A 是 B 的备库注意&…

自荐一部IT方案架构师回忆录

作者本人毕业于一个不知名大专院校&#xff0c;所读专业计算机科学技术。2009年开始IT职业生涯&#xff0c;至今工作15年。擅长TSQL/Shell/linux等技术&#xff0c;曾经就职于超万人大型集团、国内顶级云厂商、央国企公司。参与过运营商大数据平台、大型智慧城市ICT、云计算、人…

python数据分析之爬虫基础:selenium详细讲解

目录 1、selenium介绍 2、selenium的作用&#xff1a; 3、配置浏览器驱动环境及selenium安装 4、selenium基本语法 4.1、selenium元素的定位 4.2、selenium元素的信息 4.3、selenium元素的交互 5、Phantomjs介绍 6、chrome handless模式 1、selenium介绍 &#xff08;1…

【数据结构——查找】顺序查找(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 测试说明 我的通关代码: 测试结果&#xff1a; 任务描述 本关任务&#xff1a;实现顺序查找的算法。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.根据输入数据建立顺序表&#xff0c;2.顺序表的输出&#xff0c;…

create-react-app react19 搭建项目报错

报错截图 此时运行会报错&#xff1a; 解决方法&#xff1a; 1.根据提示安装依赖法 执行npm i web-vitals然后重新允许 2.删除文件法 在index.js中删除对报错文件的引入&#xff0c;删除报错文件

Scratch 消灭字母小游戏

背景 最近尝试一边自学Scratch&#xff0c;一边尝试教给小孩&#xff0c;看他打字时在键盘上乱打一气&#xff0c;想起来自己小时候玩过的学习机打字母游戏&#xff0c;就想给他下载一个。结果网上看到的代码&#xff0c;要么质量太差&#xff08;有26个字母就要写 26 个判断&…

python调用matlab函数(内置 + 自定义) —— 安装matlab.engine

文章目录 一、简介二、安装matlab.engine2.1、基于 CMD 安装2.2、基于 MATLAB 安装&#xff08;不建议&#xff09; 三、python调用matlab函数&#xff08;内置 自定义&#xff09; 一、简介 matlab.engine&#xff08;MATLAB Engine API for Python&#xff09;&#xff1a;…

pytroch环境安装-pycharm

环境介绍 安装pycharm 官网下载即可&#xff0c;我这里已经安装&#xff0c;就不演示了 安装anaconda 【官网链接】点击下载 注意这一步选择just me 这一步全部勾上 打开 anaconda Prompt 输入conda create -n pytorch python3.8 命令解释&#xff1a;创建一个叫pytorch&…

Photoshop提示错误弹窗dll缺失是什么原因?要怎么解决?

Photoshop提示错误弹窗“DLL缺失”&#xff1a;原因分析与解决方案 在创意设计与图像处理领域&#xff0c;Photoshop无疑是众多专业人士和爱好者的首选工具。然而&#xff0c;在使用Photoshop的过程中&#xff0c;有时会遇到一些令人头疼的问题&#xff0c;比如突然弹出的错误…

上海亚商投顾:创业板指震荡调整 机器人概念股再度爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日冲高回落&#xff0c;深成指、创业板指盘中跌超1%&#xff0c;尾盘跌幅有所收窄。机器人概念股逆势爆…

(Linux)CentOS7离线安装MinIO(超详细)

目录 前言1. 下载2. 安装VMware3. 安装CentOS4. 离线安装MinIO4.1. ssh工具连接CentOS4.2. 上传MinIO离线包4.2.1 创建data目录4.2.2 上传RPM包到data目录4.2.3 安装RPM包4.2.4 创建MinIO数据目录4.2.5 配置 MinIO 服务4.2.6 启动 MinIO4.2.7 开放端口 4.2.8 访问MinIO 创作不易…

HarmonyOS-高级(四)

文章目录 应用开发安全应用DFX能力介绍HiLog使用指导HiAppEvent &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;HarmonyOS专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月11日11点18分 应用开发安全 应用隐私保护 隐私声明弹窗的作…

论文阅读:Statistical Comparisons of Classifiers over Multiple Data Sets

论文地址&#xff1a;Statistical Comparisons of Classifiers over Multiple Data Sets (acm.org) 前面在机器学习之Friedman检验-CSDN博客 中提到了Friedman检验&#xff0c;这里将对这个方法的论文进行详细的阅读&#xff0c;以了解其原理。 摘要 尽管用于在单个数据集上比…

练9:进制转换

欢迎大家订阅【蓝桥杯Python每日一练】 专栏&#xff0c;开启你的 Python数据结构与算法 学习之旅&#xff01; 文章目录 1 进制转换2 例题分析 1 进制转换 ①任意制转为十进制 【示例】 ②十进制转为任意制 【法一】 【法二】 2 例题分析 题目地址&#xff1a;https:/…

C语言:指针详解续

一、字符指针变量 我们知道有种指针类型为字符指针(char*)。 #include <stdio.h> int main() {char ch w;char* pch &ch;printf("%c\n", *pch);return 0; } 其实它还有一种使用方式。 #include <stdio.h> int main() {char* pstr "hello…

HarmonyOS-高级(一)

文章目录 一次开发、多端部署自由流转 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;HarmonyOS专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月09日12点19分 一次开发、多端部署 布局能力 自适应布局 拉伸能力均分能力占比能力缩放…

【嵌入式系统】第4章 嵌入式最小系统,供电电路,时钟电路,复位电路,程序下载电路

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…

期权懂|交易个股期权需要注意哪些风险?

期权小懂每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 交易个股期权需要注意哪些风险&#xff1f; 一、交易个股期权需要注意合约到期风险&#xff1a; 需关注到期日&#xff0c;及时平仓或行权&#xff0c;避免合约作废。二、交易个…

MVC配置文件配置及位置

配置文件位置 默认位置 WEB-INF目录下&#xff1a;-servlet.xml 指定位置 在web.xml中配置 DispatcherServlet中的contextConfigLocation属性可以指定配置文件位置 确保配置文件存在于类路径&#xff08;Resources&#xff09;下 web.xml <?xml version"1.0" …