计算机操作系统——死锁(产生的必要条件与处理死锁的四个关卡)

计算机操作系统——死锁

前言:死锁:指多个进程因竞争共享资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进。如果死锁发生,会浪费大量的系统资源,甚至会导致系统崩溃。

关于死锁的结论:

  1. 参与死锁的进程最少是两个
  2. 参与死锁的所有进程都在等待资源
  3. 参与死锁的进程是当前系统中所有进程的子集

一、死锁产生的必要条件

在这里插入图片描述
1. 互斥条件
进程对所分配到的资源进行排它性使用,即在一段时间内,某资源只能被一个进程所占用。如果此时还有其他进程请求该资源,则请求进程只能等待,直至占有该资源的进程用完并释放资源。

2. 请求和保持条件
进程已经保持了至少一个资源,但又提出新的资源请求,而该进程已经被其他进程占有,此时进行请求的进程将被阻塞,进入阻塞队列,但是对自己已经获得的资源保持不放。

3. 不可抢占条件
进程已获得的资源在未使用之前不能被抢占,只能在进程使用完时由自己释放。

4. 循环等待条件
在发生死锁时,必然存在一个进程–资源的循环链,即进程集合{P0,P1,…,Pn}中的P0正在等待一个P1占用的资源,P1正在等待P2占用的资源,…,Pn正在等待已被P0占用的资源。


二、处理死锁的方法

1. 预防死锁

(1)破坏“请求和保持”条件
(2)破坏“不可抢占”条件
可剥夺资源:即当某进程新的资源未满足,释放已占有的资源
(3)破坏“循环等待”条件
资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反。


2. 避免死锁

利用银行家算法避免死锁。Dijkstra的银行家算法,原本是为银行系统设计的,以确保银行在发放现金贷款时,不会发生不能满足所有客户需要的情况。
为实现银行家算法,每一个新进程在进系统时,它必须申明在运行过程中,可能需要每种资源类型的最大单元数目,其数目不应超过系统所拥有的资源总量。当进程请求一组资源时,系统必须首先确定是否有足够的资源分配给该进程。如果有,再进一步运算将资源分配给该进程后,是否会使系统处于不安全状态。如果不会,才将资源分配给该进程。
在这里插入图片描述

在这里插入图片描述

银行家算法中的数据结构:
(1)可利用资源向量Available
代表可利用的资源数目。
(2)最大需求矩阵Max
代表各进程对各类资源的最大需求。
(3)分配矩阵Allocation
代表各进程当前已分配的各类资源数目。
(4)需求矩阵Need 代表各进程尚需要的各类资源数目。最大需求矩阵减去分配矩阵(Need[i,j] = Max[i,j] - Allocation[i,j])

银行家算法的过程:
在这里插入图片描述
银行家算法例题:
在这里插入图片描述
在这里插入图片描述


3. 检测死锁

为了能对系统中是否发生了死锁进行检测,在系统中必须:保存有关资源的请求和分配信息;提供一种算法,它利用这些信息来检测系统是否已经进入死锁状态。
在这里插入图片描述
安全性算法:
设置两个向量
a.工作向量Work:提供给进程继续运行所需的各类资源数目。它含有m个元素,在安全算法开始时Work = Available
b.Finash:它表示系统是否有足够的资源分配给进程,使之运行完成。开始时,先令Finish[i] = false;当有足够资源分配给进程时,再令Finish[i] = true;


4. 解除死锁

当发现有进程死锁后,便应立即把它从死锁状态中解脱出来,常用的方法:
(1)剥夺(抢占)资源法:从其它进程剥夺足够数量的资源给死锁进程,以解除死锁状态。
(2)撤销(终止)进程法:可以直接撤销死锁进程或撤销代价最小的进程,直至有足够的资源可用,死锁状态消除为止;所谓的代价是指优先级、运行代价、进程的重要性和价值等。
(3)进程回退法:需要设置还原点,让一个或多个死锁进程回退到足够避免死锁的地步。
在这里插入图片描述

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

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

相关文章

