操作系统高级议题:并发控制与进程互斥技术

news2024/11/18 2:28:18


✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭
~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Srlua小谢,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:操作系统

欢迎访问我的主页:Srlua小谢 获取更多信息和资源。✨✨🌙🌙

目录

进程的同步和互斥

竞争条件

临界资源和临界区

1.临界资源和临界区

临界区

2.进程进入临界区的一般结构

3.临界区进入准则(安全使用临界资源)

进程互斥与同步的概念

1.同步(接力赛、工业生产流水线)

2.互斥

小练

实现互斥的方式

1.利用硬件方法解决进程互斥问题

2.利用软件方法解决进程互斥问题    

3.原语

信号量

1.整型信号量

典型的P和V操作的伪代码如下

 2.结构型信号量(记录型信号量)

P操作的定义如下:

V操作的定义如下: 

设结构型信号量S

信号量的值与相应资源的使用情况有关

3.二值信号量

信号量的一般应用

1.用信号量实现进程互斥

利用信号量实现互斥的一般模型是:

2.用信号量实现进程简单同步


进程的同步和互斥

由于进程的异步性,在争用资源时,常会出现以下的问题:

系统混乱、数据处理的不可再现性。

为了使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性,必须提供进程同步机制。

进程的相互关系主要分为如下三种形式:

① 互斥:竞争关系

② 同步:协作关系

③ 通信:信息交流

竞争条件

分析两个进程共用同一表格的情况:假定进程Pa负责为用户作业分配打印机,进程Pb负责释放打印机。系统中设立一个打印机分配表,由各个进程共用。

分配表中相关信息项的值是与两个进程运行的时间顺序直接相关。

两个或多个进程同时访问和操纵相同的数据时,最后的执行结果取决于进程运行的精确时序,这种情况称做竞争条件(Race Condition)

随着内核数目的增加,并行性增加了,于是竞争条件也变得更常见。

为保障执行结果的唯一性,必须采取另外的措施。 

临界资源和临界区

1.临界资源和临界区

一次仅允许一个进程使用的资源称为临界资源(Critical Resource)。

如:进程A、B共享一台打印机,若让它们交替使用, 则得到的结果肯定不是我们希望的。

临界资源可能是硬件,也可能是软件:变量,数据,表格,队列等。

并发进程对临界资源的访问必须作某种限制,否则就可能出与时间有关的错误,如:联网售票。

临界区

在每个进程中访问临界资源的那段程序叫做临界区(Critical Section),简称CS区。

各进程要互斥地进入自己的临界区。

【注意】:临界区是对某一临界资源而言的,对于不同临界资源的临界区,它们之间不存在互斥。

例如:有程序段A、B是关于变量X的临界区,而C、D是关于变量Y的临界区,那么,A、B之间需要互斥执行,C、D之间也要互斥执行,而A与C、B与D之间不用互斥执行。

2.进程进入临界区的一般结构

进程互斥进入临界区都要遵循一种通用模式:

进入前要申请, 获准后方可进入; 执行后要退出 (释放) , 然后才可以执行其他代码

3.临界区进入准则(安全使用临界资源)

① 单个进入。如果若干进程要求进入空闲的临界区,一次仅允许一个进程进入。(空闲让进)

② 独自占用。任何时候,处于临界区内的进程不可多于一个。 (忙则等待)

③ 尽快退出。进入临界区的进程要在有限时间内退出。  (有限等待)

④ 避免忙等。如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。(让权等待)

进程互斥与同步的概念

1.同步(接力赛、工业生产流水线)

定义 :逻辑上相关的一组并发进程为完成一项任务,通过协调活动来使用共有资源而产生的执行时序的约束关系。

  • 相互合作关系
  • 直接相互制约

2.互斥

定义:逻辑上无关的多个进程由于竞争临界资源而发生的相互制约的关系。

它们的运行不具有时间次序的特征:谁先向系统提出申请,谁就先执行

  • 相互竞争关系,其资源具有独占型
  • 间接相互制约    

同步和互斥的实质都是对进程在执行时序上的某种限制 ,广义上,互斥是一种特殊的同步。

进程同步:指多个相关进程在执行次序上协调。用于保证这种关系的相应机制称为进程同步机制。

小练

说明下列活动是属于哪些制约关系?(同步/互斥)

