【学习笔记】第二章——进程同步、进程互斥、进程互斥的硬件/软件实现方法

文章目录

  • 一. 进程同步 && 进程互斥
      • 四个区域
      • 四个原则
      • 总结:
  • 二. 进程互斥的软件实现方法
      • 1)单标志法
      • 2)双标志先检查法
      • 3)双标志后检查法
      • 4)Peterson 算法
      • 总结
  • 三. 进程互斥的硬件实现方法
      • 1)中断屏蔽方法
      • 2)TestAndSet 指令
      • 3)Swap 指令
      • 总结

一. 进程同步 && 进程互斥

  • 由于进程有异步性,因此需要有同步存在。
    同步也叫直接制约关系,指为完成某任务而建的两或多个进程,需要在某些位置协调各自的工作次序而产生的制约关系。进程间的直接制约关系就是源于他们之间的相互合作。

  • 各个并发进程总要共享一些系统资源(内存、打印机等)

  • 两种资源共享方式互斥 && 同时

  • 互斥共享方式:同一时间段,只允许一个进程访问

  • 同时共享方式:同一时间段,可允许多个进程访问

  • 临界资源:同一时间段,只允许一个进程使用的资源(摄像头、内存缓冲区等)

  • 对临界资源的访问,必须互斥地进行
    在这里插入图片描述

四个区域

  • 进入区:负责检查是否可以进入临界区;可进则设置正在访问临界资源的标志(上锁),以阻止其他进程同时进入临界区。
  • 临界区:访问临界资源的代码段
  • 退出区:负责解除正在访问临界资源的标志(解锁)
  • 剩余区:做其他处理
    在这里插入图片描述

四个原则

  • 四个原则:空闲让进、忙则等待、有限等待、让权等待
    在这里插入图片描述

总结:

在这里插入图片描述

二. 进程互斥的软件实现方法

1)单标志法

  • 每个进程进入临界区的权限,只能被另一个进程赋予
  • 可以实现:同一时刻最多允许一个进程访问临界区
  • 问题:违背空闲让进原则
    在这里插入图片描述
    在这里插入图片描述

2)双标志先检查法

  • 思想:用布尔型数组,标记各进程想进入临界区的意愿
  • 各进程进入临界区前,先检查当前有没有别的进程想进入临界区,无则设flag[i],然后访问
  • 问题:违反忙则等待原则
  • 原因:进入区的检查 && 上锁无原子性
    在这里插入图片描述

3)双标志后检查法

  • 结合前两个算法而成
  • 解决了忙则等待的问题,但是违反了空闲让进有限等待。会产生饥饿
    在这里插入图片描述

4)Peterson 算法

  • 让让让!解决了之前的问题
  • trun:优先让该进程进入临界区
  • 问题:未遵循让权等待原则
    在这里插入图片描述
    在这里插入图片描述

总结

在这里插入图片描述

三. 进程互斥的硬件实现方法

1)中断屏蔽方法

  • 利用开/关中断指令实现
  • 简单高效,但不适用于多处理机不适用于用户进程
    在这里插入图片描述

2)TestAndSet 指令

这里没怎么看,日后发现重要的话再复习吧 T T

在这里插入图片描述

3)Swap 指令

  • 原子性
    在这里插入图片描述

总结

在这里插入图片描述

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

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

相关文章

python的数据结构包括那些_python算法与数据结构-什么是数据结构

一、什么是数据结构 数据结构,直白地理解,就是研究数据的存储方式。 我们知道,数据存储只有一个目的,即为了方便后期对数据的再利用,就如同我们使用数组存储 {1,2,3,4,5} 是为了后期取得它们的值,因此&…

【学习笔记】MOOC 数学文化赏析 笔记

文章目录一. 笔记1)各种知识点2)数集3)几何4)幻方5)难题、猜想与定理二. 典中典题目:临时学习整理,欢迎各位大佬留言补充~(比如数集、幻方等部分比较贫瘠 ) 一…

seo自动发外链_一套节约成本全网营销方案-小小课堂SEO培训教程

很多公司都是由一些小型工作室或个人工作室慢慢发展而来的,在这过程中,人员、资金链、资源、项目等因素一旦出现问题,可能会导致项目失败,那么在互联网上投入的资金如果过多,可能都是白白打了水漂。今天,小…

【学习笔记】MOOC 数学文化赏析 笔记【补档】

文章目录一. 笔记1)各种知识点2)数集3)几何4)幻方5)难题、猜想与定理二. 典中典题目:临时学习整理,欢迎各位大佬留言补充~(比如数集、幻方等部分比较贫瘠 ) 一…

python 支付宝个人账单_金融支付财务融合业务-实践分享1:订单、账单、交易流水、账套知识解构、原理解析...

本文作者从实际工作实践出发,结合案例等分享了电商金融支付财务融合中的基本概念和相关原理解析,包括:订单、账单、交易流水和账知识解构,供大家一同参考和学习。从事电商、进销存、金融、支付、财务的产品同学,是否对…

【学习笔记】第二章——信号量机制 用信号量实现互斥、同步

文章目录一. 信号量机制整型信号量记录型信号量例子:总结二. 用信号量实现互斥、同步互斥同步前驱总结一. 信号量机制 信号量:一个用于表示系统中某种资源的数量的变量(整数 or 记录型变量)一对原语:wait(S) 和 signa…