【剑指offer】面试题36:二叉搜索树与双向链表(java)

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 代码: package offer; class BineryTreeNode { int val; BineryTreeNode left null; BineryTreeNo…

科学难题的形成

来源:肖建华科学网博客传统上,把科学理论分为两类:唯象性科学理论和哲学性科学理论。大致而言,工程科学是以具体现象类来划分学科,此类学科的理论一般称为唯象性理论。而把各学科的共性特征抽象出来作为研究对象而建立…

冯·诺依曼计算机特点

冯诺依曼计算机特点 冯诺依曼,20世纪最重要的数学家之一。在现代计算机、博弈论、核武器和生化武器等众多领域内有杰出建树的最伟大的科学全才之一,被后人称为“计算机之父”和“博弈论之父”。 一、冯诺依曼计算机结构(以运算器为中心&…

计算机操作系统——经典进程的同步问题

计算机操作系统——信号量机制与经典进程的同步问题 信号量机制 随着发展,信号量从整型信号量经记录型信号量,进而发展为“信号量集”机制。 一般来说,信号量的值与相应的资源的使用情况有关。 信号量的值仅由P、V操作改变。 信号量的初值…

【剑指offer】面试题39:数组中出现次数超过一半的数字

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 代码: class Solution { public int majorityElement(in…

2020年度全球人工智能十大事件

该文章内容转载自战略前沿技术当前,新一代人工智能技术在全球蓬勃兴起,迅猛发展,与大数据、区块链、5G等新技术相互融合、相互因应,为经济社会发展尤其是数字经济发展注入新动能,正在深刻改变社会生产生活方式。与此同…

一头扎进sql之多表操作

一、多表查询时NULL值处理 要求返回比"allen"工资低的所有员工select a.ename,a.conn from emp a where a.conn < (select b.conn from emp b where b.ename allen) ; 正确的写法应该是select a.ename,a.conn from emp a where coalesce(a.conn,0) < (se…

当贝叶斯,奥卡姆和香农一起来定义机器学习

来源&#xff1a;数学中国【导读】当贝叶斯、奥卡姆和香农一起给机器学习下定义&#xff0c;将统计学、信息理论和自然哲学的一些核心概念结合起来&#xff0c;我们便会会发现&#xff0c;可以对监督机器学习的基本限制和目标进行深刻而简洁的描述。令人有点惊讶的是&#xff0…

eclipse中下载spring-tool-suite插件遇到的问题

eclipse中下载spring-tool-suite插件遇到的问题 我的eclipse的版本4.7.0&#xff0c;接下来以下载我的eclipse的对应STS版本3.8.4为例&#xff0c;讲一下遇到的问题。不同版本的eclipse对应不同的spring-tool-suite&#xff0c;具体的版本对应可以去其他的博客中寻找&#xff…

python - 内置函数

enumerate 将一个可迭代/可迭代对象变成enumerate类型 利用for循环可以对enumerate类型获得索引和值 1 lis (星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期七) 2 ret enumerate(lis, 1) # enumerate 可以接受第二个参数&#xff0c; 用于指定索引起始值 3 4 fo…

【剑指offer】面试题40:最小的k个数(java)

输入整数数组 arr &#xff0c;找出其中最小的 k 个数。例如&#xff0c;输入4、5、1、6、2、7、3、8这8个数字&#xff0c;则最小的4个数字是1、2、3、4。 示例 1&#xff1a; 输入&#xff1a;arr [3,2,1], k 2 输出&#xff1a;[1,2] 或者 [2,1] 示例 2&#xff1a; 输入…

MicroPython (一)点亮我的Led

工具 &#xff1a; puttyF429Discovery 开发板Notepad注意&#xff1a;不知道为什么 其他的终端工具有问题&#xff0c;推荐 putty 基本没有发现问题 putty 实时调试 使用putty 打开USB 虚拟串口&#xff0c;我们打开可以使用help()方法寻求帮助输入help()如下所示 help() Welc…

2021年,AI有潜力改善农业的十种路径

来源&#xff1a;Forbes作者&#xff1a;Louis Columbus编译&#xff1a;科技行者普华永道指出&#xff0c;基于物联网的农业&#xff08;IoTAg&#xff09;监控已经成为联网智能农业领域发展最快的技术领域&#xff0c;市场总额到2025年预计将增长至45亿美元。根据BI Intellig…

计算机组成原理——总线系统总结

计算机组成原理——总线系统总结 一、总线的概念&#xff1a; 总线是构成计算机系统放入互联机构&#xff0c;是多个系统功能部件之间进行数据传送的公共通路。借助于总线连接&#xff0c;计算机在各个系统功能部件之间实现地址、数据和控制信息的交换&#xff0c;并在争用资…

【剑指offer】面试题42:连续子数组的最大和(java)

输入一个整型数组&#xff0c;数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例1: 输入: nums [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大&#xff0c;为 6。 提示…

科学家打造全套人工神经系统 帮助瘫痪病人重新控制身体

Photo: Nathaniel Welch来源&#xff1a; IEEE电气电子工程师Motion Restored: Luke Tynan, who was paralyzed in 2017 by a spinal cord injury, demonstrates the wearable system that enables him to control his arm and hand. Sensors on the arm register his intentio…

存储器容量扩展——位扩展、字扩展

存储器&#xff08;二&#xff09;——存储容量扩展 前言&#xff1a;&#xff08;基本概念&#xff09; 存储空间&#xff1a;CPU决定存储器&#xff1a;用户需求决定&#xff08;4G&#xff0c;8G&#xff09;&#xff08;8G的存储器1各芯片能否完成用户需求&#xff1f;如…

海明码构造及纠错

计算机组成原理——海明码的构造及纠错 海明码&#xff08;又称为汉明码&#xff09;是具有一位纠错能力的编码。 信息位&#xff1a;发送用户端想要发送的信息序列&#xff0c;彼此独立&#xff0c;互不相关&#xff0c;最终交给接收端。 检测位&#xff1a;为了使信息码元产…

【剑指offer】面试题43:1~n整数中1出现的次数

输入一个整数 n &#xff0c;求1&#xff5e;n这n个整数的十进制表示中1出现的次数。 例如&#xff0c;输入12&#xff0c;1&#xff5e;12这些整数中包含1 的数字有1、10、11和12&#xff0c;1一共出现了5次。 示例 1&#xff1a; 输入&#xff1a;n 12 输出&#xff1a;5 …

潭州Java中级班(day_05)

1.掌握数字的使用2.掌握数字的声明以及内存分配3.通过数字的简单范例加深对数字的操作原理4.掌握多维数组的定义和使用 数组 数组是一组相关变量的集合&#xff0c;一个数组实际上就是一连串的变量一维数组 二位数组 int i[100] 表示一个伪代码&#xff0c;只是代表含义 一维数…