信号量习题.docx
- 文档编号:7485843
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:41
- 大小:3.37MB
信号量习题.docx
《信号量习题.docx》由会员分享,可在线阅读,更多相关《信号量习题.docx(41页珍藏版)》请在冰豆网上搜索。
信号量习题
操作系统
信号量习题
第三章进程的同步与通信
1.3临界资源(criticalresource)
系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源或共享变量。
如磁带机,打印机等。
1.4临界区(criticalsection)
一个程序片段的集合,我们把在每个进程中访问临界资源的那段代码称为临界区。
1.5进程的同步(直接作用)
指系统中一些进程需要相互合作,共同完成一项任务。
具体说,一个进程运行到某一点时要求另一伙伴进程为它提供消息,在未获得消息之前,该进程处于等待状态,获得消息后被唤醒进入就绪态。
1.6进程的互斥(间接作用)
由于各进程要求共享资源,而有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥。
2.进程的互斥
2.1临界区的使用原则
1)空闲让进:
当无进程在临界区时,任何有权使用临界区的进程可进入。
2)忙则等待:
不允许两个以上的进程同时进入临界区。
3)有限等待:
任何进入互斥区的要求应在有限的时间内得到满足,以免陷入“死等”。
4)让权等待:
当进程不能进入自己的临界区时,应立即释放处理机,以免进入“忙等”。
•缺点:
强制轮流进入临界区,没有考虑进程的实际需要。
容易造成资源利用不充分:
在Pi出让临界区之后,Pj使用临界区之前,Pi不可能再次使用临界区;
•优点:
不用交替进入,可连续使用;
•缺点:
Pi和Pj可能同时进入临界区。
在Pi和Pj都不在临界区时,假设按下面序列执行时,会同时进入:
即在检查对方flag之后和切换自己flag之前有一段时间,结果都检查通过。
这里的问题出在检查和修改操作不能连续进行。
•缺点:
Pi和Pj可能都进入不了临界区。
在Pi和Pj都不在临界区时,假设按下面序列执行时,会都进不了临界区:
即在切换自己flag之后和检查对方flag之前有一段时间,结果都切换flag,都检查不通过。
•
硬件方法的优点[WS]
–适用于任意数目的进程,在单处理器或多处理器上(除中断方法)
–简单,容易验证其正确性
–可以支持进程内存在多个临界区,只需为每个临界区设立一个布尔变量
硬件方法的缺点[WS]
–等待要耗费CPU时间,不能实现"让权等待"
–可能“饥饿”(不公平):
从等待进程中随机选择一个进入临界区,有的进程可能一直选不上
–可能死锁:
进程P1执行TS或Exchange指令并进入临界区,然后P1被P2中断并把CPU给具有更高优先级的P2,若P2试图使用与P1相同的资源,由于互斥机制,它被拒绝访问,因此进入忙等待循环,又因P2先级高于P1,所以P1总得不到调度执行。
3.信号量机制
3.1信号量简介
1965年,由荷兰学者Dijkstra提出(所以P、V分别是荷兰语的test(proberen)和increment(verhogen)),是一种卓有成效的进程同步机制。
P.V操作讨论
1)信号量的物理含义:
S>0表示有S个资源可用
S=0表示无资源可用
S<0则|S|表示S等待队列中的进程个数
P(S):
表示申请一个资源
V(S)表示释放一个资源。
信号量的初值应该大于等于0
4.进程的同步机制──管程
4.1管程的提出
采用PV同步机制来编写并发程序,对于共享变量及信号量变量的操作将被分散于各个进程中
缺点:
(1)易读性差,因为要了解对于一组共享变量及信号量的操作是否正确,则必须通读整个系统或者并发程序
2)不利于修改和维护,因为程序的局部性很差,所以任一组变量或一段代码的修改都可能影响全局
(3)正确性难以保证,因为操作系统或并发程序通常很大,要保证这样一个复杂的系统没有逻辑错误是很难的
管程:
一种同步机制
(管程-类程-进程)
4.2管程定义:
指关于共享资源的数据及在其上操作的一组过程或共享数据结构及其规定的所有操作
系统按资源管理的观点分解成若干模块,用数据表示抽象系统资源,同时分析了共享资源和专用资源在管理上的差别,按不同的管理方式定义模块的类型和结构,使同步操作相对集中,从而增加了模块的相对独立性
管程:
集中式同步机制,它的基本思想是将共享变量以及对共享变量能够进行的所有操作集中在一个模块中,一个操作系统或并发程序由若干个这样的模块所构成,由于一个模块通常较短,模块之间关系清晰,提高了可读性,便于修改和维护,正确性易于保证
管程的形式
TYPEmonitor_name=MONITOR;
共享变量说明
define本管程内所定义、本管程外可调用的过程(函数)名字表
use本管程外所定义、本管程内将调用的过程(函数)名字表
PROCEDURE过程名(形参表);
过程局部变量说明;
BEGIN
语句序列;
END;
......
FUNCTION函数名(形参表):
值类型;
函数局部变量说明;
BEGIN
语句序列;
END;
......
BEGIN
共享变量初始化语句序列;
END;
•5.高级通信方式
一、共享存储器系统(Shared-memorysystem)
相互通信的进程共享某些数据结构或共享存储区。
一组进程向该公共区中写,另一组进程从公共区中读,通过这种方式实现两组进程间的信息交换。
因此又分为:
1基于共享数据结构的通信方式:
进程之间能够通过某种类型的数据结构(如有界缓冲区)交换信息,如生产者和消费者问题。
操作系统只负责提供共享存储区,而共享数据结构和对进程间的同步处理都是程序员的事。
因而,通信效率低,只适合于传递少量信息。
•二、消息系统(MessageSystem)
进程间的信息交换以消息或报文为单位,程序员利用系统提供的一组通信命令(原语)实现通信。
操作系统隐藏了通信的实现细节,简化了编程的复杂性。
分为两种:
•直接通信方式:
发送进程发消息时要指定接收进程的名字,反过来,接收时要指明发送进程的名字。
系统提纲两条原语:
Send(receiver,message)
Receiver(sender,message
•二、重点、难点提示
1同步相关概念的理解
2信号量机制和P、V操作,并能解决实际问题。
•三、典型例题分析
•解决互斥同步问题的主要步骤:
1)分析清楚题目涉及的进程间制约关系。
2)设置信号量(包括信号量的个数和初值,对同步问题还要写出信号量物理含义)
3)给出进程相应程序的算法描述或流程控制,并把P、V操作加到程序适当之处。
2.读者写者问题
有两组并发进程:
读者和写者,共享一组数据区
要求:
允许多个读者同时执行读操作
不允许读者、写者同时操作
不允许多个写者同时操作
例题1(北京大学1999年)
有一个仓库,可以存放A和B两种产品,仓库的存储空间足够大,但要求:
(1)一次只能存人一种产品((A或B);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号量 习题
![提示](https://static.bdocx.com/images/bang_tan.gif)