《操作系统概念》—— 同步与死锁

news/2024/5/20 12:10:20 标签: 操作系统, 多线程, 同步, 死锁

操作系统概念》—— 同步死锁

  • 一、同步
    • 1、竞争条件
    • 2、临界区问题
      • (1)定义和解决条件
      • (2)内核竞争
    • 3、Peterson解决方案
    • 4、硬件同步
    • 5、互斥锁
    • 6、信号量
      • (1)定义
      • (2)使用
      • (3)实现
      • (4)死锁与饥饿
      • (5)优先级的反转
    • 7、经典同步问题
      • (1)有界缓冲问题
      • (2)读者-作者问题
      • (3)哲学家就餐问题
    • 8、管程
      • (1)出现原因
      • (2)使用方法
      • (3)哲学家就餐问题的管程解决方案
      • (4)采用信号量的管程实现
      • (5)管程内的进程重启
  • 二、死锁
    • 1、必要条件
    • 2、资源分配图
    • 3、死锁处理方法
    • 4、死锁预防
      • (1)互斥
      • (2)持有且等待
      • (3)无抢占
      • (4)循环等待
    • 5、死锁避免
      • (1)安全状态
      • (2)资源分配算法
      • (3)银行家算法
        • a. 安全算法
        • b. 资源请求算法
    • 6、死锁检测
      • (1)每种资源类型只有单个实例
      • (2)每种资源类型可有多个实例
      • (3)应用检测算法
    • 7、死锁恢复
      • (1)进程终止
      • (2)资源抢占

一、同步

1、竞争条件

多个进程并发访问和操作统一数据并且执行结果与特定访问顺序有关。

2、临界区问题

(1)定义和解决条件

在这里插入图片描述
在这里插入图片描述

(2)内核竞争

在这里插入图片描述

3、Peterson解决方案

在这里插入图片描述

4、硬件同步

在这里插入图片描述

5、互斥锁

在这里插入图片描述

6、信号量

(1)定义

在这里插入图片描述

(2)使用

在这里插入图片描述

(3)实现

在这里插入图片描述

(4)死锁与饥饿

在这里插入图片描述

(5)优先级的反转

在这里插入图片描述

7、经典同步问题

(1)有界缓冲问题

在这里插入图片描述

(2)读者-作者问题

在这里插入图片描述
第一读者-作者问题的解决方案:
在这里插入图片描述

(3)哲学家就餐问题

在这里插入图片描述

8、管程

(1)出现原因

在这里插入图片描述

(2)使用方法

在这里插入图片描述

(3)哲学家就餐问题的管程解决方案

在这里插入图片描述

(4)采用信号量的管程实现

在这里插入图片描述

(5)管程内的进程重启

在这里插入图片描述

二、死锁

1、必要条件

在这里插入图片描述

2、资源分配图

在这里插入图片描述

3、死锁处理方法

在这里插入图片描述

4、死锁预防

只哎哟确保四个必要条件中的一个不成立,就可以预防死锁发生。

(1)互斥

在这里插入图片描述

(2)持有且等待

在这里插入图片描述

(3)无抢占

在这里插入图片描述

(4)循环等待

在这里插入图片描述

5、死锁避免

在这里插入图片描述

(1)安全状态

在这里插入图片描述

(2)资源分配算法

在这里插入图片描述

(3)银行家算法

在这里插入图片描述

a. 安全算法

在这里插入图片描述

b. 资源请求算法

在这里插入图片描述

6、死锁检测

在这里插入图片描述

(1)每种资源类型只有单个实例

在这里插入图片描述

(2)每种资源类型可有多个实例

在这里插入图片描述

(3)应用检测算法

在这里插入图片描述

7、死锁恢复

(1)进程终止

在这里插入图片描述

(2)资源抢占

在这里插入图片描述


http://www.niftyadmin.cn/n/1340245.html

相关文章

《操作系统概念》—— 内存管理

《操作系统概念》—— 内存管理一、内存管理策略1、基本硬件2、地址绑定3、逻辑地址空间与物理地址空间4、动态加载5、动态链接与共享库6、交换7、连续内存分配(1)内存分配(2)碎片8、分段(1)基本方法&#…

Disabling contextual LOB creation as createClob()

2019独角兽企业重金招聘Python工程师标准>>> 在使用Oracle10G时候,实体类使用了CLOB字段,结果抛了Disabling contextual LOB creation as createClob() method threw error异常。使用的JDBC驱动是ojdbc14的各个版本,各个版本均会报…

《IT蓝豹》android 7种网络连接方式

本项目由作者 王永飞 精心为初学者准备的学习项目。android 几种网络连接方式,本项目适合初学者学习网络知识。项目中用到一下几种网络请求方式:(1):HttpClient 方式获取网络数据 (2) : HttpURLConnection 使用原始方…

《深入理解计算机系统》—— 存储器、链接和内存管理

《深入理解计算机系统》—— 存储器、链接和内存管理一、存储器层次结构1、存储器层次结构中的缓存(1)缓存不命中(2)缓存不命中的种类2、高速缓存存储器(1)通用的高速缓存存储器组织结构(2&…

leetcode 2227 — 加密解密字符串

leetcode 2227 — 加密解密字符串一、题目描述二、算法1、字典树2、实现一、题目描述 二、算法 这道题使用逆向分析比较简单,我们这里主要是学习下字典树的使用。 1、字典树 字典树(trie),其实就是一个有限状态自动机。一个由 …

js-QuickStart-base.js

// 1.变量(Variables)var myVariable;myVariable Bob;// 数据类型string numberbooleanarrayobject// 2.注释/*Everything in between is a comment.*/// 3.运算符-*/!! // 4.语句var iceCream chocolate;if (iceCream chocolate) {alert(Yay, I lov…

leetcode 2157 — 字符串分组

leetcode 2157 — 字符串分组一、题目描述二、思路分析三、实现1、并查集(1)等价类(2)在线等价类问题(3)实现2、题解一、题目描述 二、思路分析 这里需要注意题目里给出的要求:在任意一个子串中…

Graylog安装配置

ES集群健康检测:curl -sXGET http://localhost:9200/_cluster/health?prettytrue | grep "status" | awk -F [ "] {print $4} | grep -c "green" ES节点健康检测:curl -sXGET localhost:9200/_cat/health |awk -F {print $4…