1)若干同学去图书馆借书
这项活动通常可以同步进行,因为多个同学可以同时在图书馆选择和借阅不同的书籍,除非特定书籍的数量有限,此时可能出现互斥关系,即一位同学正在借阅的书籍不能被其他同学同时借阅。但在大多数情况下,这属于同步关系。

2)两队进行篮球比赛
篮球比赛中的两队是在同一时间进行比赛的,他们之间的活动是同步的。但场上的队员之间存在互斥关系,比如同一时刻一个篮球只有一个队员可以控制。

3)流水线生产中的各道工序
流水线上的各道工序通常是设计为连续和同步进行的,每一道工序完成后,产品会移动到下一个工序。这里的制约关系是同步的,因为每个工序都需要前一个工序完成后才能开始。

4)商品生产和社会消费
商品生产和社会消费是相互依赖的活动,它们可以同步进行。生产出的商品需要消费者购买和使用,而消费者的消费需求又促进商品的生产。然而,在某些情况下,如果商品供不应求或者过剩,可能会出现制约(比如生产速度跟不上消费速度,或消费能力不足以吸纳生产出的商品),但这些更多是由市场供需关系决定的,而不是活动本身的制约关系。因此,这通常也属于同步关系。

综上所述,活动的制约关系如下:

1)若干同学去图书馆借书 —— 无特定制约关系。

2)两队进行篮球比赛 —— 同步。

3)流水线生产中的各道工序 —— 互斥。

4)商品生产和社会消费 —— 同步。

实现互斥的方式

实现机制方面来说,分为:

  • 硬件方法
  • 软件方法

1.利用硬件方法解决进程互斥问题

(1)禁止中断:进程进入临界区后立即关闭中断,即将离开之前开放中断。

(2)专用机器指令:利用TSL指令解决进程互斥进入临界区问题

2.利用软件方法解决进程互斥问题    

为每类临界区设置一把锁(W),该锁有打开和关闭两种状态。

  • 关锁原语lock (W):      

           while (W==1);      

           W=1;

  • 开锁原语unlock (W):      

           W =0;

 A、B两个进程互斥使用一台打印机,W初值为0

3.原语

是机器指令的延伸,往往是为完成某些特定的功能而编制的一段系统程序。原语操作也称做“原子操作”(atomic action),即一个操作中的所有动作要么全做,要么全不做。

执行原语操作时,要屏蔽中断,以保证其操作的不可分割性。

如P、V操作等。 

信号量

1965年,荷兰学者E.W.Dijkstra提出。  

  1. 整型信号量 (多用于进程互斥, 忙式等待)  
  2. 结构型信号量(多用于进程同步,让权等待)
  3. 二值信号量(只有0、1两个值)    

现在,信号量机制已广泛应用于单处理机、多处理机及计算机网络中。

1.整型信号量

除初始化外,仅能通过两个标准的原子操作来访问。 两个原子操作为:P操作、 V操作

P操作最初源于荷兰语proberen,表示测试;

V操作源于荷兰语verhogen,表示增加。

有些书上将P操作称做wait或者DOWN操作,将V操作称做signal或者UP操作。

典型的P和V操作的伪代码如下

以上操作均为不可中断的原语操作

利用信号量实现互斥

设置一互斥信号量mutex,初值为1,然后将各进程的CS置于P(mutex)V(mutex)之间即可。

 2.结构型信号量(记录型信号量)

因其采用了结构型的数据结构而得名。

整型信号机制使进程处于“忙式等待”状态,消耗CPU时间。结构型信号量采取“让权等待”策略

没有特殊说明,凡称信号量就指结构型信号量。

结构型信号量一般是由两个成员组成的数据结构。其中一个成员是整型变量,表示该信号量的值;另一个是指向PCB的指针。

P操作的定义如下:

V操作的定义如下: 

在具体实现时应注意,P, V操作都应作为一个整体实施,不允许分割或相互穿插执行

设结构型信号量S

物理意义:   S.Value的初值为系统中某类资源的总数(资源信号量),为1时即临界资源                   (此时的信号量为互斥信号量)

S.Value>0: 某类可用资源的数量。

S.Value<=0: 无资源可用,|S.Value|表示等待队列中的进程数。  

P(S):请求分配一个单位的资源。  

V(S):释放一个单位资源、唤醒等待队列中的进程。

信号量的值与相应资源的使用情况有关

对信号量的操作有如下严格限制:

1. 信号量可以赋初值,且初值为非负数。

