【操作系统】——死锁

基础知识

一个进程需要向一个进程传递数据,后面的进程必须等到前面的进程到达才能继续运行,这是进程间的一种次序关系。称为同步

在引入线程的系统中,进程内的多个线程可以并发或并行运行

遇到问题:对资源不加限制地分配可能导致进程之间由于竞争资源而相互等待,以至于程序无法运行,这种局面称为死锁

临界资源(Critical Resource,CR):一次仅允许一个进程使用(必须互斥使用)的资源。如独占型硬件资源,可以由多进程访问的变量、表格、队列、栈、文件等软件资源。
临界段(Critical Section,CS):是指各进程必须互斥执行的那种程序段,该程序段实施对临界资源的操作。

哲学家聚餐问题

消息传递原理

① 共享存储(Shared Memory)方法。要通信的进程之间存在一片可直接访问的共享空间,通过对这片共享空间进行写/读操作实现它们之间的信息交换,如一个进程往这片共享空间写数据,而另一个进程从共享空间读取数据

② 消息传递(Message Passing)方法。消息传递的主要思想是:系统提供发送消息Send()与接收消息Receive()两个原语,进程间通过使用这两个原语进行数据交换

死锁的定义

死锁是指进程处于等待状态且等待的事件永远都不会发生

死锁必须满足4个必要条件:

条件1:互斥。

在出现死锁的系统中,必须存在需要互斥使用的资源。计算机系统中有存储器、CPU、外部设备、共享程序等各种资源。有些资源可以共享使用,有的必须独占使用,即互斥使用。若系统中所有资源均可共享使用,则进程不会处于等待资源的状态,因而不会出现死锁。那么可以肯定,如果系统出现了死锁,则必然存在需要互斥使用的资源。


条件2:占有等待。

在出现死锁的系统中,一定有已分配到了某些资源且在等待另外资源的进程。如果这个条件不满足,则所有等待资源的进程都不会占有任何资源,而资源的拥有者也不会处在等待资源的状态中。因此拥有资源的进程迟早会释放出它们所拥有的资源,从而使等待这些资源的进程结束等待状态。故条件2也是死锁必须满足的条件。


条件3:非剥夺。

在出现死锁的系统中,一定有不可剥夺使用的资源。不可剥夺是指在进程未主动释放资源之前不可夺走其已占资源。若资源都可剥夺,进程就不会进入僵持状态,也就不会出现死锁。


条件4:循环等待。

在出现死锁的系统中,一定存在一个处于等待状态的进程集合,表示为{P0,P1,…,Pn},其中Pi等待的资源被Pi+1占有(i=0,1,…,n-1),Pn等待的资源被P0占有,

循环等待只是死锁的必要条件

设计无死锁的系统通常采用下述两种途径:


① 死锁防止(Deadlock Prevention)

通过在应用编程时或资源分配管理设计时破坏死锁存在的必要条件来防止死锁发生。


② 死锁避免(Deadlock Avoidance)

在进行资源分配管理时,判断如果满足这次分配资源后是否仍存在一条确保系统不会进入死锁状态的路径,如果没有这样的路径,即使现有资源能满足申请,也拒绝分配。

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

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

相关文章

前端开发攻略---拖动归类,将元素拖拽到相应位置

1、演示 2、代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevice-…

2024年Q1季度平板电视行业线上市场销售数据分析

Q1季度平板电视线上市场表现不如预期。 根据鲸参谋数据显示&#xff0c;2024年1月至3月线上电商平台&#xff08;京东天猫淘宝&#xff09;平板电视累计销量约360万件&#xff0c;环比下降12%&#xff0c;同比下降30%&#xff1b;累计销售额约99亿元&#xff0c;环比下降28%&a…

学习STM32第十七天

备份域详解 一、简介 在参考手册的电源控制章节&#xff0c;提到了备份域&#xff0c;BKPR是在RTC外设中用到&#xff0c;包含20个备份数据寄存器&#xff08;80字节&#xff09;&#xff0c;备份域包括4KB的备份SRAM&#xff0c;以32位、16位或8位模式寻址&#xff0c;在VBAT…

C++初阶学习第二弹——C++入门(下)

C入门&#xff08;上&#xff09;&#xff1a;C初阶学习第一弹——C入门&#xff08;上&#xff09;-CSDN博客 目录 一、引用 1.1 引用的实质 1.2 引用的用法 二、函数重载 三、内敛函数 四、auto关键字 五、总结 前言&#xff1a; 在上面一章我们已经讲解了C的一些基本…

Vue2进阶之Vue2高级用法

