操作系统复习 五、六章

操作系统复习 五、六章

文章目录

  • 操作系统复习 五、六章
    • 第五章 并发性: 互斥和同步
      • 基本概念
      • 实现临界区互斥访问的基本方法
      • 信号量
      • 管程
    • 第六章 并发性:死锁和饥饿
      • 死锁的概念
      • 死锁的处理策略
      • 死锁的预防
      • 死锁避免
      • 死锁的检测和接触
      • 饥饿、死锁、死循环的区别

第五章 并发性: 互斥和同步

基本概念

  • 临界资源

    • 一次只允许一个进程使用的资源(打印机、特殊变量、数据)
    • 临界资源的访问过程
      • 进入区:检查进程是否可以进入临界区
      • 临界区:可以访问临界资源的代码
      • 推出去:将正在访问的临界区的标志清除
      • 剩余去:代码中的其余部分
  • 同步:直接制约关系,为了完成某种任务而建立的进程,相互合作,所以要相互进行通信同步

    • 遵循的原则
      • 空闲让进:临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区
      • 忙则等待:已有进程进入临界区后,其他试图进入临界区的进程必须等待
      • 有限等待:对于请求访问临界区的进程,在有限时间内进入临界区
      • 让权等待:进程不能进入临界区的时候,应当立即释放处理机
  • 互斥:间接制约的关系,当一个进程访问临界区资源的时候,其他进程不能访问

实现临界区互斥访问的基本方法

  • 软件实现方法
    • 单标志法
      • 两个程序进程交替进入临界区
      • 优点:实现简单
      • 缺点:可能会违背空闲让进,造成资源无法充分利用
    • 双标志先检查
      • 每个进程访问临界区资源前,先检查临界资源是否被访问,如果空闲才能进入
      • 优点:不用交替进入可以连续使用
      • 缺点:两个进程可能同时进入临界区,违背忙则等待
    • 双标志后检查
      • 先设置自己标志,表明自己想要进入,检查对方标志,如果对方也要进入,那么就等待否则就进入
      • 优点:不会导致两个进程都进入临界区
      • 缺点:双方可能会互相谦让,导致饥饿现象
    • 皮特森林算法
      • 防止两个进程无限期等待,在算法三的基础上增加一个标志位,从而防止饥饿
      • 优点:解决了饥饿现象
      • 缺点:算法复杂
  • 硬件实现方法
    • 中断屏蔽法
      • 对中断进行屏蔽、关中断
      • 优点:关中断非常方便
      • 缺点:限制了处理机交替执行程序的能力
    • 硬件指令法
      • 读出指定标志后,将该标志置为真
    • 优点:
      • 适用于任意数目的进程
      • 简单且容易验证正确性
      • 支持进程内有多个临界区
    • 缺点
      • 不能实现让权等待
      • 可能会导致饥饿现象

信号量

  • 整形信号量
    • wait: 资源-1, signal= 资源+1
    • 没有遵循让权等待机制,会导致进程处于“忙等”状态
    • 记录型信号量 记录型信号量不存在 “忙等” 现象,除了需要一个用于代表资源数目的了整型变量value 意外,再需要一个进程链表L ,用于链接所有等待该资源的进程
    • 利用信号量实现同步 设S为进程P1和P2同步的公共信号量,初值为0,通过设置S的值可以使得P1与P2按照一定顺序执行
    • 利用信号量实现互斥 通过设置S的值,可以实现进程对临界资源的互斥访问
    • 利用信号量实现前驱关系 通过设置不同的进程运行结束后,产生不同的信号量,从而可以使得目标进程运行,从而实现前驱关系

管程

  • 定义

    • 一组数据以及定义在这组数据之上的对这组数据的操作组成的软件模块,这组操作能初始化并改变管程中的数据和同步进程
  • 组成

    • 局部于管程的共享结构数据说明
    • 对该数据结构进行操作的一组过程
    • 对局部于管程的共享数据设置初始值的语句
  • 基本特性

    • 局部于管程的数据只能被局部于管程内的过程所访问
    • 一个进程只有通过调用管程内的过程才能进入管程访问共享数据
    • 每次仅允许一个进程在管程内执行某个内部过程
  • 经典问题的解决

    • 生产者/消费者问题、读者/写者问题、哲学家就餐问题

第六章 并发性:死锁和饥饿

死锁的概念

  • 定义: 多个进程因为竞争资源造成的一种僵局,没有外力作用,这些进程都无法向前继续推进
  • 死锁产生的原因
    • 系统资源的竞争
    • 进程推进顺序非法
    • 死锁产生的必要条件
      • 互斥条件:进程对分配的资源进行排他性控制
      • 不可剥夺条件:进程获得资源在未使用完之前,不能被其他进程强行夺走
      • 请求并保持条件:进程已经保持了至少一个资源,提出新的资源请求,而该资源已经被其他进程占有,此时该进程被阻塞,但是自己已经获得的资源保持不放
      • 循环等待条件:你等我释放我等你释放

