操作系统【OS】死锁

news2024/11/20 13:28:25

常考点

系统资源不足不是系统产生死锁的原因,资源不足只会对进程造成“饥饿”【详见王道操作系统书P153第4题】

A:资源不足和资源分配不足还是有区别的啦~

 

 

死锁是什么?

  • 死锁是多个进程因为竞争资源而造成的一种互相等待

 

为什么会出现死锁?

系统资源的竞争【空间上】

  • 系统中不可剥夺资源不足以满足多个进程
  • 只有对不可剥夺资源(如磁带机,打印机)的竞争才可能产生死锁

进程推进顺序非法【时间上】

  • 进程运行时,请求和释放资源的顺序不当
  • 系统对独占资源分配不当

 

产生死锁的必要条件

  • 以下四个条件都要满足才会出现死锁

互斥条件

多个线程不能同时使用同一个资源

不剥夺条件

进程A已经拥有资源1,在自己使用完之前不能被其他进程获取

请求并保持条件

进程A已经有资源1,想申请资源2,但是资源2被进程B持有,进程A处于等待状态,但是进程A不释放资源1

循环等待条件

两个线程获取资源的顺序构成了环形链

 

死锁的充分条件:资源分配图中每种资源只有一个,又出现了环路

 

如何解决死锁?【重点考各种方法,注意不要混淆了这些方法】

死锁预防

 

定义

举例

破坏互斥条件

  • 缺点:如打印机等临界资源只能互斥使用

该方法不太可行

破坏不剥夺条件

  • 常用于状态易于保存和恢复的资源(CPU的寄存器和内存资源)

剥夺资源法

破坏请求并保持条件

  • 可能会导致饥饿现象

一次性分配策略、静态分配策略

破坏循环等待条件

  • 可采用顺序资源分配法,但是编号必须相对稳定,限制了新类型设备的增加

资源有序分配策略

  • 破坏以下一个或几个即可

死锁避免

  • 防止系统进入不安全的状态
  • 安全性算法
  • 银行家算法
    • 系统处于安全状态时,一定无死锁;
    • 系统处于不安全状态时,不一定出现死锁
    • PS:
      • 死锁避免时不会限制用户申请资源的顺序【因为会试分配】
      • 需要进程运行所需资源总量信息;
      • 不会给可能导致死锁的进程分配资源

死锁的检测

资源分配图

  • 资源分配图是一个有向图,用于表示某时刻系统资源与进程之间的状态
  • 圆圈代表进程代表一类资源
  • 从进程到资源的边叫做请求边;从资源到进程的边叫做分配边

死锁定理

S为死锁的条件是当且仅当S状态的资源分配图是不可完全简化的

死锁的解除

资源剥夺法

  • 挂起某些死锁进程,并抢占它的资源

撤销进程法

  • 强制撤销部分甚至全部死锁进程并剥夺这些进程的资源

进程回退法

  • 让一个或多个进程回退到足以回避死锁的地步

各个策略的比较

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

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

相关文章

软考系统架构师知识点集锦二:软件工程

一、考情分析 二、考点精讲 2.1 软件过程模型 (1)原型模型 典型的原型开发方法模型。适用于需求不明确的场景,可以帮助用户明确需求。可以分为[抛弃型原型]与[演化型原型] 原型模型两个阶段: 1、原型开发阶段;2、目标软件开发阶段。 &#x…

Unity报错:Microsoft Visual C# Compiler version

Unity报错:Microsoft Visual C# Compiler version 问题解决方案总结 问题 Microsoft Visual C# Compiler version 2.9.1.65535 (9d34608e) Copyright © Microsoft Corporation 切换版本或者使用老项目的时候可能会出现这个报错,这个报错就是项目设置的问题 …

计算机起源(三)

一、前言 计算机在完成了硬件和操作系统的构建后,最重要的一件事情就是要处理数据。在现代意义的数据库出现之前(20世纪60年代),人们通过人工和文件系统的方式来存储、管理数据。在人工管理时期,人们常使用穿孔纸带来管理数据 ,虽…

华为机试题:HJ4 字符串分隔

目录 第一章、算法题1.1)题目描述1.2)解题思路与答案1.3)牛客链接 友情提醒: 先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。 第一章、算法题 1.1)题目描述 题目描述&…

前端html+css+js实现的2048小游戏,很完善。

源码下载地址 支持:远程部署/安装/调试、讲解、二次开发/修改/定制 逻辑用的是JavaScript,界面用canvas实现,暂时还没有添加动画。 视频浏览地址

mac安装并使用wireshark

