408 考研《操作系统》第二章第四节:进程同步和进程互斥

news2024/11/16 19:00:48

文章目录

  • 教程
  • 1. 进程同步
  • 2. 进程互斥
  • 3. 总结
  • 4. 进程互斥的软件实现方法
    • 4.1 单标志法
    • 4.2 双标志先检查法
    • 4.3 双标志后检查法
    • 4.4 Peterson算法
    • 4.5 总结
  • 5. 进程互斥的硬件实现方法
    • 5.1 中断屏蔽方法
    • 5.2 TestAndSet指令
    • 5.3 Swap指令
    • 5.4 总结

教程

  1. 进程同步和进程互斥
    https://www.bilibili.com/video/BV1YE411D7nH/?p=18&share_source=copy_web&vd_source=d228985826b563972268952905224139
  2. 进程互斥的软件实现方法
    https://www.bilibili.com/video/BV1YE411D7nH/?p=19&share_source=copy_web&vd_source=d228985826b563972268952905224139
  3. 进程互斥的硬件实现方法
    https://www.bilibili.com/video/BV1YE411D7nH/?p=20&share_source=copy_web&vd_source=d228985826b563972268952905224139

1. 进程同步

在这里插入图片描述
再看另一个例子:进程通信――管道通信
在这里插入图片描述
读进程和写进程并发地运行,由于并发必然导致异步性,因此“写数据”和“读数据”两个操作执行的先后顺序是不确定的。而实际应用中,又必须按照“写数据→读数据”的顺序来执行的。如何解决这种异步问题,就是“进程同步”所讨论的内容。

同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。

2. 进程互斥

进程的“并发”需要“共享”的支持。各个并发执行的进程不可避免的需要共享一些系统资源(比如内存,又比如打印机、摄像头这样的I/o设备)
在这里插入图片描述


我们把一个时间段内只允许一个进程使用的资源称为临界资源。许多物理设备(比如摄像头、打印机)都属于临界资源。此外还有许多变量、数据、内存缓冲区等都属于临界资源。

对临界资源的访问,必须互斥地进行。互斥,亦称间接制约关系进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。


对临界资源的互斥访问,可以在逻辑上分为如下四个部分:
在这里插入图片描述
为了实现对临界资源的互斥访问,同时保证系统整体性能,需要遵循以下原则:

1.空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区;
2.忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待;
3.有限等待。对请求访问的进程,应保证能在有限时间内进入临界区(保证不会饥饿);
4.让权等待。当进程不能进入临界区时,应立即释放处理机,防止进程忙等待。
在这里插入图片描述

3. 总结

在这里插入图片描述

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

在这里插入图片描述
学习提示:
1.理解各个算法的思想、原理
2.结合上小节学习的“实现互斥的四个逻辑部分”,重点理解各算法在进入区、退出区都做了什么
3.分析各算法存在的缺陷(结合“实现互斥要遵循的四个原则”进行分析)

4.1 单标志法

算法思想:两个进程在访问完临界区后会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进程赋予
在这里插入图片描述
在这里插入图片描述


4.2 双标志先检查法

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

4.3 双标志后检查法

算法思想:双标志先检查法的改版。前一个算法的问题是先“检查”后“上锁”,但是这两个操作又无法一气呵成,因此导致了两个进程同时进入临界区的问题。因此,人们又想到先“上锁”后“检查”的方法,来避免上述问题。
在这里插入图片描述

4.4 Peterson算法

算法思想:双标志后检查法中,两个进程都争着想进入临界区,但是谁也不让谁,最后谁都无法进入临界区。GaryL.Peterson想到了一种方法,如果双方都争着想进入临界区,那可以让进程尝试“孔融让梨”,主动让对方先使用临界区。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
Peterson算法用软件方法解决了进程互斥问题,遵循了空闲让进、忙则等待、有限等待三个原则,但是依然未遵循让权等待的原则。

Peterson算法相较于之前三种软件解决方案来说,是最好的,但依然不够好。

4.5 总结

在这里插入图片描述

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

在这里插入图片描述
学习提示:

  1. 理解各方法的原理
  2. 了解各方法的优缺点

5.1 中断屏蔽方法

利用“开/关中断指令”实现(与原语的实现思想相同,即在某进程开始访问临界区到结束访问为止都不允许被中断,也就不能发生进程切换,因此也不可能发生两个同时访问临界区的情况)
在这里插入图片描述
优点:简单、高效
缺点:不适用于多处理机;只适用于操作系统内核进程,不适用于用户进程(因为开/关中断指令只能运行在内核态,这组指令如果能让用户随意使用会很危险)