死锁的处理策略

  • 死锁的预防
    • 破坏四个必要条件中的一个或几个,防止死锁
    • 资源分配保守,宁可资源闲置
    • 一次性请求所有资源,资源剥夺,资源按序分配
    • 优点:适用于突发式处理的进程,不必进行剥夺
    • 缺点:效率低,进程初始化时间长,剥夺次数过多,不变灵活申请新资源
  • 避免死锁
    • 在资源的动态分配中,用某种方法防止系统进入不安全状态,避免死锁
    • 运行过程中预测分配资源是否会死锁
    • 寻找可能的安全序列
    • 优点:不必进行剥夺
    • 缺点:必须知道将来的资源需求,进程不能被长时间阻塞
  • 死锁的检测及解除
    • 允许进程死锁,通过检测及时的判断死锁,然后对其进行解除
    • 宽松,只要允许就分配资源
    • 定期检查是否死锁
    • 优点:不延长初始化时间,允许对死锁进行现场处理
    • 缺点:通过到夺解除死锁,造成损失

死锁的预防

  • 破坏互斥条件 某些资源只能被互斥访问,并且某些情况下必须保护互斥性
  • 破坏不可剥夺条件
    • 释放已经占有的资源
    • 特点:增加系统开销实现复杂降低吞吐量
    • 用于状态易于保存和恢复的数据(CPU的寄存器及内存资源)
  • 破坏请求并保持条件
    • 一次性申请完所需要的全部资源
    • 特点:实现简单,但是资源被严重浪费,甚至可能导致进程饥饿
  • 破坏循环等待条件
    • 采用顺序资源法,对进程进行顺序推荐
    • 特点:进程编号必须稳定,可能会导致资源浪费,并且不利于用户编程

死锁避免

  • 系统安全状态
    • 按照某种方式分配资源后,是否会导致死锁,如果会导致死锁,那么就是不安全状态,反之就是安全状态
  • 银行家算法
    • 思想:通过计算当前资源的不同分配方式,从而预测系统是否会进入不安全状态。就像是银行贷款,是否会导致银行没有足够的资金对外出借

死锁的检测和接触

  • 资源分配图
    • 圆圈表示进程,框表示一类资源,进程到资源的有向边称为请求边,资源到进程的边称为分配边
  • 死锁定理
    • 在资源分配图中找到分配满足的进程,然后消去其请求边与分配边
    • 如果最后所有边都可以被消去,那么就是可以简化的,不存在死锁,反之存在死锁
  • 死锁解除
    • 资源剥夺法:挂起某些死锁进程,抢占资源,将这些资源分配给其他死锁进程,但是要防止挂起时间过长
    • 撤销进程法:强制撤销部分甚至全部死锁进程,并且剥夺他们的资源,撤销原则可以根据优先级和撤销进程的代价进行
    • 进程回退法:让一个或者多个进程回退到足以回避死锁的地步,进程回退时自愿释放资源而非被剥夺。要求系统保持进程历史信息,设置还原点

饥饿、死锁、死循环的区别

  • 死锁:各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象
  • 饥饿:由于长期得不到想要的资源,某进程无法向前推进的现象
  • 死循环:某进程执行过程中一直跳不出某个循环的现象

大家好,我是xwhking,一名技术爱好者,目前正在全力学习 Java,前端也会一点,如果你有任何疑问请你评论,或者可以加我QQ(2837468248)说明来意!希望能够与你共同进步

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

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

相关文章

Arm LDM和STM的寻址方式

A32指令集中包含多数据传输指令LDM和STM,也就是单条指令可以传输多个寄存器的值与内存交互,这对于数据块传输以及寄存器的压入栈很有帮助。LDM和STM指令可分别用于实现堆栈的pop和push操作。对于堆栈操作,基寄存器通常是堆栈指针(SP)。 LDM和…

Spring Boot Starter设计实现

前言 Starter 是 Spring Boot 非常重要的一个硬核功能。 通过 Starter 我们可以快速的引入一个功能或模块,而无须关心模块依赖的其它组件。关于配置,Spring Boot 采用“约定大于配置”的设计理念,Starter 一般都会提供默认配置,只…

Python脚本——.csv文件转.txt脚本三则

第一则 """ 批量给指定文件夹内的所有.csv文件增加表头后转成txt """import osdef add_header_and_convert_to_txt(csv_folder, header, output_folder):# 获取指定文件夹中的所有.csv文件csv_files [f for f in os.listdir(csv_folder) if f.…

LeetCode讲解篇之2280. 表示一个折线图的最少线段数

文章目录 题目描述题解思路题解代码 题目描述 题解思路 折线图中如果连续的线段共线,那么我们可以可以将其合并成一条线段 首先将坐标点按照横坐标升序排序 然后遍历数组 我们可以通过计算前一个线段的斜率和当前线段的斜率来判断是否共线 如果二者相等&#x…

【Linux常用的基本指令】

