利用记录型信号量机制: wait(s), signal(s)解决进程同步问题
wait(s) 等价与P操作, signal(s)等价于V操作
生产者-消费者问题
int in = 0, out = 0;
item buffer[n];
semaphore mutex = 1, empty = n, full = 0;
void procuder() {do {procuder an item nextp;...wait(empty);//表示空缓冲区-1;wait(mutex);//数据缓冲区互斥访问,关闭访问;buffer[in] = nextp;in = (in+1) % n;signal(mutex);//打开访问signal(full);//满缓冲区加+1} while (true);
}void consumer() {do {wait(full);//判断是否有满缓冲区,满缓冲区-1wait(mutex);nextc = buffer[out];out = (out+1) % n;signal(mutex);siganl(empty);//空缓冲区+1consumer the item in nextc;....} while (true);
}void main() {cobeginproducer(); consumer();coend
}
爸爸妈妈洗水果,儿子女儿吃水果问题
问题描述:爸爸专向盘中放苹果,妈妈专向盘中放橘子,儿子专等吃盘里的橘子,女儿专等吃盘里的苹果。只要盘子空,爸爸妈妈可向盘中放水果,仅当盘中有自己需要的水果时,儿子或女儿可从中取出,请给出他们四人之间的同步关系,并用PV操作实现四人正确活动的程序。。使用p、v操作来完成父亲、妈妈、儿子、女儿的同步行为模拟。
semaphore putmutex = 1, getmutex = 0;
semaphore empty = 1, apple = 0, orange = 0;
void father() {do {wait(putmutex);apple++;empty--;signal(putmutex);} while (true);
}
void mother() {do {wait(putmutex);orange++;empty--;signal(putmutex);} while (true);
}
void son() {do {wait(getmutex);orange--;empty++;signal(getmutex);} while (true);
}
void daughter() {do {wait(getmutex);apple--;empty++;signal(getmutex);} while (true);
}
void main() {cobeginfather(); mother(); son(); daughter();coend
}
此外 ,可参考java的实现:http://www.cnblogs.com/zyp4614/p/6555530.html
司机,售票员问题
问题:
司机开车,售票员售票。当售票员将门关上的时候司机才可以开车,当司机将车到站停下的时候,售票员才可以打开车门。
对S1(门): 门有两个状态,开和关。售票员将门关上之后,应该将门的操作权给司机(因为只有司机到站了才能停车)。因此0为门开着状态。
对S2(车):两个状态,开车行驶和到站停车。当车开的时候,需要申请车的资源,即用wait,则车在停着的时候状态为1,行驶时状态为0.
司机:开车,正常行驶,到站停车
售票员:关门,售票,开门
S1表示是否允许司机启动汽车;S1 = 1表示可以启动,S2 = 0表示不能启动。
S2表示是否允许售票员关车门;S2 = 1表示允许售票员关车门,S2 = 0表示不允许售票员关车门。
semaphore s1 = 1, s2 = 0;
void driver() {do {wait(s1);// P(S1)开车;正常行驶;到站停车;signal(s2);//V(S2)} while (true);
}
void seller() {do {关门;signal(s1);// V(S1)售票;wait(S2);//P(S2)开车门;上下乘客;} while (true);
}
void main() {cobegindriver(); seller();coend
}
可参考博客: http://m.blog.csdn.net/Y_215/article/details/53467517
转载于:https://www.cnblogs.com/ToBeOrNotToBe/p/7125010.html
利用记录型信号量机制: wait(s), signal(s)解决进程同步问题相关推荐
- 利用记录型信号量解决不会出现死锁的哲学家就餐问题
试利用记录性信号量写出一个不会出现死锁的哲学家进餐问题的算法 规定在拿到左侧的筷子后,先检查右面的筷子是否可用.如果不可用,则先放下左侧筷子, 等一段时间再重复整个过程. 分析:当出现以下情形,在某一 ...
- 操作系统 第二章【记录型信号量机制、独木桥问题】【MOOC答案】
目录 第1题 第2题 第3题 第4题 第1题 1( 30分 ) 简述生产者消费者问题的解决方案,并说明用记录型信号量机制解决生产者消费者问题时Wait()操作的次序不当会在什么情况下引发死锁. 得分指 ...
- 试利用记录型信号量和pv操作写出_计算机操作系统知识点汇总
1.基本特征 (1)并发:并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令.操作系统通过引入进程和线程使得程序能够并发运行: (2)共享:共享是指系统中的资源可以被多个并 ...
- 试利用记录型信号量和pv操作写出_腰椎间盘突出症病理分型中,退变型、膨出型、突出型约占该病的百分比?...
腰椎间盘突出症病理分型中,退变型.膨出型.突出型约占该病的百分比? 下列属于图画书的艺术特征的是()A:构图的连续性B:形象的直观性C:画面的趣味性D:整体的传达性 决定骨断裂抵抗力和变形特征的主要因 ...
- 试利用记录型信号量和pv操作写出_中考热点,几何操作型问题求解策略,值得关注...
操作型问题能让学生经历观察,操作,实验,猜想,验证的探究过程.不仅能考查学生的空间观念,对图形的认识,图形的变换,图形的设计,图形的直觉判断能力,而且还能考查学生的分析综合,抽象概括逻辑推理的能力,是 ...
- 试利用记录型信号量和pv操作写出_三门峡c型槽钢抗震支架安装
抗震支架施工组织设计方案目录章编制依据第二章工程概述第三章施工目标第四章施工组织第五章施工工序及主要施工工艺第六章保证措施及技术第七章安全文明施工措施章编制依据甲方提供图纸及抗震支架设计图纸:公司现行 ...
- 2.3.4 操作系统之信号量机制(整型信号量、记录型信号量P、V)
文章目录 0.思维导图 1.为什么引入信号量机制? 2.什么是信号量机制? 3.整型信号量 4.记录型信号量 (1)举一个生动形象的例子了解记录型信号量 (2)梳理一下记录型信号量的知识点(P.V) ...
- (王道408考研操作系统)第二章进程管理-第三节4:信号量机制(整型、记录型信号量和P、V操作)
文章目录 一:信号量是什么 二:整型信号量 三:记录型信号量 可以看出,不管是进程互斥的软件实现方法还是硬件实现方法,他们都无法解决"让权等待"这个问题,也即处理会处于会处于忙等状 ...
- 写出记录型信号量中的wait操作代码_操作系统进程的同步与互斥及经典同步与互斥问题...
概览 临界区临界区的引入 在系统当中,有些资源允许多个进程共享(磁盘),有些资源只允许进程单独使用(打印机,共享变量).为了让进程单独使用资源而不受其他进程干扰引入了临界区的概念. 临界区的概念 在一 ...
最新文章
- C指针7:指针作为函数返回值
- 文件 单片机_单片机C语言编程中reg52.h头文件的作用
- generator (2)
- Go三种方式创建赋值map
- 树莓派摄像头基本操作
- java8自定义收集器_使用自定义收集器进行Java 8分组?
- linux 所有命令无法使用
- python中函数startswith的用法_Python中用startswith()函数判断字符串开头的教程
- linux5.5 分辨率,Linux Kernel 5.5 正式发布
- 3. 逻辑漏洞之支付漏洞
- PMP学习系列5:PMBOK(5th)第三章-项目管理过程
- 鞍山楷邦计算机学院,计算机专业和平面设计专业是一个专业不?
- 阿里云助贫困大学生用技能点亮人生
- 微软内部补丁(非正式发布)之取得方式(20110713)
- 学习PLC要学哪些知识?
- 删除可恶的7654.com,7654导航篡改首页恢复,如何解决浏览器被7654劫持
- outlook 您的组织策略阻止我们为您完成此操作 解决办法
- LittleVGL体验记录
- C++ 笔试面试题 ~[有答案]
- 用计算机管理学生成绩,北京计算机大学组织专家对《学生成绩管理系统》的需求方案进行评审,为使参会人员对会议流程和内容有一个清晰的了解_题来了...
热门文章
- 从菜鸟成为数据科学家的养成方案
- 在场景中输出横向或纵向压缩的中文字符
- bash: ./make_ext4fs: No such file or directory 错误解决方法
- [目录]Linux 核心系统命令目录
- Java不要放弃之路
- delphi 调 web api_小程序web同构Kbone
- android多语言编码格式,在Android中使用国家/地区代码以编程方式更改语言
- 阿里云峰会 | AI搜题加速在线教育行业场景创新
- “宜小搭”萌新报到,请多关照!
- 一文读懂人类信息存储进化史