进程同步与互斥

首先,我们看一个例子:进程P1、P2公用一个变量COUNT,初始值为0
在这里插入图片描述
在这里插入图片描述
P1、P2两个进程的执行顺序是随机的,P1、P2可能顺序执行或交错执行。
由图可见,不同的执行顺序,COUNT值会不同,这是不允许的。
在多道程序系统中,由于资源共享或进程合作,使进程间形成间接相互制约和直接相互制约关系,这需要用进程互斥与同步机制来协调两种制约关系。
(进程互斥:指在多道程序环境下,每次只允许一个进程对临界资源进行访问。进程同步:指多个相关进程在执行次序上的协调。)
临界区: 每个进程中访问临界资源的那段代码。
临界资源:在一段时间内只允许一个进程访问的资源。
虽然在多道程序系统中的诸进程可以共享各类资源,然而临界资源却是一次只能供一个进程使用,使用完后归还系统,才能给其他进程使用。(如上例变量COUNT是临界资源)。
进程对临界资源必须互斥使用,为实现对临界资源的互斥访问,应保证诸进程互斥地进入自己的临界区。为此,每个进程在进入其临界区前,必须先申请,经允许后方能进入。

同步机制应遵循的准则:

在这里插入图片描述

解决互斥的锁机制:

实现互斥的一种软件方法是采用锁机制,即提供一对上锁(Lock)和开锁(UnLock)原语,以及一个锁变量W。 进程进入临界区前,通过锁变量来判断临界资源是否被占用。

信号量机制

信号量机制是一种卓有成效的进程同步工具,被广泛应用于单处理机和多处理机系统,以及计算机网络中。
锁机制仅能表示“开”与“关”两种状态;开、关原语必须作为原子操作来进行;关锁原语中反复测试W状态,浪费了处理机的时间;锁机制只能解决互斥,不能用于同步。信号量同步机制能完满地解决上述问题,以下介绍经典信号量机制。

信号量和P、V操作

荷兰的著名计算机科学家Dijkstra把互斥的关键含义抽象成信号量(semaphore)概念,并引入在信号量上的P、V操作作为同步原语(P和V分别是荷兰文的“等待”和“发信号”两词的首字母)。信号量是个被保护的量,只有P、V操作和信号量初始化操作才能访问和改变它的值。
Dijkstra把信号量s定义为一个非负整型量。把信号量s上的P操作P(s)定义为:若s>0,则s值减1,否则执行进程等待,直到其他进程对s进行V操作。把信号量s上的V操作V(s)定义为:s值加1,若有进程在s上等待,则唤醒其中一个进程。
信号量和P、V操作原语可构成“阻塞-唤醒”同步机构:当一个进程对值为0的信号量执行P操作时便被阻塞以等待某个事件的出现;在另一进程检测到该事件发生时,通过执行V操作唤醒被阻塞的进程。在实现该同步机构时,可采取“忙等待”方式也可采取“让权等待”方式。在忙等待方式下,被阻塞进程在不主动放弃处理机的情况下忙碌等待着其他进程来唤醒它,显然这不利于处理机的有效利用。
让权等待方式,即当执行进程必须在某信号量上等待时,就将该进程变为等待状态,并将其插入与此信号量相关的等待队列中,以让出处理机给其他就绪进程。在单机系统中普遍采用让权等待方式。而在多机系统中,为减少进程状态变换而引起的开销,可采取忙等待方式。另外,在具体实现时通常要对Dijkstra的原定义进行改进。

(1)忙等待方式的P、V操作。

vars: integer;
  P(s) :while s≤ 0 do skip;
      s:=s-1V(s) :s:=s+1;

当一进程在值不大于0的信号量s上执行P操作时,将在循环语句while上陷入忙等待,直到其他进程在该信号量s上执行V操作后,解除它的等待。不难看出这种形式的P、V操作完全可用硬件指令来实现。
(2)让权等待方式的P、V操作。
采取这种方式需要对原信号量定义进一步扩充,把信号量由整型量扩充成为记录形式:

    type psem=semaphore
    semaphore=record
    value: integer;
    qucue: pointer to WQ;
    end