mac安装并使用wireshark 1 介绍 我们在日常开发过程中,遇到了棘手的问题时,免不了查看具体网络请求情况,这个时候就需要用到抓包工具。比较著名的抓包工具就属:wireshark、fildder。我这里主要介绍wireshark。 2 安装 以mac安装为…

电压放大电路适用于什么场合(电压放大器)

电压放大电路是一种常见的电子电路,可将输入信号的电压放大到更高的水平,从而提高信号的强度和可靠性。它在各个领域都有广泛的应用,下面将介绍电压放大电路的适用场合。 电压放大电路广泛应用于音频领域。音频信号的传输和处理需要较高的电压…

你真的了解CPU和GPU?

目录 先举个栗子 CPU 什么是CPU CPU的定义 CPU的组成 CPU的功能 GPU 什么是GPU GPU的定义 GPU的组成 GPU的功能 CPU和GPU的区别 先举个栗子 假设你正在编辑一份文档,这时可以将CPU和GPU的角色比喻为文档编辑过程中的两个不同任务。 1. CPU CPU就好比是…

自动驾驶之—LaneAF学习相关总结

0.前言: 最近在学习自动驾驶方向的东西,简单整理一些学习笔记,学习过程中发现宝藏up 手写AI 1. 概述 Laneaf思想是把后处理放在模型里面。重点在于理解vaf, haf,就是横向聚类:中心点,纵向聚类&…

C语言之预处理

目录 前言 宏定义define的用法 文件包含include的用法 条件编译的用法 其他预处理命令 练习题 练习一 练习二 练习三 前言 预处理命令可以改变程序设计环境,提高编程效率,它们并不是C语言本身的组成部分,不能直接对它们进行编译&am…

竹云产品入选《2023年度上海市网络安全产业创新攻关成果目录》

为推进网络安全产业发展,建设网络安全产业创新高地,上海市经济和信息化委员会于10月24日正式发布《2023年度上海市网络安全产业创新攻关成果目录》,共评选出16项创新成果,其中包括基础技术创新8项、应用技术创新4项、服务业态创新…

源码推荐【源码好优多】

一、影视小程序 特点:可独立部署、消耗环境小、安全可靠。使用微信小程序技术开发。部署简单容易。该项目的部署需要具备微擎框架的开发以及部署能力 二、java博客管理系统 博客管理系统是一个融合线上、线下的网民在线交流管理信息化系统。它的使用为网民、运营者搭…

FineReport模版报错排查

在【智能运维——》平台日志——》模版报错】目录下可以查看在使用中有报错的模版,可在【下载日志】目录下下载具体时间断的日志进行报错分析。 常见报错 1、 11300003:com.fr.stable.DeathCycleException: pInvCode_sn 出现原因: 模版参数…

Linux 云服务器磁盘挂载简介

云服务器磁盘挂载 一、挂载须知 一般涉及工具或命令:fdisk/gdisk/parted等挂载(mounting)是指由操作系统使一个存储设备(诸如硬盘、CD-ROM或共享资源共享资源上的计算机文件和目录可供用户通过计算机的文件系统访问的一个过程。…

Linux ls命令:查看目录下文件

ls 命令,list 的缩写,是最常见的目录操作命令,其主要功能是显示当前目录下的内容。此命令的基本格式为: [rootlocalhost ~]# ls [选项] 目录名称 ls 命令常用的选项以及各自的功能。 注意,当 ls 命令不使用任何选项时…

基于arduino uno + L298 的直流电机驱动proteus仿真设计

一、L298简介: L298是一个集成的单片电路,采用15个导线多瓦和PowerSO20封装。它是一个高电压、高电流双全桥驱动器,旨在接受标准TTL逻辑电平和驱动感应负载,如继电器、螺线管、直流和加速电机。提供两个使输入来使独立于输入信号的…

Vue---监听div元素宽高改变时echart图表重新resize

一、需求描述 当点击上图的红色框时,echart的div元素宽会改变但是无法触发echarts图表的resize重新渲染,对于浏览器而言,浏览器具有window.resize方法监听浏览器窗口大小的改变,而div元素没有监听宽高改变的方法。 二、解决方案 …

STM TIM(三) 输入捕获

STM TIM(三) 输入捕获 输入捕获简介 IC(Input Capture)输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时(上升沿或下降沿),当前CNT的值将被锁存到CCR中(把当前CNT的值读出来&#x…

FL Studio21版无限破解版下载 软件内置破解补丁

FL Studio是一款非常好用方便的音频媒体制作工具,它的功能是非常的强大全面的,想必那些喜欢音乐创作的朋友们应该都知道这款软件是多么的好用吧,它还能够给用户们带来更多的创作灵感,进一步加强提升我们的音乐制作能力。该软件还有…