信号量的PV操作(例题)
更新时间:2023-12-29 06:38:01 阅读量: 教育文库 文档下载
???信号量的PV操作是如何定义的?试说明信号量的PV操作的物理意义。 参考答案:P(S):将信号量S减1,若结果大于或等于0,则该进程继续执行;若结果小于0,则该进程被阻塞,并将其插入到该信号量的等待队列中,然后转去调度另一进程。
V(S):将信号量S加1,若结果大于0,则该进程继续执行;若结果小于或等于0,则从该信号量的等待队列中移出一个进程,使其从阻塞状态变为就绪状态,并插入到就绪队列中,然后返回当前进程继续执行。
PV操作的物理含义:信号量S值的大小表示某类资源的数量。当S>0时,其值表示当前可供分配的资源数目;当S<0时,其绝对值表示S信号量的等待队列中的进程数目。每执行一次P操作,S值减1,表示请求分配一个资源,若S≥0,表示可以为进程分配资源,即允许进程进入其临界区;若S<0,表示已没有资源可供分配,申请资源的进程被阻塞,并插入S的等待队列中,S的绝对值表示等待队列中进程的数目,此时CPU将重新进行调度。每执行一次V操作,S值加1,表示释放一个资源,若S>0,表示等待队列为空;若S≤0,则表示等待队列中有因申请不到相应资源而被阻塞的进程,于是唤醒其中一个进程,并将其插入就绪队列。无论以上哪种情况,执行V操作的进程都可继续运行。
1、设公共汽车上,司机和售票员的活动分别是:
司机的活动:启动车辆; 正常行车; 到站停车; 售票员的活动:
关车门; 售票; 开车门;
在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?用P、V操作实现它们的同步。
设两个信号量S和C,初值为S=0;C=0;
司机: L1: 正常行车 售票员: L2: 售票
到站停车 P(S) V(S) 开车门 P(C) 关车门 启动开车 V(C) GO TO L1 GO TO L2
2、请用PV操作实现他们之间的同步关系:
(1)桌上一个盘子,只能放一只水果。爸爸放苹果,妈妈放桔子,儿子只吃桔子,女儿只吃苹果。
(2)桌上一个盘子,只能放一只水果。爸爸放苹果,妈妈放桔子,儿子吃桔子、苹果。 参考答案:
第一步:确定进程
4个进程Father(爸爸)、Mother(妈妈)、Son(儿子)、Daughter(女儿) Father进程:
? 将苹果放入盘中
Mother进程:
? 将桔子放入盘中 Son进程:
? 从盘中取出桔子 ? 吃桔子 Daughter进程:
? 从盘中取出苹果 ? 吃苹果
第二步:确定进程的同步、互斥关系
? 同步:Father当盘中无水果时,才可以将苹果放入盘中 ? 同步:Mother当盘中无水果时,才可以将桔子放入盘中 ? 同步:Son当盘中有桔子时,才可以从盘中取出桔子
? 同步:Daughter当盘中有苹果时,才可以从盘中取出苹果
第三步:设置信号量
? 盘中无水果,Sp,初值1 ? 盘中有桔子,So,初值0 ? 盘中有苹果,Sa,初值0
第四步:用伪代码描述
begin
Sp,So,Sa:semaphore; Sp :=1; So :=0; Sa :=0;
cobegin
Father ( ); Mother ( ); Son ( );
Daughter ( ); coend; end;
process Father ( ) begin
L1: P(Sp);
将苹果放入盘中; V(Sa); goto L1; end;
process Mother ( ) begin
L2: P(Sp);
将桔子放入盘中; V(So);
goto L2; end;
process Son ( ) begin
L3: P(So);
从盘中取出桔子; V(Sp) 吃桔子; goto L3; end;
process Daughter ( ) begin
L4: P(Sa);
从盘中取出苹果; V(Sp) 吃苹果; goto L4; end;
(2)
第一步:确定进程
3个进程Father(爸爸)、Mother(妈妈)、Son(儿子) Father进程:
? 将苹果放入盘中 Mother进程:
? 将桔子放入盘中 Son进程:
? 从盘中取出水果(桔子或苹果) ? 吃水果(桔子或苹果)
第二步:确定进程的同步、互斥关系
? 同步:Father当盘中无水果时,才可以将苹果放入盘中 ? 同步:Mother当盘中无水果时,才可以将桔子放入盘中
? 同步:Son当盘中有水果(桔子或苹果)时,才可以从盘中取出水果
第三步:设置信号量
? 盘中无水果,empty,初值1 ? 盘中有水果(桔子或苹果),full,初值0
第四步:用伪代码描述
begin
empty, full:semaphore; empty:=1; full :=0;
cobegin
Father ( ); Mother ( ); Son ( ); coend; end;
process Father ( ) begin
L1: P(empty); 将苹果放入盘中; V(full); goto L1; end;
process Mother ( ) begin
L2: P(empty); 将桔子放入盘中; V(full); goto L2; end;
process Son ( ) begin
L3: P(full); 从盘中取出水果; V(empty); 吃水果; goto L3; end;
3. 某工厂有一个可以存放设备的仓库,总共可以存放10台设备。生产的每一台设备都必
须入库,销售部门可从仓库提出设备供应客户。设备的入库和出库都必须借助运输工具。现只有一台运输工具,每次只能运输一台设备。请设计一个能协调工作的自动调度管理系统。
参考答案:
第一步:确定进程
可以为入库(Pin)和出库(Pout)各设置一个进程 Pin进程:
? 生产了一台设备 ? 使用运输工具入库 Pout进程:
? 使用运输工具出库
? 提出设备供应客户
第二步:确定进程的同步、互斥关系
? 同步:当仓库中有空余位置存放设备时,设备才可以入库 ? 同步:当仓库中有存放的设备时,设备才可以出库 ? 互斥:运输工具是临界资源,要互斥访问
第三步:设置信号量
? 仓库中有空余位置数量,empty,初值10 ? 仓库中有存放的设备数量,full,初值 0
? 为运输工具设置互斥信号量S,初值 1,表示当前可用
第四步:用伪代码描述
begin
empty, full, S:semaphore; empty := 10;
full := 0; S := 1; cobegin Pin (); Pout (); coend; end;
process Pin ( ) begin
L1: 生产了一台设备 ;
P(empty);
P (S);
使用运输工具入库; V (S);
V(full); goto L1; end;
process Pout ( ) begin
L2: P(full);
P (S);
使用运输工具出库; V (S); V(empty);
提出设备供应客户;
goto L2; end;
4、写者优先的“读者――写者”问题:
Sin, Sout, seat:semaphore; seat :=100; Sin := 1; Sout := 1;
cobegin
process Reader-i ( i = 1,2,…,n ); begin
P(seat); P(Sin);
登记; V(Sin); 进入阅览室; 读书;
离开阅览室; P(Sout); 注销;
V(Sout);
V(seat); end coend; end;
17、设一个机票订购系统有n个售票处,每个售票处通过网络终端访问系统的公共数据区,假定公共数据区中的一些单元Aj(j=1,2,……)分别存放各次航班的余票数,售票时,若某次航班还有余票,则售给乘客,否则,拒绝售票。请用信号量的PV操作实现各售票进程的并发执行。
解: 设Pi(i=1,2,…,n)表示各售票处的售票处理进程,公共数据区是多个售票进程共享的临界资源,为其设置互斥信号量S,初值为1,表示资源可用。算法描述如下:
begin
S:semaphore; S :=1; cobegin
process Pi(i=1,2,…,n) begin
Ri:integer // 表示各进程执行时所用的工作单元 P(S) Ri := Aj;
if Ri ≥1 then begin Ri := Ri -1;
Aj := Ri;
V(S); 输出一张票 end
else begin V(S); 输出“票已售完”信息;
end; end; coend; end;
注意:算法中“else”部分的V操作不能少,否则当进程在临界区中判别条件Ri ≥1不成立时无法退出临界区,当然也就不能唤醒等待进入临界区的其它进程,这就违反了同步机制应遵循的“空闲让进”和“有限等待”两个原则。
18、有三个进程PA、PB、PC合作解决文件打印问题:PA将文件记录从磁盘读入内存的缓冲区1,每执行一次读一个记录;PB将缓冲区1的记录复制到缓冲区2,每执行一次复制一个记录;PC打印缓冲区2中的记录,每执行一次打印一个记录。每个缓冲区只能存放一个记录。请用信号量机制实现文件的正确打印。
解:本题中,进程PA、PB、PC之间的合作关系如图2-3所示:
PA读入记录缓冲区1PB复制缓冲区2PC打印
图2-3 文件打印流程图
当缓冲区1为空时,PA可将记录读入其中,否则,PA需等待;当缓冲区1有记录而缓冲区2为空时,PB可进行复制工作,否则PB需等待;当缓冲区2有记录时,PC可打印记录,否则PC需等待。为此,设置4个信号量empty1、empty2、full1、full2,其中empty1、empty2分别表示缓冲区1和缓冲区2是否为空,初值均为“1”;full1、full2分别表示缓冲区1和缓冲区2中是否有记录,其初值均为“0”。算法描述如下:
begin process PA ( )
empty1,empty2,full1,full2:semaphore; empty1 :=1; empty2 :=1; full1 :=0; full2 :=0;
cobegin
PA ( ); PB ( ); PC ( ); coend; end;
begin
L1: 从磁盘读一个记录; P(empty1); 将记录存入缓冲区1; V(full1); goto L1 end;
process PB ( ) begin
L2: P(full1);
从缓冲区1取一个记录; V(empty1) P(empty2); 将记录存入缓冲区2; V(full2); goto L2 end;
process PC ( ) begin
L3: P(full2)
从缓冲区2取出一个记录; V(empty2); 打印输出记录; goto L3 end;
正在阅读:
信号量的PV操作(例题)12-29
西安交通大学“十二五”发展规划04-24
苏教版小学一年级下册数学期中测试题05-21
高三物理:有界磁场习题汇总专题01-17
2020高考生物第八单元第二十七讲—第九单元第三十三讲10-19
最新《住宅小区物业管理服务合同》08-17
最大摄氧量(VO2max) 测定法05-20
游田州古城作文700字07-13
不同情眼泪作文500字02-05
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 信号量
- 例题
- 操作
- 2018年自学考试《广告学概论》试题及答案
- 高三物理专题分层限时跟踪练习题2
- 土木工程材料试卷答案
- 辽宁省法库县八年级语文上册 第四单元教学设计 新人教版
- 次氯酸钠生产项目可行性研究报告完整立项报告 - 图文
- 留学生服务中心硕士留学生回国也难就业 海归创业偏爱互联网
- 扬州市政府采购中心询价采购合同
- 北京市海淀区2019届高三政治上学期期末考试试题
- 大学生考勤系统论文
- 三年级对话加标点练习
- 历史趣谈唐朝历史上武则天时代的刑罚到底有多残酷?
- 行政诉讼文书样式30:行政裁定书(二审维持或者撤销一审驳回起诉裁定用)
- 福建省安溪蓝溪中学2014届高三上学期期中考试数学(理)试卷1
- 党员干部参加单位感恩教育活动心得
- 智巧趣题专题
- 编一首螃蟹的诗句
- 五年级数学上册课时同步检测试题13
- 建筑工程施工劳务单项承包合同模板
- 2017年中考政治试题分类汇编 八下 第三单元 我们的文化、经济权利 第八课 消费者的权益
- 散热风扇知识学习 - 图文