即信号量s是二元组s(v,q), v是信号量s的值,它是个整型量,q是指向s等待队列WQ的队首指针。于是P、V操作可分别描述为:

 procedure p (s);
       var s: psem;
       begin
         s.v:=s.v-1;
         if s.v<0 then block(s.q)
       end
procedure V (s);
 var s:psem;
   begin
       s.v:=s.v+1
       if s.v≤0 then wakeup(s.q)
   end

根据上述定义,P、V操作的物理意义可这样来看待。s.v>0表示某类资源的当前可用数。 每执行一次P操作意味着请求分配一个单位的资源,因此描述为s.v:=s.v-1; s.v≤0表示该类资源已不能供分配,因此请求资源的进程将被阻塞在等待队列s.q中,此时s.v的绝对值等于等待队列s.q中的进程数。
执行一次V操作意味着释放一个单位资源,故描述为:s.v:=s.v+1,若s.v≤0,表示在等待队列s.q中有因请求该资源不能满足而被阻塞的进程,因此唤醒等待队列s.q中的第一个或优先数最高的进程,允许其使用该资源。
P操作:意味着请求分配一个单位资源
在这里插入图片描述

V操作:意味着释放一个单位资源
在这里插入图片描述

互斥、同步例子

互斥例子:三个进程共用两个I/O缓冲区
解:设用信号量S表示共享资源,S初始值为2
在这里插入图片描述
同步例子:有A、B两进程,A进程从卡片机读信息入缓冲区,B进程负责加工读进缓冲区的卡片
解:设
信号量S1:缓冲区中有否可供加工的信息,初始值为0;
信号量S2:缓冲区是否为空,初始值为1;
在这里插入图片描述
在这里插入图片描述
在输入进程A中,可以把P(S2)调到V(S1)后面,而把信号量S2的初始值设为0。
用P-V操作描述前趋关系的例子:
信号量还可以描述程序或语句之间的前趋关系。
描述如下:
在这里插入图片描述

var a,b,c,d,e,f,g:=semaphore:=0000000;
 begin
     parbegin
          begin S1;V(a)V(b);end;
          begin P(a);S2;V(c)V(d);end;
          begin P(b);S3;V(e);end; 
          begin P(c);S4;V(f);end;
          begin P(d);S5;V(g);end;
          begin P(e)P(f)P(g);S6;end;
      parend 
end

生产者、消费者问题

生产者-消费者(Producer-Consumer)问题是著名的进程同步问题。它描述一组生产者向 一组消费者提供消息,它们共享一个有界缓冲池,生产者向其中投放消息,消费者从中取得消息。以 下用信号量解决生产者-消费者问题。
问题:
假如缓冲池中有n个缓冲区,每个缓冲区存放一个消息,可利用互斥信号量mutex使诸进程对缓冲池实现互斥访问;利用empty和full计数信号量分别表示空缓冲及满缓冲的数量。又假定这些生产者和消费者互相等效,只要缓冲池未满,生产者可将消息送入缓冲池;只要缓冲池未空,消费者可从缓冲池取走一个消息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其中,mutex,empty,full的初始值分别为1,n,0; 读者可以自行分析这两个进程如何实现同步。
欢迎大家加我微信交流讨论
在这里插入图片描述