5.2 TestAndSet指令

简称TS指令,也有地方称为TestAndSetLock指令,或TSL指令
TSL指令是用硬件实现的,执行的过程不允许被中断,只能一气呵成。以下是用c语言描述的逻辑:
在这里插入图片描述
若刚开始lock是 false,则TSL返回的old值为 false,while循环条件不满足,直接跳过循环,进入临界区。若刚开始lock是true,则执行TLS后old返回的值为true,while循环条件满足,会一直循环,直到当前访问临界区的进程在退出区进行“解锁”。

相比软件实现方法,TSL指令把“上锁”和“检查”操作用硬件的方式变成了一气呵成的原子操作。

优点:实现简单,无需像软件实现方法那样严格检查是否会有逻辑漏洞;适用于多处理机环境

缺点:不满足“让权等待”原则,暂时无法进入临界区的进程会占用CPU并循环执行TSL指令,从而导致“忙等”。

5.3 Swap指令

有的地方也叫Exchange指令,或简称XCHG指令。
Swap指令是用硬件实现的,执行的过程不允许被中断,只能一气呵成。以下是用c语言描述的逻辑
在这里插入图片描述
逻辑上来看Swap和TSL并无太大区别,都是先记录下此时临界区是否已经被上锁(记录在 old变量上),再将上锁标记lock设置为true,最后检查old,如果old为 false则说明之前没有别的进程对临界区上锁,则可跳出循环,进入临界区。

优点:实现简单,无需像软件实现方法那样严格检查是否会有逻辑漏洞;适用于多处理机环境

缺点:不满足“让权等待”原则,暂时无法进入临界区的进程会占用cPU并循环执行TSL指令,从而导致“忙等”。

5.4 总结

在这里插入图片描述

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

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

相关文章

【OpenCV学习】第11课:图像金字塔 - 上采样与降采样(高斯金字塔,放大与缩小图像)

仅自学做笔记用,后续有错误会更改 理论 参考文章链接:https://blog.csdn.net/qq_54185421/article/details/124350723 图像金字塔的概念: 从上往下(采样点越来越多):上采样 从下往上(采样点越来越少)&a…

代码随想录刷题|LeetCode 503.下一个更大元素II 42. 接雨水 84.柱状图中最大的矩形

目录 503.下一个更大元素II 思路 下一个更大元素|| 42. 接雨水 思路 双指针法 动态规划 单调栈 接雨水 双指针法 动态规划 单调栈 84.柱状图中最大的矩形 思路 柱状图最大的矩形 动态规划 单调栈 503.下一个更大元素II 题目链接:力扣 思路 与 739. 每日温度 基本相…

STM32 | hex文件、bin文件、axf文件的区别?

已剪辑自: https://mp.weixin.qq.com/s/1EQRooYYpDeKvHpqguik6w 在STM32开发中,经常会碰到hex文件、bin文件与axf文件,这些都是可以烧写到板子里运行的文件。这三个文件有什么区别呢?在这之前,先来一起回顾一下C语言编译的过程&a…

详解c++---模板(初阶)

这里写目录标题为什么会有模板函数模板如何解决类型不同而导致模板无法实例化的问题类的模板为什么会有模板 c语言在面对同一个功能不同的类型的数据时得创建出来多个不同名的函数来依次达到目的&#xff0c;比如说我们下面的代码&#xff1a; #include<stdio.h> int a…

计算机毕业设计ssm+vue基本微信小程序的手机预约维修系统

项目介绍 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势&#xff1a;对于电脑维修预约当然也不能排除在外,随着网络技术的不断成熟,带动了电脑维修预约,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活…

通俗理解数据治理之主数据

1. 定义 1&#xff09;国家标准GB/T 36073-2018 《数据管理能力成熟度评估模型》中对主数据的定义&#xff1a;主数据是组织中需 要跨系统、跨部门进行共享的核心业务实体数据。 2&#xff09;IBM 公司在其有关主 数据管理的红皮书《Master Data Manangement:Rapid Deploymen…

软件测试web自动化测试

今天目标 1、自动化相关概念 2、自动化相关环境搭建 3、元素定位 课程大纲 1.核心重点&#xff08;第二章&#xff09; 2,提高代码质量&#xff0c;自动化水平(第三、四、五、六章) 3.项目实战&#xff08;第七章&#xff09; 4.理论及环境与定位&#xff08;第一章&am…

Linux服务器读写python环境变量

