操作系统-4

简介: -

死锁

起因:

  • ①竞争不可抢占性资源引起死锁②竞争可消耗资源引起死锁③进程推进顺序不当引起死锁

定义:

  • 如果一组进程中的每一个进程都在等待仅由该组进程中的其它进程才能引发的事件,那么该组进程是死锁的

必要条件:

  • ①互斥条件:一个资源每次只能被一个进程使用。
  • ②请求和保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
  • ③不可抢占条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
  • ④循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

处理方法:

  • 预防死锁,避免死锁,检测死锁,解除死锁
  • 这四种方法对死锁的防范程度逐渐降低
  • 资源利用率不断提高
  • 并发程度提高

预防死锁

  • 破坏四个必要条件,互斥是非共享设备所必须的,所有破坏其他三个
  • 破坏请求和保持
  • 第一种协议
  • 必须一次性运行过程中申请所需的全部资源
  • 优点:简单,易行,安全
  • 缺点:资源严重浪费,可能导致饥饿
  • 第二种协议
  • 只获得运行初期所需的资源,然后在运行过程中,释放资源,然后在请求新的资源
  • 破坏不可抢占
  • 当一个已经保持某种不可抢占资源后,提出新需求不能满足,必须释放已经保持的所有资源
  • 缺点延迟了进程的周转时间,增加了系统开销,降低了系统吞吐量
  • 破坏循环等待
  • 赋予不同序号

避免死锁

  • 基本思想:确保系统始终处于安全状态
  • 将系统状态分为安全和不安全,资源分配前会判断是否安全
  • 银行家算法

检测死锁

  • 资源分配图
  • 圆:进程,方框:资源
  • 方法:将资源分配图简化
  • 过程:先找一个既不阻塞又非独立的进程p1,顺利情况下,p1可以获取所有资源并释放,然后去掉该边,使其变为独立点,依次执行,然后如果所有都独立,那么称为可完全简化,否则成为不可完全简化的。
  • 死锁定理:当且仅当S状态的资源分配图是不可完全简化的。

解除死锁

  • 抢占资源
  • 终止进程

各种锁

银行家算法

每一个新进程在进入系统时,他必须声明在运行的过程中,可能需要每种资源类型的最大单元数目,其数目不应超过系统所拥有的资源总量

因素:

(1) 可利用资源向量Available。

(2) 最大需求矩阵Max。

(3) 已分配给该进程的资源Allocation。

(4) 需求矩阵Need。

求解:是否安全及执行顺序,新的需求是否安全

解题思路:

1、 先求need矩阵。是Max-Allocation就得到Need矩阵。

2、 系统安全性分析,Work、Need、Alloaction、Work+Allocation,

3、 第一个进程。Work的初始化等于Available,然后Need、Alloaction都是填写步骤一对应的need。Work+Allocation也就是加法。

4、 关于安全序列并不唯一,就比较work跟need,Need[i, j]≤Work[j];就可以选择执行。

5、 第二个进程的Work是第一行的Work+Allocation,第一个进程已经结束释放掉了。后面对应的都是这样

6、 如果所有进程的Finish[i]=true都满足,则表示系统处于安全状态;

7、 关于请求Request,首先判断与need,Available大小。然后假设满足。将Request的值跟原Allocation相加得到新Allocation,Available也要减少对应的值。

8、 每个进程还需要多少进程才能满足,即Request的值 = Need - Allocation

目录
相关文章
|
存储 NoSQL 关系型数据库
|
6月前
|
存储 监控 关系型数据库
揭秘:如何构建高效的可视化数据同步平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
揭秘:如何构建高效的可视化数据同步平台
|
弹性计算 安全
停止使用云服务通常需要遵循以下步骤
停止使用云服务通常需要遵循以下步骤
807 2
|
SQL 存储 关系型数据库
【MySQL 数据库】1、MySQL 的 DDL、DML、DQL 语句
【MySQL 数据库】1、MySQL 的 DDL、DML、DQL 语句
449 0
|
Linux 数据库
常用的RPM管理工具笔记
【4月更文挑战第6天】常用的RPM管理工具笔记
3619 6
|
11月前
|
数据管理 Linux 文件存储
本地文件系统
【10月更文挑战第12天】
300 3
|
数据处理 Python
Pandas中的drop_duplicates()方法详解
Pandas中的drop_duplicates()方法详解
1167 2
|
SQL 存储 数据库
数据库语言:DDL与DML详解
数据库语言:DDL与DML详解
4450 1
|
机器学习/深度学习 算法 Java
深入解读TuGraph计算引擎模型推理系统
TuGraph计算引擎模型推理系统将基于迭代计算的图计算框架与模型推理系统相结合,推理系统可自定义推理依赖环境,图迭代计算与推理链路实现隔离。基于共享内存的跨进程通信方式,提高了推理数据交换效率,满足流图近线推理的时效性。
深入解读TuGraph计算引擎模型推理系统
|
存储 索引 Windows
操作系统(13)-----文件管理2
操作系统(13)-----文件管理
603 0