进程的同步与互斥C语言
10-19
一个简单的有关于生产者和消费者问题的实例程序
进程同步互斥 生产者与消费者问题--操作系统大作业
12-17
### 进程同步互斥:生产者与消费者问题 #### 一、基础知识与概念解析 **1.1 操作系统的基本概念** 操作系统(Operating System, OS)是计算机系统的核心软件,负责管理和协调计算机硬件资源及软件资源。它通过...
【王道考研】进程同步互斥
qq_45495899的博客
11-28 727
2.3.1 进程同步互斥 知识来源: B站王道考研 什么是进程同步 知识回顾:进程具有异步性的特征。异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。 读进程和写进程并发地运行,由于并发必然导致异步性,因此“写数据”和“读数据”两个操作执行的先后顺序是不确定的。而实际应用中,又必须按照“写数据 --> 读数据”的顺序来执行的。 如果解决这种异步问题,就是“进程同步”所讨论的内容。 同步也称为直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调他
进程同步与进程互斥
yrx420909的博客
02-18 5799
1. 知识一览 同步、互斥问题 (1)什么是进程同步 (2)什么是进程互斥 2.什么是进程同步 进程具有异步性的特征。异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。 再看另一个例子:进程通信--------管道通信 读进程和写进程并发地运行,由于并发必然导致异步性,因此“写数据"和“读数据”两个操作执行的先后顺序是不确定的。而实际应用中,又必须按照“写数据≥读数据”的顺序来执...
进程的同步与互斥
taizhoufox的专栏
12-07 841
看Java的集合操作,有一些类是关于同步,另外一些非同步。一般来说非同步的效率高点。OS好长时间没看,一些基本的概念也忘的差不多了,惭愧,-_-!!!相互合作的两个进程之间需要在某个(些)确定点协调它们的工作,一个进程到达了该点后,除非另一进程已经完成了某些操作,否则就不得不停下来,等待这些操作的完成。这就是进程间的同步。两个进程由于不能同时使用同一临界资源,只能在一个进程使用完了
操作系统实验报告_进程同步互斥.doc
07-13
进程同步互斥实验报告 操作系统实验报告《进程同步互斥》实验的主要目的是掌握基本的进程同步互斥算法,了解生产者-消费者问题,并学习使用 Windows 2000/XP 中基本的同步对象,掌握相关 API 的使用方法。...
操作系统中进程同步互斥的实现.pdf
08-14
在深入探讨操作系统中进程同步互斥实现的机制之前,首先需要对进程的概念和特性有一个明确的了解。进程是操作系统中一个非常重要的概念,它代表了一个具有独立功能的程序在一个数据集合上的一次执行。进程具有五大...
进程的同步和互斥
天界程序员的博客
06-05 4950
1. 进程的同步   我们把异步环境下的一组并发进程因直接制约而互相发送消息、进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。具有同步关系的一组并发进程称为合作进程,合作进程间互相发送的信号称为消息或事件。 以下为简单示例: 2. 进程的互斥   两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象被称作进程互斥· 也就是说,一个进程正在访问临界资源,另一个要访问该资源的进程必须等待。 以下为简单示例: 3. 进程间制约
【操作系统进程同步互斥
最新发布
武帝为此的博客
01-29 1557
进程同步是指在多个进程执行过程中,为了防止数据的不一致性和资源的冲突,确保数据的完整性和一致性,系统对多个进程访问共享资源的顺序进行协调和控制的过程。简而言之,它是一种用于保证多个并发执行的进程能够在争夺共享资源时保持一致和协调状态的机制。互斥(Mutual Exclusion)指的是在任一时刻,只允许一个进程访问某个共享资源。这种机制确保当一个进程正在使用一个共享资源时,其他进程必须等待,直到该资源被释放。互斥的主要目的是防止多个进程同时对同一共享资源进行读写,从而避免数据不一致和冲突。
操作系统之四:进程的同步与互斥
喜欢喝椰奶的博客
04-06 4509
一、进程同步和进程互斥 1.1思维导图 1.2进程同步 1.3进程互斥 二、进程互斥的软件实现方法 2.1思维导图 2.2单标志法 2.3双标志先检查 2.4双标志后检查 2.5Peterson算法 三、进程互斥的硬件实现方法 3.1思维导图 3.2中断隐藏方法 3.3TestAndSet指令 3.4Swap指令 四、信号量机制 4.1思维导图 4.2概述 4.3整型信号量 4.4记录型信号量 五、用信号量机制实现进程互斥、同步、前驱关系 5.1思维导图 5.2实现进程互斥 5.3实现进程同步 5.4实现进
Unix环境下进程同步互斥技术探讨
资源摘要信息: 本资源主要涉及Unix环境下的进程同步互斥知识,包含了个人编写的程序代码文件jincheng.c,以及一个可能包含额外信息或说明的文本文件***.txt。进程同步互斥是操作系统中并发程序设计的核心概念,...
写文章