2. 信号量的值可以修改,但只能由P和V操作来访问

3.二值信号量

  • 结构型信号量的取值可以是正数、0或者负数
  • 二值信号量的值只能是0或1

信号量的一般应用

1.用信号量实现进程互斥

利用信号量实现互斥的一般模型是:

使用P, V操作实现互斥时应注意两点:

① 在每个程序中用于实现互斥的P(mutex)和V(mutex)必须成对出现,即先做P,进入临界区;后做V,退出临界区。

② 互斥信号量mutex的初值一般为1。

2.用信号量实现进程简单同步

供者和用者间要交换两个消息:缓冲区空和缓冲区满的状态。

设置两个信号量:

  • S1表示缓冲区是否空(0表示不空,1表示空)。
  • S2表示缓冲区是否满(0表示不满,1表示满)。

规定S1和S2的初值分别为1和0 

用P和V操作实现同步时应注意

① 分析进程间的制约关系,确定信号量种类。

② 信号量的初值与相应资源的数量有关,也与P, V操作在程序代码中出现的位置有关。

③ 同一信号量的P, V操作要“成对”出现,但是,它们分别出现在不同的进程代码中。 

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

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

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

相关文章

【Python】学习率调整策略详解和示例

学习率调整得当将有助于算法快速收敛和获取全局最优&#xff0c;以获得更好的性能。本文对学习率调度器进行示例介绍。 学习率调整的意义基础示例无学习率调整方法学习率调整方法一多因子调度器余弦调度器 结论 学习率调整的意义 首先&#xff0c;学习率的大小很重要。如果它…

软件测试技术之登录页面测试用例的设计方法

相信大家都有过写登录测试用例的经验&#xff0c;相较于开发人员编写代码而言&#xff0c;测试人员编写用例同样重要。本文作者总结了一些关于登录用例的经验。 一、功能测试用例设计&#xff1a; 1、正常登录场景 测试用例1&#xff1a;输入正确的用户名和密码&#xff0c;验证…

对于提高Web安全,WAF能有什么作用

数字化时代&#xff0c;网络安全已经成为了一个不可忽视的重要议题。网络攻击事件频发&#xff0c;各种安全隐患层出不穷&#xff0c;如何有效地保护我们的网络空间&#xff0c;确保信息安全&#xff0c;已成为一项迫切的任务。而Web应用防火墙&#xff0c;正是守护网络安全的一…

GitHub学生认证

文件、证明之类的一定要用英文。 我先是用有道网页翻译把学信网的报告翻译成了英文&#xff0c;然后截图传上去&#xff0c; 给我这个答复 所以要先2FA认证、支付信息填好。 2FA认证&#xff1a;Github开启2FA双重验证 - 知乎 (zhihu.com) 支付信息&#xff1a;点击Setting…

找茬游戏小程序源码系统:封面广告+插屏广告 自带流量主低成本 带完整的安装代码包以及搭建教程

近年来&#xff0c;小程序市场持续火爆&#xff0c;各类小程序层出不穷。找茬游戏小程序作为其中的一种&#xff0c;以其独特的游戏形式和良好的用户体验&#xff0c;吸引了大量用户。然而&#xff0c;对于许多开发者和商家来说&#xff0c;开发一款高质量的找茬游戏小程序并非…

无人车+工厂车间集成无缝,这款网关产品了解一下

​诸位朋友们,大家好!今天给大家介绍一款引领工业无人化发展的黑科技 —— 星创易联科技的SV900-5G车载网关。 相信大家对无人驾驶技术都很感兴趣,它代表着未来出行和生产的全新方式。而要实现真正的"无人化",离不开无人车网关这个智能大脑的作用。SV900就是一款专为…

Openlayers 入门教程(一):应该如何学习 Openlayers

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

联机分析处理技术

目录 一、OLAP概述&#xff08;一&#xff09;OLAP的定义&#xff08;二&#xff09;OLAP的12条准则&#xff08;三&#xff09;OLAP的简要准则&#xff08;四&#xff09;OLAP系统的基本结构 二、OLAP的多维分析操作&#xff08;一&#xff09;切片&#xff08;二&#xff09;…

电脑访问网页获取路由器WAN口内网IP