在公司项目开发过程中&#xff0c;代码都是放在服务器中进行运行的&#xff0c;使用本地的idea工具连接到服务器。 如python开发中&#xff0c;将使用pycharm工具连接服务器&#xff0c;如下图所示&#xff1a; 在项目中有线上正式环境、测试环境等&#xff0c;都是用不同环境变…

[附源码]计算机毕业设计计算机相关专业考研资料管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【Keras+计算机视觉+Tensorflow】实现基于YOLO和Deep Sort的目标检测与跟踪实战(附源码和数据集)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一、YOLO目标检测算法 YOLO是端到端的物体检测深度卷积神经网络&#xff0c;YOLO可以一次性预测多个候选框&#xff0c;并直接在输出层回归物体位置区域和区域内物体所属类别&#xff0c;而Faster R-CNN仍然是采用R-CNN那种…

Windows 下Zookeeper 配置参数解读 和查看注册了哪些服务

zookeeper 配置文件解读 本地配置文件奉上: # The number of milliseconds of each tick tickTime2000 # The number of ticks that the initial # synchronization phase can take initLimit10 # The number of ticks that can pass between # sending a request and gett…

图像处理学习笔记-10-图像分割与边缘检测

图像分割的三大类方法&#xff1a;根据区域间灰度不连续搜寻区域之间的边界&#xff0c;在奇异性检测、边缘连接和边界检测介绍&#xff1b;以像素性质的分布进行阈值处理&#xff0c;在阈值处理介绍&#xff1b;直接搜寻区域进行分割&#xff0c;在基于区域的分割中介绍 奇异…

数据库、计算机网络,操作系统刷题笔记8

数据库、计算机网络&#xff0c;操作系统刷题笔记8 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&…

网站各个功能基本实现

1.前面已经介绍前后端的交互 2.今天实现网站功能的基本实现 也就是查询数据库。 网站类型为展示型网站。 页面如下&#xff1a; 点击政府公告显示&#xff1a; 点击机构设置显示&#xff1a; 后面不一一展示&#xff0c;主要实现六大功能的展示功能。 后续就实现管理员维…

PostgREST的安装部署(Windows和Linux环境)

下载地址&#xff1a;https://github.com/PostgREST/postgrest/releases 官方文档地址&#xff1a;Overview of Role System — PostgREST 9.0.0 documentation Windows 先下载对应系统的安装包&#xff1a; 下载之后解压会得到一个postgrest.exe可执行文件 创建配置文件&a…

解决 Android 开发过程中 出现 Duplicate class(包冲突)

1、现在大部分的项目都是支持 Androidx 的&#xff0c;所以出现 Duplicate 的时候 先把 gradle.properties 文件中添加参数&#xff0c;支持使用AndroidX android.useAndroidXtrue android.enableJetifiertrue 2、有些 *.jar/*.aar 不支持 AndroidX 的时候&#xff0c;将上面…

抽取_内插_半带滤波器_多相滤波器

文章目录半带滤波器多相抽取滤波器多相内插滤波器半带抽取器和半带内插器参考资料&#xff1a;Xilinx FIR Compiler v7.2 LogiCORE IP Product Guide PG149半带滤波器 半带滤波器的阶数为偶数&#xff0c;系数长度为奇数&#xff0c;且除了中间系数为0.5外&#xff0c;其余偶数…

mybatisplus 使用mybatis中的配置、mapper配置文件

1、在application.properties中配置mybatis的配置文件路径&#xff0c;例如&#xff1a; #指定mybatis-config.xml的位置 mybatis-plus.config-location classpath:mybatis/mybatis-config.xml 即在和application.properties同级目录下的mybatis目录中创建mybatis的配置文件m…

数制编码详解:二进制八进制十六进制的转换,原码、补码、反码、移码的定义

参考资料&#xff1a;《深入理解计算机网络&#xff08;王达&#xff09;》 文章目录一&#xff0c;数制1.1 基本数制1.2 不同数制之间的相互转换二&#xff0c;编码一&#xff0c;数制 1.1 基本数制 “数制”是“数据进制”的简称&#xff0c;也就是表示数据逢几进位的意思&a…

chatGPT的体验,是不是真智能?

目录 &#x1f3c6;一、前言 &#x1f3c6;二、安装 &#x1f3c6;三、普通对话 &#x1f6a9;1、chatGPT的ikun性 &#x1f6a9;2、chatGPT的日常对话 &#x1f3c6;四、实用能力 &#x1f3c6;五、代码改正 &#x1f3c6;六、写代码 &#x1f3c6;七、讲解代码 &#x1f3c6;…