opengl 安装_一步步学OpenGL(34) -《GLFX,一个OpenGL效果库》

教程 34GLFX,一个OpenGL效果库原文: http://ogldev.atspace.co.uk/www/tutorial34/tutorial34.htmlCSDN完整版专栏: https://blog.csdn.net/cordova/article/category/9266966理论介绍这篇教程暂时先不继续探索OpenGL的特性和3D技术了,来介绍…

【LeetCode笔记】剑指 Offer 60. n个骰子的点数(Java、动态规划)

文章目录题目描述代码 & 思路1. 二维数组(方便理解)2. 一维数组(节约空间)二刷鸽了好久的打题博客~要继续补起来了! 今天不打题,明天变垃圾 QAQ 题目描述 一眼就想先暴力枚举、或者递归呀&…

python2和3_python2和python3的区别

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼1.字符串类型python中有两种字符类型:字节字符串和文本字符串。版本python2python3字节字符串strbytes文本字符串Unicodestr2.默认字符python2中默认的字符串类型默认是ASCII,python3中默认的字符串类型是Un…

java 根据圆心计算圆弧上点的经纬度_【控制测量学】-高斯投影正算公式以及java代码

正算公式(将经纬度转化为坐标):java代码(附有源代码和修改后的代码):源代码:/** * 由经纬度反算成高斯投影坐标 * * param longitude * param latitude * return */ public static double[] GaussToBLToGauss( double longitude, double latitude) { …

【LeetCode笔记】剑指 Offer 59 - II. 队列的最大值(Java、辅助队列)

文章目录题目描述思路 && 代码二刷题目描述 恢复打题的第二天打卡~ 可以说是这道最小栈的兄弟题目了,很相似总体思路还是一样,靠空间换时间~也就是借助辅助队列 思路 && 代码 这篇题解的动图做得很好&#xff…

redis setnx原子性_不支持原子性的 Redis 事务也叫事务吗?

文章收录在 GitHub JavaKeeper ,N线互联网开发必备技能兵器谱 假设现在有这样一个业务,用户获取的某些数据来自第三方接口信息,为避免频繁请求第三方接口,我们往往会加一层缓存,缓存肯定要有时效性,假设我们…

【LeetCode笔记】剑指 Offer 67. 把字符串转换成整数 (Java、字符串)

文章目录题目描述思路 && 代码二刷题目描述 老阅读题了,感觉这道题有点类似写业务接口。 思路 && 代码 首先,把情况划分一下: 非正常值,直接给 0(这个实际上可以划分到2的代码中)可取…

详细描述三个适于瀑布模型的项目_信息系统项目管理师-第二三章:信息系统项目管理基础与立项管理2...

三、信息系统项目的生命周期1、项目生命周期的定义—项目从启动、组织与准备、执行到结束所经历的一系列阶段2、★项目生命周期的特征①成本与人力投入在开始时较低,在工作执行期间达到最高,并在项目快要结束时迅速回落②风险与不确定性在项目开始时最大,并在项目的整个生命周期…

【LeetCode笔记】剑指 Offer 64. 求1 + 2 + ... + n (Java、限制语法、二刷)

文章目录题目描述思路 && 代码注释版代码(方便理解):无注释版代码(方便背诵 )二刷题目描述 鬼鬼,又到了我最喜欢的戴着脚镣跳舞环节。 讲道理,我觉得这类题应该整个归纳啥的。。&#x…

虚拟dom_从0到1实现一个虚拟DOM

来源 | https://segmentfault.com/a/1190000021331850要构建自己的虚拟 DOM,需要知道两件事。你甚至不需要深入 React 的源代码或者深入任何其他虚拟 DOM 实现的源代码,因为它们是如此庞大和复杂——但实际上,虚拟 DOM 的主要部分只需不到 50…

【LeetCode笔记】剑指 Offer 31. 栈的压入、弹出序列 (Java、栈)

文章目录题目描述代码 && 思路二刷题目描述 打卡第三天!加油加油~ 数据结构笔试题貌似也会考 ,不过考法不一样,有点规律。总的来说还是挺有意思的,我们直接来看代码吧~ 代码 && 思路 O(…

python汉字转拼音代码_Python 汉字转换拼音代码

# -*-coding:utf-8-*-# 返回汉字的拼音def Return_pinyin(word):global reslistfor line in reslist:if (wordline[0]line[1]) or (wordline[2]line[3]):str linebreak# 取①和②之间的内容s str.find(u①)4e str.find(u②)3return str[s:e]def GetPy(word):#首先装载资源文…

【LeetCode笔记】剑指 Offer 20. 表示数值的字符串(Java、字符串)

文章目录题目描述思路 && 代码题目描述 呃…比较恶心的一道题,需要读好题,分完情况再下手有看到dalao用有限状态机来做,不过这边还是直接用了我自己的做法 思路 && 代码 ps:这里没有参考题解的写法&#xff…

python读json文件中不同的数据类型_怎么使用python提取json文件中的字段

python中为什么用json有什么作用python的json模块中如何将变量添加到里面python的json模块第一个是要打开的文件,第二个是打开的操作,为什么会如果你早认清你在别人心中没那么重要你会快乐很多json.load不是什么文件都能打开的。。。 Python 3.6.4 (v3.6…