因为运维过程中容易出现路由器配置了固定IP但是没人知道后台密码&#xff0c;不确定这个办公室的IP地址&#xff0c;且使用tracert路由追踪也只会出现路由器的LAN口网关并不会出现WAN口IP。 今日正好遇到了个好方法&#xff0c;经过测试可以正常使用。 方法如下&#xff1a; 内…

O2OA(翱途)开发平台-快速入门开发一个门户实例

O2OA(翱途)开发平台[下称O2OA开发平台或者O2OA]拥有门户页面定制与集成的能力&#xff0c;平台通过门户定制&#xff0c;可以根据企业的文化&#xff0c;业务需要设计符合企业需要的统一信息门户&#xff0c;系统首页等UI界面。本篇主要介绍通过门户管理系统如何快速的进行一个…

宝宝洗衣机哪个牌子质量好?四大高热度婴儿洗衣机不容错过

相信大部分的用户家里都会备有一台传统的大型洗衣机&#xff0c;不过&#xff0c;如果家里有了初生的婴儿的话&#xff0c;细心的宝爸宝妈还是会为了宝宝的衣物的卫生&#xff0c;而选择分开单独清洗宝宝的衣物&#xff0c;并且很多宝爸宝妈都会自己手工洗。由于刚出生的宝宝的…

Java 基础学习(二十)Maven、XML与WebServer

1 Maven 1.1 什么是Maven 1.1.1 Maven概述 Maven是一种流行的构建工具&#xff0c;用于管理Java项目的构建&#xff0c;依赖管理和项目信息管理。它使用XML文件来定义项目结构和构建步骤&#xff0c;并使用插件来执行各种构建任务。Maven可以自动下载项目依赖项并管理它们的…

I/O(输入/输出流的概述)

文章目录 前言一、流的概述二、输入/输出流 1.字节/字符输入流2.字节/字符输出流总结 前言 在变量、数组和对象中储存的数据是暂时的&#xff0c;程序结束后它们就会丢失。如果想要永久地储存程序创建的数据&#xff0c;需要将其保存在磁盘文件中&#xff0c;这样就可以在程序中…

Pillow教程07:调整图片的亮度+对比度+色彩+锐度

---------------Pillow教程集合--------------- Python项目18&#xff1a;使用Pillow模块&#xff0c;随机生成4位数的图片验证码 Python教程93&#xff1a;初识Pillow模块&#xff08;创建Image对象查看属性图片的保存与缩放&#xff09; Pillow教程02&#xff1a;图片的裁…

《探索移动开发的未来之路》

移动开发作为当今科技领域中最为炙手可热的领域之一&#xff0c;正以惊人的速度不断迭代和发展。从技术进展到应用案例&#xff0c;再到面临的挑战与机遇以及未来的趋势&#xff0c;移动开发都呈现出了令人瞩目的发展前景。本文将围绕移动开发的技术进展、行业应用案例、面临的…

定义类强化——移动的圆

1.构造一个Location类&#xff1a; 1)该类有两个double型私有成员变量x和y&#xff0c;分别表示横坐标和纵坐标&#xff1b; 2)该类有一个有参构造方法&#xff0c;能初始化成员变量x和y&#xff1b; 3)该类具有成员变量的x和y的访问方法和赋值方法。 2.构造一个Circle类&a…

30---SDRAM电路设计

视频链接 SDRAM电路设计01_哔哩哔哩_bilibili SDRAM电路设计 1、SDRAM简介 SDRAM&#xff1a;Synchronous Dynamic Random Access Memory&#xff0c;同步动态随机存储器。 同步是指其时钟频率和CPU前端总线的系统时钟相同&#xff0c;并且内部命令的发送与数据的传输都以…

【保姆级讲解如何Stable Diffusion本地部署】

&#x1f308;个人主页:程序员不想敲代码啊&#x1f308; &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f3c6; &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提…

基于Java的校园疫情防控管理系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生2.2 老师2.3 学校管理部门 三、系统展示四、核心代码4.1 新增健康情况上报4.2 查询健康咨询4.3 新增离返校申请4.4 查询防疫物资4.5 查询防控宣传数据 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBoot…

基于nodejs+vue饮食分享平台python-flask-django-php

本系统采用了nodejs语言的express框架&#xff0c;数据采用MySQL数据库进行存储。进行开发设计&#xff0c;功能强大&#xff0c;界面化操作便于上手。本系统具有良好的易用性和安全性&#xff0c;系统功能齐全&#xff0c;可以满足饮食分享管理的相关工作。 前端技术&#xff…