热门文章

  • 计算机操作系统|汤小丹|第四版|习题答案 47378
  • 双亲委派机制 26491
  • 机器学习 --- 朴素贝叶斯分类器 24082
  • 图像分类方法总结 21720
  • 数据库设计之概念结构设计 19960

分类专栏

  • 学习笔记 523篇
  • 努力学习C语言 116篇
  • 努力学习C++ 101篇
  • 技术文章 47篇
  • 努力学习机器学习 22篇
  • 努力学习数据库 92篇
  • EduCoder Python 18篇
  • Ubuntu 76篇
  • 努力学习云计算 1篇
  • 大数据原理 11篇
  • 努力学习java 114篇
  • Windows 7篇
  • 努力学习人工智能 99篇
  • C语言笔记 1篇
  • 努力学习数据结构 37篇
  • 努力学习数据可视化 3篇
  • 努力学习计算机操作系统 58篇
  • 努力学习SSM 52篇
  • 努力学习计算机网络 2篇
  • 努力学习redis 2篇
  • 算法 5篇
  • 统计学习方法 2篇
  • 安卓开发 14篇

最新评论

  • C 语言实例 - 字符串中各种字符计算

    CSDN-Ada助手: 不知道 C 技能树是否可以帮到你:https://edu.csdn.net/skill/c?utm_source=AI_act_c

  • 股票价格趋势预测与量化投资案例可视化演示系统(附代码)

    程子的小段: 方便留个邮箱吗?

  • 股票价格趋势预测与量化投资案例可视化演示系统(附代码)

    seeseaXi: 博主很厉害!!!请问一下您这边的数据附件还在吗方便发一份给我吗?

  • 数据库系统概论第五版课后习题答案王珊

    王康宁快快跑: 第六章的678小题好像没有呜呜呜

  • C 语言实例 - 字符串翻转

    2401_85633571: reverse是反转函数

最新文章

  • C 语言实例 - 字符串中各种字符计算
  • C 语言实例 - 查找字符在字符串中出现的次数
  • C 语言实例 - 计算字符串长度
2024
08月 4篇
07月 10篇
06月 8篇
05月 20篇
04月 36篇
03月 32篇
02月 12篇
01月 33篇
2023年137篇
2022年305篇
2021年174篇
2020年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程子的小段

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家黑龙江广场玻璃钢雕塑兰溪玻璃钢雕塑厂家泉州玻璃钢石雕塑艺品厂家开福玻璃钢造型雕塑玻璃钢小羊雕塑武陵玻璃钢花盆花器魏都玻璃钢雕塑费用湛江玻璃钢雕塑厂动物玻璃钢雕塑出售肇庆玻璃钢雕塑销售方法金华玻璃钢雕塑工艺品厂家玻璃钢瓜果雕塑现货供应淮安玻璃钢马雕塑设计玻璃钢雕塑未打磨昆明玻璃钢雕塑造型厂家户外玻璃钢人物雕塑定做商场美陈抱抱熊气球教程岑溪玻璃钢伟人像雕塑泰州设计玻璃钢雕塑报价江苏人物玻璃钢雕塑生产厂家小型玻璃钢花盆生产台州抽象玻璃钢雕塑订做价格黄冈玻璃钢花盆小区玻璃钢鹿雕塑杭州玻璃钢人物雕塑制作常州商场美陈装饰玻璃钢动物雕塑造型河源优惠的玻璃钢雕塑遵义玻璃钢景观雕塑景观小品四川商场节庆美陈雕塑加工香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化