Linux学习笔记---002 Linux的基本指令1、ls指令2、pwd指令3、mkdir指令4、cd指令5、alias命令6、clear指令7、touch指令8、rmdir指令9、rm指令10、man指令11、cp指令12、mv指令13、cat指令14、more指令15、less指令16、时间相关的指令16.1、date指令16.2、cal指令 17、find指令…

Python之字符串中常用的方法

1. 去掉空格和特殊符号 name " abcdefgeyameng " name1 name.strip() # 并不会在原来的字符串上操作,返回一个去除了两边空白的字符串 print(name1, len(name1), name, len(name)) # abcdefgeyameng 14 abcdefgeyameng 17 # 去掉左边的空格和换行符 name2 n…

测试SpringBoot的时候报错mapper未装载的解决方案:

1.报错信息和截图: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name com.tang.testspringboot.TestSpringBootApplicationTests: Unsatisfied dependency expressed through field mapper: No qualifying bean o…

Python3.10安装教程

Python3.10安装 Python的安装按照下面几步进行即可,比较简单。 下载Python安装文件,打开Python的下载页面,我这里选择安装的版本是3.10.11,根据自己电脑版本选择对应安装包 安装包下载完毕后,按照步骤开始安装。选择…

620基于51单片机的密码锁设计[Proteus仿真]

620基于51单片机的密码锁设计[proteus仿真] 密码锁设计这个题目算是课 程设计和毕业设计中常见的题目了,本期是一个基于51单片机的密码锁设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 2¥,私信…

springboot集成钉钉通知

目录 1.通过自定义机器人方式发送群消息 1.1说明 1.2发送普通消息示例(采用加签方式) 1.3注意事项 2.通过企业内部应用发送钉钉消息 2.1说明 2.2示例 2.3注意 1.通过自定义机器人方式发送群消息 1.1说明 官网地址: 自定义机器人发送…

2024年江苏省信息安全管理与评估理论题题库(单选120题,多选40题)

2024年江苏省信息安全管理与评估理论题题库(单选120题,多选40题) 因各方面原因,无法公开发布,只能设为vip文章,有需要的小伙伴可以看看。 单选题 PGP是一个基于下列哪个公钥加密体系的邮件加密软件?( )A.RSA B.Kerberos C.DES D.IDEA 防火墙通过( )控制来阻塞邮…

this.setState的注意事项

目录 1、this.setState的注意事项 2、是什么造成了this.setState()的不同步? 3、 那this.setState()什么时候同步,什么时候不同步? 3.1 经过React包装的onClick点击事件() 3.2 没经过React包装的 原生点击事件 …

嘘……快进来!这儿有最新版Microsoft照片程序的安装秘籍!(附安装引导程序下载)

网管小贾 / sysadm.cc 最近啊有不少小伙伴向我反馈,自个的 Windows 10 系统里边居然没有 Microsoft 照片 程序。 我觉得有点不可思议,为啥呢,因为他们的电脑是新买的! 你看哈,系统是 22H2 最新版,安装日期…

vscode打开c_cpp_properties.json文件的一种方式

步骤一 点击win32 步骤二 点击json 自动生成了

鸿蒙Harmony-线性布局(Row/Column)详解

人生的下半场,做个简单的人,少与人纠缠,多看大自然,在路上见世界,在途中寻自己。往后余生唯愿开心健康,至于其他,随缘就好! 目录 一,定义 二,基本概念 三&am…

如何使用“通义听悟”提高工作和学习效率

如何使用通义听悟提高工作和学习效率 通义听悟是一款利用人工智能技术,自动为音频和视频内容提供转写、翻译、总结、检索等功能的在线工具。它可以在会议、学习、访谈、培训等场景下,帮助您记录、阅读、整理、复习音视频信息,成为您的工作和…

FPGA 移位运算与乘法

题目: 已知d为一个8位数,请在每个时钟周期分别输出该数乘1/3/7/8,并输出一个信号通知此时刻输入的d有效(d给出的信号的上升沿表示写入有效) 由题意可知: 复位信号高有效,低复位;在inpu_grant上升…

WorkPlus卓越的即时通讯工具,助力企业提升工作效率

在当今快节奏的商业环境中,高效沟通和协作是企业成功的关键。而即时通讯作为实现高效沟通的利器,成为了现代企业不可或缺的一部分。作为一款领先的即时通讯工具,WorkPlus以其卓越的性能和独特的功能,助力企业打造高效沟通和协作的…

HTTP API 认证技术详解(二):Digest Access Authentication

目录 什么是 Digest Access Authentication 认证 Digest Access Authentication 认证的原理 Digest Access Authentication 认证的安全性 使用 Golang 实现 Digest Access Authentication 使用建议 小结 HTTP API 认证技术主要用于验证客户端身份,并确保只有经…

docker应用:搭建uptime-kuma监控站点

简介:Uptime Kuma是一个易于使用的自托管监控工具,它的界面干净简洁,部署和使用都非常方便。 历史攻略: docker:可视化工具portainer docker-compose:搭建自动化运维平台Spug 开源地址: ht…