Vue2高级用法 mixin示例一示例二 plugin插件自定义指令vue-element-admin slot插槽filter过滤器 mixin 示例一 App.vue <template><div id"app"></div> </template><script> const mixin2{created(){console.log("mixin creat…

【Java网络编程】TCP通信(Socket 与 ServerSocket)和UDP通信的三种数据传输方式

目录 1、TCP通信 1.1、Socket 和 ServerSocket 1.3、TCP通信示例 2、UDP的三种通信&#xff08;数据传输&#xff09;方式 1、TCP通信 TCP通信协议是一种可靠的网络协议&#xff0c;它在通信的两端各建立一个Socket对象 通信之前要保证连接已经建立&#xff08;注意TCP是一…

【Interconnection Networks 互连网络】Torus 网络拓扑

1. Torus 网络拓扑2. Torus 网络拓扑结构References 1. Torus 网络拓扑 Torus 和 Mesh 网络拓扑&#xff0c;又可以称为 k-ary n-cubes&#xff0c;在规则的 n 维网格中包裹着 N k^n 个节点&#xff0c;每个维度都有 k 个节点&#xff0c;并且最近邻居之间有通道。k-ary n-c…

YOLOv9有效改进专栏汇总|未来更新卷积、主干、检测头注意力机制、特征融合方式等创新![2024/4/21]

​ 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 专栏介绍 YOLOv9作为最新的YOLO系列模型&#xff0c;对于做目标检测的同学是必不可少的。本专栏将针对2024年最新推出的YOLOv9检测模型&#xff0…

《HCIP-openEuler实验指导手册》1.3Apache动态功能模块加载卸载练习

1.3.1 配置思路 mod_status 模块可以帮助管理员通过web界面监控Apache运行状态&#xff0c;通过LoadModule指令加载该模块&#xff0c;再配置相关权限&#xff0c;并开启ExtendedStatus后&#xff0c;即可使用该模块。 1.3.2 配置步骤 检查mod_status模块状态&#xff08;使…

net模块

建立TCP的链接 1 发送消息的服务 2 接收消息 2 建立http的链接让浏览器进行访问 import net from netconst html <h1>TCP</h1>const respinseHeaders [HTTP/1.1 200 OK,Content-Type:text/html,Content-Length: html.length,\r\n,html]const http net.create…

RK3568 学习笔记 : u-boot 通过 tftp 网络更新 u-boot自身

前言 开发板型号&#xff1a; 【正点原子】 的 RK3568 开发板 AtomPi-CA1 使用 虚拟机 ubuntu 20.04 收到单独 编译 RK3568 u-boot 使用 rockchip Linux 内核的设备树 【替换】 u-boot 下的 rk3568 开发板设备树文件&#xff0c;解决 u-boot 下千兆网卡设备能识别但是无法 Pi…

Spring(下)

接上篇&#xff0c;从第八个问题讲起 八.Spring工厂创建复杂对象 1.什么是复杂对象 简单对象就是可以直接new出来的&#xff0c;也就是直接调用构造方法创建 所以复杂对象就是不能直接通过调用构造方法创建。就比如JDBC中的Connection 2.三种方法 &#xff08;1&#xff…

【华为 ICT HCIA eNSP 习题汇总】——题目集18

1、SSH默认工作使用的TCP端口号是&#xff08;&#xff09;。 A、20 B、21 C、22 D、23 考点&#xff1a;①传输层 ②应用层 解析&#xff1a;&#xff08;C&#xff09; SSH为建立在应用层和传输层上的安全协议&#xff0c;是对TCP/IP协议的传输层以上的SSH会话流程进行加密的…

必应搜索广告与谷歌搜索广告对比那个更好?

搜索引擎广告作为企业获取潜在客户的重要渠道之一&#xff0c;其效果直接关系到营销策略的成功与否。两大搜索引擎巨头——谷歌&#xff08;Google&#xff09;和必应&#xff08;Bing&#xff09;各自提供了广告平台&#xff0c;即谷歌广告&#xff08;Google Ads&#xff09;…

【Web】2022DASCTF X SU 三月春季挑战赛 题解(全)

目录 ezpop calc upgdstore ezpop 瞪眼看链子 fin#__destruct -> what#__toString -> fin.run() -> crow#__invoke -> fin#__call -> mix.get_flag() exp <?php class crow {public $v1;public $v2;}class fin {public $f1; }class what {public $a; }…

力扣hot100(python解析)

文章目录 13. 合并区间14. 轮转数组 13. 合并区间 合并区间 数组 排序 思路&#xff1a; 代码&#xff1a; class Solution:def merge(self, intervals):result []if len(intervals) 0:return result # 区间集合为空直接返回intervals.sort() # 默认按照区间的左边界进…

z3求解器脚本(CTF-reverse必备)

CTF-reverse中有一类题目是通过约束方程求解变量的值&#xff0c;然后转化为对应的ASCII码&#xff0c;最终获得flag&#xff0c;约束方程以及要求解的未知数往往非常多&#xff0c;因此手算十分不现实&#xff0c;借助python中的z3模块可以很快完成求解&#xff01; 下面是某道…

开始Java之旅

1.Java语言 java是一门优秀的程序设计语言&#xff0c;并且是一种半编译型&#xff0c;半解释型语言。 Java 语言源于 1991 年 4 月&#xff0c;Sun 公司 James Gosling博士 领导的绿色计划(Green Project) 开始启动&#xff0c;此计划最初的目标是开发一种能够在各种消费性电…

【分治算法】Hanoi塔问题Python实现

文章目录 [toc]问题描述Python实现 个人主页&#xff1a;丷从心 系列专栏&#xff1a;Python基础 学习指南&#xff1a;Python学习指南 问题描述 设 a a a、 b b b、 c c c是三个塔座&#xff0c;开始时&#xff0c;在塔座 a a a上有一叠共 n n n个圆盘&#xff0c;这些圆盘…

最新免费 ChatGPT、GPTs、AI换脸(Suno-AI音乐生成大模型)

&#x1f525;博客主页&#xff1a;只恨天高 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ ChatGPT3.5、GPT4.0、GPTs、AI绘画相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容…