第一章 操作系统引论
本章学习要点
【1】掌握操作系统的概念与作用
【2】掌握操作系统的基本类型与特点
【3】掌握操作系统的特征与功能
【4】深入领会多道程序设计技术
本章学习难点
【1】多道程序设计技术
【2】操作系统的特征
习题分析
一.判断改错题(判断由下划线标明的关键词的叙述是否正确,正确的打√,错误的打×并改正。)
1.实时系统只能应用于生产控制系统,不能应用于信息处理系统。( )
2.并发含有“同时进行”的概念,是指两个或者是多个事件在同一时刻发生。( )
3.操作系统虚拟机在逻辑功能上与裸机一样,具有一个物理实体。( )
4.对用户而言,操作系统是一种人机交互的环境,对设计者而言,它是一种强功能的系统资源管理程序。( )
5.资源的共享是以程序的并行执行为条件的,没有程序的并行执行,就没有资源的共享。( )
6.计算机系统的资源包括程序和数据两大部分。( )
7.若把计算机系统分为若干层次,则按由上而下顺序可分为应用系统与应用软件、操作系统、其它系统软件和裸机。( )
8.批处理控制程序解决了作业间的自动转换,减少了时间浪费,尤其是主机CPU时间的浪费,如果一个用户的计算作业非常庞大,也不会独自一直占据CPU。( )
习题解答:
1.错;应为:实时系统能应用于生产控制系统,也能应用于信息处理系统。
2.错;应为:……是指两个或者是多个事件在同一段时间间隔内发生。
3.错;应为:操作系统虚拟机在逻辑功能上与裸机不同,但只具有一个物理实体。
4.对;
5.错;应为:资源的共享是以程序的并发执行为条件的,没有程序的并发执行,就没有资源的共享。
6.错;应为:计算机系统的资源包括硬件资源和软件资源两大部分。
7.错:应为:若把计算机系统分为若干层次,则按由上而下顺序可分为应用系统与应用软件、其它系统软件、操作系统和裸机。
8.错;应为:……,尤其是主机CPU时间的浪费,如果一个用户的计算作业非常庞大,就会独自一直占据CPU。
二.填空题
1.实时含有立即、及时之意,因而 是实时系统最关键的因素。
2.操作系统的层次结构中,与 或运行频率较高的模块都安排在紧靠硬件的软件层中,这一部分通常称为 ,它在执行基本操作时,往往是利用 操作来实现,该操作具有原子性。
3.UNIX是一个真正的 用户、 任务的 操作系统。
4.如果一个操作系统兼有 、 和 三者或其中两者的功能,这样的操作系统称为通用操作系统。
5.批处理系统的主要优点是 ,资源利用率高,系统开销小,它的缺点在于作业处理的 ,用户交互能力较弱。
6.操作系统是对计算机进行 的程序,是计算机和 的接口。
7.提供网络通讯和网络资源共享功能的操作系统称为 操作系统。
8.对系统总体设计目标来说,批处理系统注重提高计算机的效率,尽量增加系统的 ,分时系统应保证用户的 ,而实时系统在及时响应和处理的前提下,再考虑 。
9.在主机控制下进行的输入/输出操作称为 操作。
10.在计算机系统中, 是整个系统硬件的核心和基础,而在计算机软件系统中,
具有同样的核心和基础作用。
习题解答:
1.响应时间;
2.硬件紧密相关,内核,原语;
3.多,多,网络;
4.批处理操作系统、分时操作系统、实时操作系统;
5.系统吞吐量大,平均周转时间较长;
6.控制和管理,用户;
7.网络;
8.吞吐量,交互性,与用户的交互性;
9.联机I/O操作;
10.CPU,操作系统
三.简答题
1.简述操作系统在计算机系统中的位置。
答:操作系统OS是运行在计算机硬件系统上的最基本的系统软件。它在计算机系统中位于计算机裸机和计算机用户之间,为系统软件和用户应用软件提供了强大的支持。
2.简述描述操作系统的两种主要观点。
答:描述操作系统有两种主要观点,一种是虚拟机的观点,装有操作系统的计算机极大地扩展了原计算机的功能,给用户提供了一个友好的、易于操作的界面,对用户来说,好像是一个扩展了的机器,即一台虚拟机器。另一种是资源管理的观点,操作系统完成对处理机、存储器、I/O设备等硬件资源和文件等软件资源的管理。
3.什么是操作系统?它有什么基本特征?
答:操作系统是一组控制和管理计算机硬件和软件资源、合理组织计算机的工作流程,以及方便用户的程序的集合。操作系统的基本特征是:
并发:是指两个或多个事件在同一时间间隔内发生。宏观上是同时的,微观上是交替的。
共享:系统中的资源可供内存中多个并发执行的进程共同使用。根据资源的不同属性,可分为两种资源共享方式:互斥共享和同时访问。
虚拟:通过某种技术把一个物理实体变成若干个逻辑上的对应物,物理实体是实的,即实际存在,而后者是虚的,是用户的感觉。
异步性:在多道程序环境下,多个进程并发执行,但由于资源等因素的限制,内存中的每个进程何时执行,何时暂停,以怎样的速度向前推进,每道程序需多少时间才能完成,都是不可预知的,进程以异步的方式运行。但只要运行环境相同,作业经过多次运行,都会获得完全相同的结果。
4.多道程序设计时应注意什么问题?
答:处理机管理问题:多道程序之间如何分配CPU,使CPU既能满足各程序运行的需要,又能提高处理机的利用率。
内存管理问题:为每道程序分配必要的内存空间,并防止程序遭破坏。
I/O设备管理:分配为多道程序共享的I/O设备,方便用户使用,提高设备利用率。
文件管理问题:组织大量的程序和数据,便于用户使用,保证数据的安全和一致。
四.练习题
1.计算机操作系统的功能是 。
A.把源程序代码转换为目标代码 B.实现计算机用户之间的相互交流
C.完成计算机硬件与软件之间的转换 D.控制、管理计算机系统的资源和程序的执行
2.操作系统的功能是进行处理机管理、 管理、设备管理、文件管理等。
A.进程 B.存储器 C.硬件 D.软件
3.在 的控制下,计算机系统能及时处理由过程控制反馈的数据,并作出响应。
A.批处理操作系统 B.实时操作系统 C.分时操作系统 D.多处理机操作系统
4.分时操作系统的主要目的是 。
A.提高计算机系统的交互性 B.提高计算机系统的实时性
C.提高计算机系统的可靠性 D.提高软件的运行速度
5.以下描述与操作系统无关的是 。
A.方便用户的程序集合
B.控制和管理计算机系统的硬件和软件资源
C.计算机系统的硬件和软件资源的集合
D.合理地组织计算机工作流程
6.下列各项中, 不是现代操作系统的主要特征。
A.并发性 B.共享性 C.确定性 D.虚拟性
7.从用户的观点看,操作系统是 。
A.用户与计算机之间的接口 B.控制和管理计算机资源的软件
C.合理地组织计算机工作流程的软件
D.由若干层次的程序按一定的结构组成的有机体
8. 操作系统允许在一台主机上同时连接多台终端,多个用户可以通过各自的终端同时交互地使用计算机。
A.网络 B.分布式 C.分时 D.实时
9.在下列操作系统中,对响应时间要求最高的是 。
A.批处理系统 B.分时系统 C.实时系统 D.网络操作系统
10.多道批处理系统的主要缺点是 。
A.CPU利用率低 B.不能并发执行 C.缺少交互性 D.以上都不是
11.多道程序设计是指 。
A.在多台处理机上同时执行多道程序 B.在多台处理机上同一时刻执行多道程序
C.在一台处理机上同时执行多道程序 D.在一台处理机上同一时刻执行多道程序
12.配置了操作系统的计算机是一台比原来的物理计算机功能更强大的计算机,这样的计算机只是一台逻辑上的计算机.称为 计算机。
A.虚拟 B.物理 C.并行 D.共享
13.操作系统在计算机系统中处于 之间的位置。
A.计算机硬件和软件 B.计算机硬件和用户
C.处理机和用户 D.外部设备和处理机
14.操作系统的两个最主要的特征是 。
A.并发性和虚拟性 B.并发性和共享性 C.共享性和异步性 D.共享性和虚拟性
15.下面各项中, 不是操作系统的基本特征。
A.并发和共享 B.虚拟 C.交互性 D.异步
第二章 进程管理
本章学习要点
【1】掌握进程的定义和特征
【2】深入领会进程状态及其状态转换的原因
【3】熟练运用信号量解决进程同步问题
本章学习重点和难点
运用信号量解决进程同步问题
习题分析
一.判断改错题(判断由下划线标明的关键词的叙述是否正确,正确的打√,错误的打×并改正。)
1.进程由程序和数据两部分组成。( )
2.在生产者消费者进程中,V操作的次序无关紧要,而P操作次序不能颠倒。( )
3.原语是指操作系统中的初始化程序。( )
4.若进程处于阻塞状态,当引起阻塞的条件被解除时,进程状态应变为运行状态。( )
5.并发进程可以同时进入临界区,交替访问临界资源。( )
6.程序的封闭性是指该程序不允许某些进程调用。( )
7.消息通信因为它数据量较小,因而它是一种低级通信方式。( )
8.单机系统最多允许二个进程处于运行状态。( )
9.管道通信,是以管道消息为单位进行读写的,可进行大批量数据交换,其工作是以先进先出为顺序的。( )
习题解答:
1.错;应为:进程由程序、数据和进程控制块组成。
2.对;
3.错;应为:原语由若干条指令所构成、用于完成一定功能的一个过程,具有原子性。
4.错;应为:……当引起阻塞的条件被解除时,进程状态应变为就绪状态。
5.错;应为:并发进程必须互斥进入临界区,互斥访问临界资源。
6.错;应为:程序的封闭性是指该程序在运行时独占系统资源,只有程序本身能改变系统资源。
7.错;应为:消息通信的数据量大,它是一种高级通信方式。
8.错;应为:单机系统只允许一个进程处于运行状态。
9.对。
二.填空题
1.操作系统中,进程是 、 和管理的最小独立单位,操作系统的各种活动都与 有关。
2.消息传递系统属于 级通信方式,进程间的数据交换以 为单位。
3.在操作系统中,时钟常有两种用途:报告 和对__________记时。
4.一个进程可以由系统创建,或者由 用创建原语创建。被创建的进程开始处于等待状态。在条件成熟时,采用 原语为它们分配除 以外的所需资源,并被排列到 队列中。
5.一次仅允许一个进程使用的资源称为 ,同时把访问该资源的那段程序代码称为 。
6.信号量的物理意义是当信号量大于零时表示 ;当信号量小于零时,其绝对值为 。
7.进程运行过程中,因为 、等待I/O操作等事件发生时,通过 原语将它撤下,排入 队列,并引起新的 。
8.有m个进程共享同一临界资源,若使用信号量机制实现对临界资源的互斥访问,则信号量值的变化范围是 。
习题解答:
1.资源分配,调度,进程;
2.高,消息;
3.日历和时间,资源使用;
4.父进程,调度,处理器,就绪;
5.临界资源,临界区;
6.资源的数目,等待该资源的进程数目;
7.缺乏资源,阻塞,等待,进程调度;
8.[1-m,1]。
三.简答题
1.处理机管理的主要任务是什么?具有哪些主要功能?
答:处理机管理的主要任务是对处理机进行分配,并对其运行进行有效的控制和管理。主要功能有:进程控制、进程同步、进程通信和进程调度。
2.程序的顺序执行和并发执行有何不同?
答:程序的顺序执行具有以下特点:
顺序性:处理机的操作,严格按程序所规定的顺序执行。
封闭性:程序在封闭的环境下运行,独占全机资源,执行结果不受外界因素影响。
可再现性:只要程序执行的环境和初始条件相同,程序多次重复执行,不论是不停顿执行,还是走走停停,都将获得相同的结果。
而程序的并发执行恰好相反,具有间断性、失去封闭性和不可再现性。(展开说明)
3.简述进程的定义,进程的基本状态以及进程状态转换的典型原因。
答:进程是可并发执行的程序在一个数据集上的运行过程。进程有三种基本状态:就绪,执行和阻塞。A:进程调度 B:发生某事件无法执行
C:时间片到或优先级高的进程到达 D:阻塞的事件消失
1.简述进程与程序的区别。
答:进程是可并发执行的程序在一个数据集合上的运行过程,进程有动态性、并发性、独立性和异步性、结构特征,而程序是静态的,不能并发执行,未建立进程的程序也不能作为一个独立的单位参加运行。
2.进程的实体是什么?
答:进程通过三个部分被感知:程序、数据集合、进程控制块及相应表格,这三部分组成了进程的实体。程序是进程运行所对应的执行代码,数据集合是进程运行所必需的数据资源,进程控制块是保存进程状态,控制进程转换的标志。
3.简述进程控制块的主要内容。
答:PCB的内容
进程标识符信息:外部标识符、内部标识符(唯一整数)。
处理机状态信息
进程调度信息:进程状态、优先级等。
进程控制信息:程序和数据地址、同步机制、资源清单等。
4.简述进程通信的概念,最基本的通信原语有那些?
答:为了进行进程协调,进程间应具有一定联系,这种联系通常采用进程间交换数据的方式进行,称为进程通信。
最基本的通信原语有发送原语和接收原语。
5.若进程Pa、Pb和Pc单独执行时间分别是1小时、1.5小时和2小时,其中处理机工作时间分别为10分钟、15分钟和35分钟。如果采用多道程序设计方法,让Pa、Pb和Pc并行工作,假定处理机利用率达到50%,请问系统效率能提高百分之几?
答:Ta、Tb和Tc并行工作共用CPU时间为:
(10+15+35)/50%=120 (分钟)
单道方式执行时总时间为60+90+120=270分钟
故系统效率提高:(270-120)/270*100%=55.6%
6.简述读者——写者问题的思想。
答:读者—写者问题是典型的进程同步问题。一个数据对象(数据文件或记录)可被多个进程共享,其中有些进程要求读(读者进程),而另一些进程要求对数据对象进行写或修改(写者进程)。允许多个读进程同时读一个共享对象,但绝不允许一个写进程和其它读进程或写进程同时访问共享对象。
7.简述直接通信与间接通信的区别。
答:直接通信指利用操作系统所提供的发送命令,直接把消息发送给目标进程。发送和接收进程都以显式的方式,提供对方的标识符。间接通信指进程间的通信,需要通过作为某种共享数据结构的实体——信箱。
8.什么是操作系统的内核?
答:内核是计算机硬件的第一层扩充软件,由与硬件紧密相关的模块以及运行频率较高的模块组成,常驻内存,以提高OS的运行效率。
9.什么是原语?
答:由若干条指令所构成、用于完成一定功能的一个过程,具有原子性。
10.进程之间存在哪几种相互制约关系?各是什么原因引起的?下列活动分别属于哪种制约?(1)若干同学去图书馆借书(2)两队举行篮球比赛(3)流水线生产的各道工序(4)商品生产和社会消费。
答:进程之间存在两种相互制约关系:
(1)间接相互制约——资源共享关系,是由于多个进程共享同一资源引起的。
(2)直接相互制约——相互合作关系,是由于多个进程相互合作,共同完成同一任务造成。
其中(1)、(2)属于间接相互制约,而(3)、(4)属于直接相互制约。
一.应用题
1.请用信号量实现4*100接力赛的同步过程。
【解答】
P1、P2、P3和P4分别代表四位运动员,他们的跑步顺序受其位置的限制。从上图表示可以看出,此题相当于是用信号量描述前趋关系。
S1、S2、S3、S4的初值均为0。
P1:起跑——>前进100米——>V(S1)
P2:P(S1)——>起跑——>前进100米——>V(S2)
P3:P(S2)——>起跑——>前进100米——>V(S3)
P4:P(S3)——>起跑——>前进100米——>到达终点
1.有一发送者进程和一接收者进程,其流程如下。s是用于实现进程同步的信号量,m是用于实现进程互斥的信号量。试完成流程图。假定缓冲区有无限多个,s和m的初值为多少?
【解答】s=0表示满缓冲的数量、即多少缓冲区里有消息。
m=1表示互斥信号量。
A:P(m) B:V(m) C:P(s) D:P(m)
由题意,m用于实现进程互斥,初值应为1,并应成对出现,由接收者进程的V(m)操作可知,m用于实现消息链存、取缓冲区操作的互斥,故D为P(m)。相应的,A为P(m),B为V(m)。
由发送者进程可知,当发送者将一个消息放入消息链尾后,执行V(s)操作,故s表示接收者可取消息的数量,又因s用于实现进程同步,所以接收者接受消息前,应判断是否有消息可以取,需对s执行P操作,所以C为P(s),发送者发送消息前,接收者无消息可取,s的初值应为0。
1.桌上有一只盘子,最多可容纳两个水果,每次仅能放入或取出一个水果。爸爸向盘中放苹果,妈妈向盘中放桔子,两个儿子专门等吃盘子中的桔子,两个女儿专门等吃盘子中的苹果。试用PV操作实现爸爸、妈妈、儿子、女儿之间的同步与互斥关系。
【解答】由题意,盘中最多可以放两只水果,而不管放入的是何种水果,故只要盘中有空位置,父母均可执行放水果的操作,即父母的放水果(苹果、桔子)操作仅取决于盘中是否有空位置。只有盘中有桔子,儿子才能取,只有盘中有苹果,女儿才能取,即儿女取水果的操作取决于相应水果是否存在。从另一个角度讲,父亲放苹果与女儿取苹果要同步,母亲放桔子与儿子取桔子要同步,分别需要用同步信号量实现。每次只能向盘子放入或从盘中取出一个水果,用互斥信号量实现。
设置信号量:
semaphore mutex, empty, fulla, fullo;
mutex=1; //互斥信号量,用于对盘子的互斥使用
empty=2; //同步信号量,表示盘子中可容纳水果的数量
fulla=0; //同步信号量,表示盘子中的苹果数
fullo=0; //同步信号量,表示盘子中的桔子数
process father( ) //父亲进程
{
while (1) {
取一个苹果;
P(empty); //测试盘子中是否还能往里放水果
P(mutex); //互斥使用盘子
将苹果放入盘子中;
V(mutex);
V(fulla); //通知女儿盘子中的苹果数已增1(可能会唤醒女儿)
}
}
process mother( ) //母亲进程
{
while (1) {
取一个桔子;
P(empty); //测试盘子中是否还能往里放水果
P(mutex); //互斥使用盘子
将桔子放入盘子中;
V(mutex);
V(fullo); //通知儿子盘子中的桔子数已增1(可能会唤醒儿子)
}
}
process soni ( ) //儿子进程,i=1或2
{
while (1) {
P(fullo); //测试盘子中是否有桔子
P(mutex); //互斥使用盘子
取一个桔子;
V(mutex);
V(empty); //盘子中可放水果的位置数已增1(可能会唤醒父亲或母亲进程)
吃桔子;
}
}
process daughterj ( ) //女儿进程,j=1或2
{
while (1) {
P(fulla); //测试盘子中是否有苹果
P(mutex); //互斥使用盘子
取一个苹果;
V(mutex);
V(empty); //盘子中可放水果的位置数已增1(可能会唤醒父亲或母亲进程)
吃苹果;
}
}
parbegin
father( );
mother( );
son1( );
son2( );
daughter1( );
daughter2( );
parend
2.(华中理工大学1999年试题)在公共汽车上,司机和售票员的活动分别是
司机:启动车辆;正常行车;到站停车;
售票员:关车门;售票;开车门;
在汽车不断到站、停车、行驶过程中,这两个活动存在着同步关系,试用信号量和P、V操作实现它们的同步。
【解答】根据常识,车门关好后司机方可启动车辆,到站停车后售票员方可打开车门,即门的开、关与车的停、开存在着相互制约的同步关系。定义信号量 run,表示司机是否可以启动车辆,也就是车门的状态(0表示门开,1表示门关),初值为0。定义信号量stop表示售票员是否可以开车门,即车是否停好(0表示车停,1表示车开),初值为0。初始状态为车停门开。1.某寺庙,有小、老和尚若干,有一水缸,由小和尚提水入缸供老和尚引用。水缸可容12桶水,水取自同一井中。水井径窄,每次只能容一个桶取水。水桶总数为4个。每次入、取缸水仅为一桶,且不可同时进行。试给出有关取水、入水的算法描述。
【解答】分析题目可知,小和尚负责用桶到井中取水并将水倒入缸中,其操作依次为拿桶、井中取水、倒水入缸。水桶只有4个,只有拿到桶后方可继续,否则需要等桶,因水井径窄,每次只能容一个桶取水,故取水的小和尚对水井的访问必须是互斥的。老和尚负责用桶从缸中取水,其操作依次为拿桶、缸中取水。只有拿到桶后方可继续,否则需要等桶。每次入、取缸水仅为一桶,且不可同时进行,表明小和尚倒水入缸、老和尚取水必须互斥。同时,缸中没水,老和尚不能取水,要等待小和尚倒水入缸;水缸满,小和尚不能倒水入缸,要等待老和尚取水,也就是说,小和尚倒水入缸和老和尚取水必须同步。设置互斥信号量和同步信号量:
m1=1,表示小和尚从水井取水时,对水井的互斥访问,即一次只能有一个水桶进出水井;
m2=1,表示小和尚倒水入缸、老和尚取水时对水缸的互斥访问,即每次入、取缸水只能一个桶;
count=4,表示是否有桶可以供小和尚、老和尚使用;
full=0满缓冲,表示缸内有水的桶数,控制老和尚取水;
empty=12,空缓冲,缸内还能放水的桶数,控制小和尚倒水入缸。
小和尚从水井取水入缸:
此题特别要注意P操作的次序,例如:如果P(empty)和P(count)操作次序颠倒,就有可能产生死锁。若某时刻水缸水满(empty=0; full=12),而四个小和尚依次拿水桶去井中取水,此时P(count)均执行减1操作,count 的值变为0,但继续执行P(empty)时,empty-1,empty<0,阻塞;此时老和尚想取水,执行P(full) ,继续,执行P(count),此时couunt-1,count<0,阻塞,即老和尚没有水桶可以取水。老和尚无法取水,小和尚无法倒水,形成僵局,死锁发生。所以,P操作的顺序不可颠倒。
老和尚从缸中取水:
与本题相同的题目:
(北邮1998年试题)某庙寺有小和尚、老和尚若干。有一水井和一个水缸,由小和尚提水入缸供老和尚饮用。水缸可容纳10桶水,水取自同一井中。水井很窄,每次只能容一个水桶打水。水桶总数为3个。每次入水、取水仅为1桶水,且不可同时进行。试用一种同步机制,写出小和尚和老和尚入水、取水的活动过程。
1.(西北工大2000年试题)由三个进程get,copy和put以及两个缓冲区buffer1和buffer2完成一项输入/输出操作。进程get的功能是把一张卡片上的信息从读卡机上读进buffer1;进程copy的功能是把buffer1中的信息复制到buffer2;进程put的功能是取出buffer2中的信息并从打印机上打印输出。试用P、V操作完成这三个进程间的尽可能并发正确执行的关系(用程序或框图表示),并指明信号量的作用和初值。
【解答】可设置6个信号量mutex1,mutex2,empty1,empty2,full1,full2。其中:
mutex1和mutex2是互斥信号量,初值为1,分别用于对buffer1和buffer2的互斥访问;
empty1和empty2为同步信号量,初值为1,分别表示buffer1和buffer2是否空闲,1表示空闲,0表示不空闲;
full1和full2为同步信号量,初值为0,分别表示buffer1和buffer2中是否有可取用的信息,1表示有可取用的信息,0表示无可取用的信息。
semaphore mutex1, mutex2, empty1, empty2, full1, full2 ;
mutex1=mutex2=1; //互斥信号量
empty1=empty2=1; //生产者进程的同步信号量
full1=full2=0; //消费者进程的同步信号量
parbegin
process get( ) //读进程(生产者进程)
{
while (1) {
从读卡机读入一张卡片的信息;
P(empty1) //看看buffer1是否空闲
P(mutex1); //互斥访问buffer1
将信息放入buffer1;
V(mutex1);
V(full1); //通知进程copy,buffer1中已有信息科取(若copy正在等待,则唤醒之)
}
}
process copy( ) //复制进程(既是消费者又是生产者进程)
{
while (1) {
P(full1) //看看buffer1是否有信息可取
P(mutex1); //互斥访问buffer1
从buffer1中复制出信息;
V(mutex1);
V(emtpy1); //通知get,buffer1中的信息已取走(可能唤醒get)
P(empty2); //看看buffer2是否空闲
P(mutex2); //互斥访问buffer2
将复制的信息放入buffer2;
V(mutex2);
V(full2); //通知put,buffer2中已有信息
}
}
process put( ) //输出进程(消费者进程)
{
while (1) {
P(full2); //测试buffer2中是否有信息
P(mutex2); //互斥访问buffer2
从buffer2中取出信息;
V(mutex2);
V(empty2); //通知copy,buffer2中的信息已取走
}
}
parend
【讨论】由于本题中对于两个缓冲区buffer1和buffer2来说,都只有一个生产者和一个消费者,因此互斥信号量mutex1和mutex2实际上是可以省去的。
2.(北大1994年试题)进程A1,A2,…,An1通过m个缓冲区向进程B1,B2,…,Bn2不断地发送消息。发送和接收工作遵循如下规则:
① 每个发送进程一次发送一个消息,写入一个缓冲区,缓冲区大小与消息长度一样;
② 对每个消息,B1,B2,…,Bn2都需各接收一次,读入各自的数据区内;
③ m个缓冲区都满时,发送进程等待,没有可读的消息时,接收进程等待。
试用P、V操作组织正确的发送和接收操作。(练习题中的二、2是本题的特例)
【分析】这是P-C问题变形。把这一组缓冲区看成n2组缓冲区。
【解答】设置一个信号量mutex实现诸进程对缓冲区的互斥访问;两个信号量数组empty[n2]和full[n2]描述n2组缓冲区的使用情况。mutex初值为1,数组empty的元素初值为m,数组full的元素初值为0。
var mutex: semaphore :=1;
empty,full: array[0…n2-1] of semaphore;
i: integer;
for (i=0;i<n2;i++)
{
empty[i]=m;full[i]=0;
}
Aj ( ) //j=1,2,…,n1
{
while (1) {
…
for (int i=0;i<n2;i++)
P(empty[i]);
P(mutex);
将消息放入缓冲区;
V(mutex);
for (i=0;i<n2;i++)
V(full[i]);
…
}
}
Bi ( ) //i=1,2,…,n2
{
while (1)
{
…
P(full[i]);
P(mutex);
将消息从缓冲区取出;
V(mutex);
V(empty[i]);
…
}
}
parbegin
A1( );
A2( );
…
An1( );
B1( );
B2( );
…
Bn2( );
parend
1.系统有三个进程Read,Write1,Write2共享一个整数缓冲器B,B中每次只能存放一个整数。Read进程每次启动输入设备输入一个整数到n。若n中是奇数,则由进程Write1将其取出打印;若n中是偶数,则由进程Write2将其取出打印。规定输入与打印整数的个数和次序完全一致。
要求:(1)完善如下程序,在下列A、B空白处填入有关语句,并说明物理意义。
begin S, SO, SE: semaphore;
n: integer;
S:=1;
SO:=0;
SE:=0;
Parbegin
process Read
Begin
L1:从输入设备读一整数到n;
P(S);
B:=n;
if n mod 2=1 then V(SO)
else V(SE);
goto L1
end;
process Write1
begin
L2: P(SO);
Y:=B;
(A) ;
print Y;
goto L2
end;
process Write2
begin
L3: (B) ;
Z:=B;
V(S);
Print Z;
goto L3
end;
Parend;
end;
(2)说明信号量S,SO,SE作用及它们的初值的物理意义。
(3)Read进程中V(SO)与V(SE)对调,程序功能将发生什么变化。
【解答】(1) (A) V(S) (B) P(SE)
(2) 信号量S,SO,SE作用是实现进程Read、Write1和Write2之间的同步。信号量S的初值为1,表示开始时缓冲器B是空的,可以存放一个整数,当缓冲器B中存有整数时,其值变为0;信号量SO的初值为0,表示开始时缓冲器B中没有奇数,当缓冲器B中存有一个奇数时,SO的值变为1;信号量SE的初值为0,表示开始时缓冲器B中没有偶数,当缓冲器B中存有一个偶数时,SE的值变为1。
(3) Read进程中V(SO)与V(SE)对调,程序功能将变为:若缓冲器中存放的整数n为奇数时,则由进程Write2将其取出打印;若n中是偶数,则由进程Write1将其取出打印。
2.某高校计算机系开设网络课并安排上机实习,假设机房共有2m台机器,有2n名学生选该课,规定:
(1)每两个学生组成一组,各占一台机器,协同完成上机实习;
(2)只有一组学生到齐,并且此时机房有空闲机器时,该组学生才能进入机房;
(3)上机实习由一名教师检查。检查完毕,一组学生同时离开机房。
试用P、V操作模拟上机实习过程。(北京大学,1997年)
【分析】在本题中,为了保证系统的控制流程,增加了Monitor进程,用于控制学生的进入和计算机分配。从题目本身来看,虽然没有明确写出这一进程,但实际上这一进程是存在的。因此,在解决这类问题时,需要对题目加以认真分析,找出其隐蔽的控制机制。学生、教师、Monitor的活动过程可以描述如下:
学生的活动过程:
学生到达——V(student);
等待允许进入——P(enten);
用Monitor指定的计算机上机实习;
实习完成——V(finish);
等待老师检查——P(check);
释放计算机——V(computer);
老师的活动过程:
Repeat
等待学生完成实习——P(finish);
等待另一学生完成——P(finish);
检查学生实习;
检查完成一学生的实习——V(check);
检查完另一学生的实习——V(check);
Until false
Monitor的活动过程:
Repeat
等待学生到达——P(student);
等待另一学生到达——P(student);
获取一台计算机——P(computer);
获取一台计算机——P(computer);
允许学生进入并给其指定一台计算机——V(enter);
允许学生进入并给其指定一台计算机——V(enter);
Until false
【解答】根据上面的分析,同步算法表述如下:
BEGIN
semaphore computer, student, enter, finish, check;
student := 0;enter := 0;
computer := 2m;finish := 0;check := 0;
PARBEGIN
process Student( )
BEGIN
V(student); //表示有学生到达
P(enter); //等待允许进入
用Monitor指定的计算机上机实习;
V(finish); //表示实习完成
P(check); //等待教师检查
V(computer); //释放计算机资源
END
process Teacher( )
BEGIN
L1:P(finish); //等待学生实习完成
P(finish); //等待另一个学生实习完成
检查2个学生的实习;
V(check); //表示检查完成
V(check); //每组有两个学生
goto L1;
END
process Monitor( )
BEGIN
L2:P(student); //等待学生到达
P(student); //等待另一个学生到达
P(computer); //获取一台计算机
P(computer); //获取另一台计算机
V(enter); //允许学生进入并给其指定一台计算机
V(enter); //允许学生进入并给其指定一台计算机
goto L2;
END
PAREND
END
以下算法稍有不同(摘自某参考书),但也是可以的:
BEGIN
integer student,computer,enter,finish,check;
student := 0;enter := 0;
computer := 2m;finish := 0;check := 0;
PARBEGIN
Student:BEGIN
V(student); {表示有学生到达}
P(computer); {获取一台计算机}
P(enter); {等待允许进入}
Do it with partner;
V(finish); {表示实习完成}
P(check); { 等待教师检查}
V(computer); {释放计算机资源}
END
Teacher:BEGIN
L1:P(finish); {等待学生实习完成}
P(finish); {等待另一个学生实习完成}
Check the work;
V(check); {表示检查完成}
V(check);
goto L1;
END
Monitor:BEGIN
L2:P(student); {等待学生到达}
P(student); {等待另一个学生到达}
V(enter); {允许学生进入}
V(enter); {允许学生进入}
goto L2;
END
PAREND
END
3.(中科院2000年试题)现有100名毕业生去甲、乙两公司求职,两公司合用一间接待室,其中甲公司准备招收20人,乙公司准备招收10人,招完为止。两公司各有一位人事主管在接待学生,每位主管每次只可接待一人,其他毕业生在接待室外排成一个队伍等待。使用信号量和P、V操作实现对此过程的管理,写出需要的假设,以及所设计的数据结构和算法。
【解答】semaphore mutex, S1, mutex1;
int count, count1, count2;
mutex=1; //人事主管互斥访问变量count(学生人数)
S1=0; //人事主管人数,用于阻塞学生进程
mutex1=1; //用于互斥访问共享变量count1和count2
count=100; //未面试学生人数
count1=20; //甲公司准备招收的人数
count2=10; //乙公司准备招收的人数
parbegin
process 学生i ( i=1, 2, … , 100 )
{
来到招聘处准备排队;
P(mutex1); //准备看看两公司是否还有招聘名额
if (count1+count20) //两个公司都已招满
{ V(mutex1); exit( ); } //离开
else V(mutex1);
P(S1); //若人事主管都在忙于接待,则排队等待
参加某一人事主管的招聘面试;
面试结束,离开;
}
process 甲公司人事主管
{
while (true) {
P(mutex);
if (count0) {V(mutex); break; } //若已无学生,结束
V(mutex);
P(mutex1);
if (count10) {V(mutex1); break; } //若已招满,离开
V(mutex1);
V(S1); //招呼一学生进来面试
与学生交谈、面试;
if (录用该生) {
记下该生的相关信息;
P(mutex1);
count1=count1-1; //需招聘人数减1
V(mutex1);
}
请学生离开;
P(mutex);
count=count-1; //未面试学生人数减1
V(mutex);
}
招聘结束,离开;
}
process 乙公司人事主管
{
while (true) {
P(mutex);
if (count0) {V(mutex); break; } //若已无学生,结束
V(mutex);
P(mutex1);
if (count2==0) {V(mutex1); break; } //若已招满,离开
V(mutex1);
V(S1); //招呼一学生进来面试
与学生交谈、面试;
if (录用该生) {
记下该生的相关信息;
P(mutex1);
count2=count2-1; //需招聘人数减1
V(mutex1);
}
请学生离开;
P(mutex);
count=count-1; //未面试学生人数减1
V(mutex);
}
招聘结束,离开;
}
parend
4.理发师问题描述如下:理发店包含一间接待室和一间工作室,接待室内有n(n≥1)把椅子,而工作室只有1把椅子。如果没有顾客,理发师就去睡觉;如果来时所有椅子都有人,那么顾客离去;如果理发师在忙且接待室有空闲椅子,那么此顾客会坐在其中1把空闲的椅子上等待;如果理发师在睡觉,则顾客会唤醒他。请采用信号量机制解决该理发师问题(可用伪代码描述)。
【解答】引入5个信号量和1个控制变量:
控制变量count用来记录等待理发的顾客数,初值为0;当count=n时,新来的顾客离去。
信号量customers用来记录等候理发的顾客数,并用作阻塞理发师进程,初值为0;
信号量barbers用来记录等候顾客的理发师数,并用作阻塞顾客进程,初值为0;
信号量mutex用于对共享变量count的互斥访问,初值为1;
信号量cut用来告知理发师可以开始理发,并用作阻塞理发师进程,初值为0;
信号量finish用来告知顾客理发已完成,并用作阻塞顾客进程,初值为0;
信号量机制解决理发师问题算法描述如下:
semaphore customers,barbers,mutex:=0,0,1; //定义信号量并初始化
semaphore cut,finish:=0,0;
int count=0;
Parbegin
Process Customers( ) //定义并发进程
{
P(mutex);
if (count>=n)
{
V(mutex);
exit(); //没有空椅子,离开
}
else
{
count=count+1;
V(mutex);
V(customers); //唤醒理发师
SIT_ON_chair(); //坐在椅子上等候
P(barbers); //等待理发师召唤
Stand_up(); //从椅子上起身
P(mutex);
count=count-1; //坐椅子等待的顾客数减1
V(mutex);
SIT_ON_cut_chair();//坐在理发椅子上
V(cut); //告诉理发师可以开始理发
P(finish); //等待理发完成
}
} //顾客进程结束
Process barber( ) //理发师进程
{
while (true)
{
P(customers); //等待顾客到来
Clear_cut_chair(); //整理一下理发椅子
V(barbers); //召唤一个顾客
P(cut); //等待顾客就座
CUT_hair(); //理发
V(finish); //告诉顾客已理完
}
}
Parend //并发进程的定义结束
【说明】(1)坐椅子等待的顾客数减1的语句也可以放到理发师进程中。
(2)本程序也没有考虑顾客理完发后的付款问题。
5.某银行提供1个服务窗口和10个顾客等待座位。顾客到达银行时,若有空座位,则到取号机领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾客,并为其服务。顾客和营业员的活动过程描述如下:(2011全国试题)
cobegin
{
process 顾客i
{ 从取号机获得一个号码;
等待叫号;
获得服务;
}
process 营业员
{
while (TRUE)
{ 叫号;
为顾客服务;
}
}
}
coend
请添加必要的信号量和P、V(或wait( )、signal( ))操作实现上述过程的互斥和同步。要求写出完整的过程,说明信号量的含义并赋初值。
【解答】
begin
semaphore mutex=1; //用于顾客取号的互斥信号量
semaphore seat=10; //顾客等待座位的资源信号量,当没有空座位时顾客在其上阻塞
semaphore S1=0; //营业员与顾客的同步信号量,当没有顾客时营业员在其上阻塞
semaphore S2=0; //顾客与营业员的同步信号量,等待叫号时顾客在其上阻塞
cobegin
{
process 顾客i
{ P(seat); //若没有空座位,顾客等待
P(mutex); //取号互斥
从取号机获得一个号码;
V(mutex);
V(S1); //通知营业员,已有顾客
P(S2);
等待叫号;
获得服务;
}
process 营业员
{
while (TRUE)
{ P(S1); //若无顾客则等待
V(S2); //唤醒等待叫号的顾客
叫号;
V(seat); //空出一个座位(此行放在顾客进程的等待叫号后面也可)
为顾客服务;
}
}
}
coend
end
6.假定一个阅览室可供50个人同时阅读。读者进入和离开阅览室时都必须在阅览室入口处的一个登记表上登记,阅览室有50个座位,规定每次只允许一个人登记或注销登记。
要求:(1)用PV操作描述读者进程的同步算法(可用流程图表示,登记、注销可用自然语言描述);
(2)指出算法(流程图)中所用信号量的名称、作用及初值。
【解答】(1)用PV操作描述读者进程的同步算法如下:
semaphore mutex=1, seat=50;
parbigin
process readeri (i=1, 2, 3, …)
begin
读者来到阅览室;
P(seat); //看看阅览室是否有空位置
P(mutex); //等级需互斥
在登记表上登记;
V(mutex);
在阅览室阅览资料;
P(mutex);
在登记表上注销;
V(mutex);
V(seat); //阅览室空座位数增1,必要时唤醒等待进入阅览室的读者
该读者离开;
end
parend
(2)互斥信号量mutex,其初值为1,用于互斥使用登记表;资源信号量seat,其初值为50,用于表示阅览室空座位的数量。
7.A,B两组学生进行投球比赛,规定A组(或B组)的一个学生投了一个球后应让B组(或A组)的一个学生投一个球。假定让A组的学生先开始投球,用PV操作控制时,回答如下问题:
(1)应定义的信号量的个数和初值:____________________________________
(2)在两组工作流程的方框位置填上适当的P、V操作,使其能按规定进行。
A组:
①
投一个球
②
B组:
③
投一个球
④
【解答】(1) 应定义2个信号量SA和SB,初值分别为1和0。
(2) ① P(SA); ② V(SB); ③ P(SB); ④ V(SA).
1.(2013全国试题)某博物馆最多可容纳500人同时参观,有一个出入口,该出入口一次仅允许一个人通过。参观者的活动描述如下:
cobegin
参观者进程i:
{ …
进门;
…
参观;
…
出门;
…
}
coend
请添加必要的信号量和P、V(或wait()、signal())操作,以实现上述过程中的互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。
【解答】定义两个信号量
Semaphore empty = 500; / / 博物馆可以容纳的最多人数
Semaphore mutex = 1; / / 用于出入口资源的控制
参观者进程 i;
{ …
P(empty);
P(mutex);
进门;
V(mutex);
参观;
P(mutex);
出门;
V(mutex);
V(empty);
…
}
coend
一.练习题
(一)选择题
1.有关进程的下列叙述中, 是正确的。
A.进程是静态的文本 B.进程与程序是一一对应的
C.进程与作业是一一对应的 D.多个进程可以在单个CPU上同时执行
2.进程之间的制约关系可以归结为 。
A.同步与互斥 B.并发与异步 C.同步与并发 D.同步与异步
3.下列的进程状态变化中, 的变化是不可能发生的。
A.运行→就绪 B.运行→等待 C.等待→运行 D.等待→就绪
4.进程和程序的本质区别是 。
A.存储在内存和外存 B.顺序和非顺序执行机器指令
C.分时使用和独占使用计算机资源 D.动态和静态特征
5.某进程所要求的一次打印输出结束,该进程被唤醒,其进程状态将从 。
A.就绪状态到运行状态 B.等待状态到就绪状态
C.运行状态到等待状态 D.运行状态到就绪状态
6.进程调度是从 选择一个进程投入运行。
A.就绪队列 B.等待队列 C.作业后备队列 D.提交队列
7.已获得除CPU以外的所有所需资源的进程处于 状态。
A.运行 B.就绪 C.自由 D.等待
8.进程具有并发性和 两大重要属性。
A.动态性 B.静态性 C.易用性 D.封闭性
9.两个进程合作完成一个任务,在并发执行中,一个进程要等待其合作伙伴发来消息,或者建立某个条件后再向前执行,这种关系称为进程间的 。
A.同步 B.互斥 C.竞争 D.合作
10.多道程序系统中的操作系统分配资源以 为基本单位。
A.程序 B.进程 C.作业 D.用户
11.在计算机系统中,允许多个程序同时进入内存并运行,这种方法称为 。
A.SPOOLing技术 B.虚拟存储技术
C.缓冲技术 D.多道程序设计技术
12.多道程序的引入主要是为了 。
A.提高CPU的速度 B.提高内存的存取速度
C.提高计算机的使用效率 D.减少CPU处理作业时间
13.多道程序系统中,当 时,进程从执行状态转变为就绪状态。
A.进程被进程调度程序选中 B.时间片到
C.等待某一事件 D.等待的事件发生
14.并发进程相互之间 。
A.必须通信 B.可以有交往也可无关
C.一定会竞争共享资源 D.相互间一定要同步
15.若信号量S的初值为2,当前值为-1,则表示有 个等待进程。
A.0 B.1 C.2 D.3
16.设与某资源关联的信号量初值为3,当前值为1。若M表示该资源的可用个数,N表示等待该资源的进程数,则M、N分别是 。(2010全国试题)
A.0、1 B.1、0 C.1、2 D.2、0
17.操作系统中,对信号量S的P原语操作定义中,使进程进入相应等待队列的条件是 。
A.S≠0 B.S<0 C.S=0 D.S>0
18.并发性是指若干事件在 发生。
A.同一时刻 B.同一时间间隔内 C.不同时刻 D.不同时间间隔内
19.有关PV操作的说法中 是错误的。
A.“PV操作不仅是进程互斥的有效工具,而且是简单方便的同步工具”
B.“PV操作不能实现进程间通信”
C.“进程调用P操作测试自己所需的消息是否到达”
D.“进程调用V操作向其它进程发送消息”
20.使若干并发进程共享一临界资源而不发生与进程推进速度有关错误,涉及相关临界区的错误说法是 。
A.“一次最多让一个进程在临界区执行”
B.“任何一个进入临界区执行的进程必须在有限时间内退出临界区”
C.“可以强迫一个进程无限地等待进入它的临界区”
D.“可能没有任何进程在临界区执行”
21.通常,用户进程被建立后, 。
A.便一直存在于系统中,直到被操作人员撤消
B.随着程序运行正常或异常结束而撤消
C.随着时间片轮转而撤消与建立
D.随着进程的阻塞或唤醒而撤消与建立
22.多个进程间可通过P、V操作交换信息实现进程同步和互斥,因此信号量机制是进程间的一种
_________通信方式。
A.高级 B.低级 C.消息缓冲 D.间接
23.设有12个同类资源可供4个进程共享,资源分配情况如下表所示。
进程 已占用资源数 最大需求数
P1 2 4
P2 3 6
P3 4 7
P4 1 4
当进程P1,P2,P3,P4又都相继提出申请要求,为使系统不致死锁,应满足 的要求。
A.P1 B.P2 C.P3 D.P4
24.单CPU系统中,关于进程的叙述正确的是 。
A.一个处于等待状态的进程一旦分配了CPU,即进入运行状态
B.只能有一个进程处于就绪状态
C.一个进程可以同时处于就绪状态和等待状态
D.最多只有一个进程处于运行状态
25.在具有挂起状态的系统中,若当前内存空间高度吃紧,系统将使一个正在等待I/O的进程进入
__________状态。
A.活动就绪 B.静止就绪 C.活动阻塞 D.静止阻塞
26.在引入线程的操作系统中,把 作为调度和分派的基本单位,而把 作为资源拥有的基本单位。
A.进程 线程 B.程序 线程 C.程序 进程 D.线程 进程
27.S为死锁状态的充要条件是 ,该充要条件称为死锁定理。
A.当且仅当S状态的资源分配图是可完全简化的
B.当且仅当S状态的资源转换图是不可完全简化的
C.当且仅当S状态的资源分配图是不可完全简化的
D.当且仅当S状态的资源转换图是可完全简化的
28.现有3个同时到达的作业J1、J2、J3,它们的执行时间分别为T1、T2和T3,且T1<T2<T3。系统按单道方式运行且采用短作业优先算法,则平均周转时间为 。
A.T1+T2+T3 B.(T1+T2+T3)/3 C.(3T1+2T2+T3)/3 D.(T1+2T2+3T3)/3
29.下列关于进程和线程的叙述中,正确的是 。(2012全国试题)
A.不管系统是否支持线程,进程都是资源分配的基本单位
B.线程是资源分配的基本单位,进程是调度的基本单位
C.系统级线程和用户级线程的切换都需要内核的支持
D.同一进程的各个线程拥有各自不同的地址空间
30. 计算机开机后,操作系统最终被加载到 。(2013全国试题)
A. BIOS B. ROM C. EPROM D. RAM
(二)应用题
1.(北京大学1990年试题)有三个进程PA、PB和PC协作解决文件打印问题:PA将文件记录从磁盘读入主存的缓冲区1,每执行一次读一个记录;PB将缓冲区1的记录复制到缓冲区2,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。缓冲区的大小和一个记录大小一样。试用P、V操作来保证文件的正确打印。(本题与例题四.6题是同一题)
2.进程P1使用缓冲区buffer向进程P2,P3,P4发送消息(如图2-1所示),要求每当Pl向buffer中发消息时,只有当P2,P3,P4进程都读取这条消息后P1才可向buffer中发送新的消息。试用信号量机制描述如下图所示进程的动作过程。(本题是例题中四.7题的特例)
3.某自动质量检测系统有三个进程Q、A、B组成。进程Q每次取一件产品检测,把检测后的产品存放在货架F上,F的容量为每次只能存放一件产品。若货架上存放的是合格产品则让进程A取出,并在产品上贴标签后包装;若货架上存放的是不合格产品则让进程B取出后,将其丢入废物箱。回答下列问题:
(1)写出用PV操作管理时应定义的信号量及初值: ① 。
(2)完成下列算法中的填空,使它们能按上述要求正确地并发执行。
进程Q: 取一件产品检测;
② ;
F:=检测后的产品
If F=合格产品 then ③
else ④
进程A: _____⑤ ;
y:=F中产品 ;
______⑥ ;
对产品贴标签且包装; 进程B: ____⑦ ;
z:=F中产品;
____⑧ ;
把产品丢入废物箱;进程Q: 取一件产品检测;
② ;
F:=检测后的产品
If F=合格产品 then ③
else ④
进程A: _____⑤ ;
y:=F中产品 ;
______⑥ ;
对产品贴标签且包装; 进程B: ____⑦ ;
z:=F中产品;
____⑧ ;
把产品丢入废物箱;进程Q: 取一件产品检测;
② ;
F:=检测后的产品
If F=合格产品 then ③
else ④
进程A: _____⑤ ;
y:=F中产品 ;
______⑥ ;
对产品贴标签且包装; 进程B: ____⑦ ;
z:=F中产品;
____⑧ ;
把产品丢入废物箱;进程Q: 取一件产品检测;
② ;
F:=检测后的产品
If F=合格产品 then ③
else ④
进程A: _____⑤ ;
y:=F中产品 ;
______⑥ ;
对产品贴标签且包装; 进程B: ____⑦ ;
z:=F中产品;
____⑧ ;
把产品丢入废物箱;进程Q: 取一件产品检测;
② ;
F:=检测后的产品
If F=合格产品 then ③
else ④
进程A: _____⑤ ;
y:=F中产品 ;
______⑥ ;
对产品贴标签且包装; 进程B: ____⑦ ;
z:=F中产品;
____⑧ ;
把产品丢入废物箱;
4.(2009全国试题)三个进程P进程Q: 取一件产品检测;
② ;
F:=检测后的产品
If F=合格产品 then ③
else ④
进程A: _____⑤ ;
y:=F中产品 ;
______⑥ ;
对产品贴标签且包装; 进程B: ____⑦ ;
z:=F中产品;
____⑧ ;
把产品丢入废物箱;1、P2、P3互斥使用一个包含N(N>0)个单元的缓冲区。P1每次用produce( )生成一个正整数并用put( )送入缓冲区某个单元中;P2每次用getodd( )从缓冲区中取出一个奇数并用countodd( )统计奇数个数;P3每次用geteven( )从缓冲区中取出一个偶数并用counteven( )统计偶数个数。请用信号量机制实现这三个进程的同步与互斥活动,并说明所定义的信号量的含义。要求用伪代码描述。(本题与例题四.8题实际上是同一题)
5.某小型超级市场,可容纳50个人同时购物。入口处备有篮子,每个购物者可持一只篮子入内购物。出口处结账,并归还篮子(出入口仅允许一个人通过)。
要求:(1)试用PV操作描述购物者进程的同步算法(可用流程图描述)
(2)说明算法(流程图)中使用的信号量的名称,作用和初值。