资源描述
第二章
*****************基本题 2***************************
一,单项选择题
1,在进程管理中,当__________时,进程从阻塞状态变为就绪状态。
A 进程被进程调度程序选中 B 等待某一事件
C 等待的时间发生 D 时间片用完
2,分配到必要的资源并获得处理机是机的进程状态是__________。
A 就绪状态 B 执行状态
C 阻塞状态 D 撤消状态
3,p,v原语是__________。
A 两条低级进程通信原语 B 两条不同的机器指令
C 两条系统调用命令 D 两条高级进程通信原语
4,对进程的管理和控制使用__________。
A 指令 B 原语
C 信号量 D 信箱通信
5,进程的并发执行是若干个进程__________。
A 同时执行 B 在执行的时间上是重叠的
C 在执行的时间上是不可重叠的 D 共享系统资源
6,若p,v操作的信号量s是初值为2,当前的值为-1,则表示有_________等待进程。
A 0个 B 1 个
C 2个 D 3个
------7,程序的顺序执行通常在 1 的工作环境中,具有 2 特征;程序的并发执行通常在 3 的工作环境中,具有 4 特征。
A 单道程序 B 多道程序 C 程序的可在现性 D 资源共享
------8,进程的三个基本状态在一定的条件下可以互相转化,进程由就绪状态转变为运行状态的条件是 1, 由运行状态转变为阻塞状态的条件是 2。
A 时间片用完 B 等待某事件发生
C 等待的某事件已发生 D 资源共享
9,下列的进程状态变化中,__________的变化是不可能发生的。
A 运行----就绪 B 运行----等待
C 等待---运行 D 等待----就绪
10,一个运行的程序用完了分配给它的时间片后,它的状态变为 __________。
A 就绪 B 等待
C 运行 D 由用户自己确定
11,用p,v操作管理临界区时,信号量的初值应定义为__________。
A -1 B 0 C 1 D任意值
12,用v操作唤醒一个等待机场时,被唤醒机场的状态变为__________。
A 等待 B 就绪
C 运行 D 完成
13,进程间的同步是只指进程在逻辑上的相互__________关系。
A 联接 B 制约 C 继续 D 调用
14,__________是一种只能进行p操作和v操作的特殊变量。
A 调度 B 进程 C 同步 D 信号量
15,__________是解决进程间同步和互斥的一对低级通信原语。
A lock 和 unlock B p和v
C w 和s D send和receive
16,下面进程的描述中,错误的是__________。
A 进程是动态的概念 B 进程执行需要处理机
C 进程是有生命期的 D 进程是指令的集合
17,下面的叙述中正确的是__________。
A 操作系统的一个重要概念是进程,因此不同进程所执行的代码也一定不同
B为了避免发生进程死锁,各进程只能逐个申请资源
C操作系统用pcb管理进程,用户可以从pcb中读出与本身运行状况有关的信息
D 进程同步是指某些进程之间在逻辑上的相互制约关系
18,进程控制就是对系统中的进程实施有效的管理,通过使用__________,进程撤消,进程阻塞,进程唤醒等进程控制原语实现。
A 进程运行 B 进程管理 C 进程创建 D 进程同步
19,信箱通信是一种__________通信方式。
A 直接通信 B 间接通信 C 低级通信 D 信号量
20,操作系统通过__________对进程进行管理。
A 进程 B 进程控制块 C 进程启动程序 D 进程控制区
21,操作系统通过_________对进程进行管理。
A JCB B PCB C DCT D CHCT
22,杂操作系统中,解决进程间的 __1___ 和 __2___ 问题的一种方法是使用 __3___。
A 调度 B 互斥 C 通讯 D 同步 E 分派 F 信号量
23,某系统的进程状态如图2。5所示,a是 (1) 状态,b是 (2) 状态,c是( 3)状态
1表示---(4)-----,2表示--(5)------,3表示发生了等待事件,4表示等待事件结束。下列情况中,当发生前者的状态转换时,----(6)-----会导致发生后者的状态转换。
(1)(2)(3):A 挂起 B 运行 C 等待 D 就绪 E 睡眠
(4)(5)A 落选 B 选中 C 等待
(6)A 2----1 B 4----2
24,用p,v操作可以解决__________互斥问题。
A 一切 B 某些 C 正确 D 错误
25,通常,用户进程被建立后,__________。
A 便一直存在与系统中,直到被操作人员撤消
B 随着作业运行正常或不正常结束而撤消
C 随着时间片轮转而撤消与建立
D 随着进程的阻塞或唤醒撤消与建立
26,在操作系统中,进程是一个具有一定独立功能的程序在某个数据集上的一次__________。
A 等待活动 B 运行活动
C 单独操作 D 关联操作
27.一个进程被唤醒意味着__________.
A 该进程重新占有了CPU B它的优先权变为最大
C 其PCB移至等待队列队首 D进程变为就绪状态
28 下面所述步骤中,______不是创建进程所必需的.
A 由调度程序为进程分配CPU B建立一个进程控制快
C 为进程分配内存 D将进程控制块链入就绪状态
29.多道程序环境下,操作系统分配资源以__________为基本单位.
A 程序 B 指令 C 进程 D作业
30.对于两个并发进程,设互斥信号量为MUTEX,若MUTEX=0,则________
A 表示没有进程进入临界区 B表示有一个进程进入临界区
C 表示有一个进程进入临界区,另一个进程等待进入 D表示有两个进程进入临界区
31.两个进程合作完成一个任务.在并发执行中,一个进程要等待其合作伙伴发来消息,或者建立某个条件后 再向前执行,这种制约性合作关系被称为进程的__________
A 同步 B 互斥 C 调度 D 执行
32.为了进行进程协调,进程之间应当具有一定的联系,这种联系通常采用进程间交换数据的方式进行,这种方式称为 _____________
A 进程互斥 B 进程同步 C 进程制约 D 进程通信
******************************选择题答案*************************************
1.C 2.B 3. A 4. B 5 B 6 B 7 ACBD 8 DB 9C 10 A 11C 12 B
13B 14 D 15 B 16 D 17 D 18 C 19 B 20 B 21 B 22 DBF
23 BDC BAA 24 A 25 B 26 B 27 D 28 A 29 C 30 B
31 A 32 D
******************************填空题 2**********************************
1.进程的基本特征有________._________.独立.异步.及结构特征.
2.信号量的物理意义是当信号量值大于0 时表示_________;当信号量值小于0 时,其绝对值为___________.
3.临界资源的概念是___________,而临界区是指___________________.
4.进程在运行过程中有三种基本状态,它们是_______ .________._______.
5进程主要由__________.__________.__________三部分内容组成,其中_______-是进程 存在的唯一标志.而______部分也可以为其他进程共享.
6.系统中各进程之间逻辑上的相互制约关系称为__________
7.若一个进程以进入临界区,其他欲进入临界区的进程必需_________
8将进程的______链接在一起就形成了进程队列.
9用P. V 操作管理临界区时,任何一个进程在进入临界区之前应调用______操作,退出临界区时应调用_____操作.
10 用信箱实现通信时,应有_____和______两条基本原语.
11 在多道程序系统中,进程之间存在着的不同制约关系可以划分为两类:________与_________.
________指进程间具有的一定逻辑关系;__________是指进程间在使用共享资源方面的约束关系.
12 对于信号量可以做________操作和_________操作,______操作用于阻塞进程,________操作用于释放进程.程序中的_______和______操作应谨慎使用,以保证其使用的正确性,否则执行时可能发生死锁.
13 程序顺序执行时有顺序性.________和可再现性的特点.
14 有M个进程共享同一临界资源,若使用信号量机制实现对临界资源的互斥访问,则信号量值的变化范围是________.
15 设系统中有N(N>2)个进程,且当前不在执行进程调度程序,试考虑下述4种情况:
(1)没有运行进程,有2个就绪进程,N个进程处于等待状态.
(2)有1个运行进程,没有就绪进程,N-1个进程处于等待状态.
(3)有1个运行进程,有1个就绪进程,N-2个进程处于等待状态.
(4)有1个运行进程,N-1个就绪进程,没有进程处于等待状态.
上述情况中,不可能发生的情况是________.
16 进程是一个_____态概念,而程序是一个_______态概念.
17 在一个单处理机系统中,若有5个用户进程,且假设当前时刻为用户态,则处于就绪状态的用户进程最多有_________个,最少有______个.
18 操作系统中,对信号量S和P原语操作定义中,使进程进入相应等待队列等待的条件是______.
19 下面关于进程的叙述不正确的是______.
(1)进程申请CPU得不到满足时,其状态为等待状态.
(2)在单CPU系统中,任一时刻有一个进程处于运行状态.
(3)优先级是进行进程调度的重要依据,一旦确定不能改变.
(4)进程获得处理机而运行是通过调度实现的.
20 信箱逻辑上分为_____和_____两部分.____中存在有关信箱的描述.______由若干格子组成,每格存放一信件,格子的数目和大小在创建信箱时确定.
************填空题答案***********************
1 (1)动态 (2)并发
2 (1)可用资源的数目 (2)因请求该资源而被阻塞的进程数目
3(1)一次仅允许一个进程访问的资源
4 (1)运行(2)就绪 (3)等待
5 (1)程序段(2)数据段(3)PCB (4)PCB (5)程序段
6 进程同步
7 等待
8 PCB
9 (1)P (2) V
10(1)发送(2)接收
11 (1)同步 (2)互斥(3)同步 (4)互斥
12 1 3 5 P 2 4 6 V
13封闭性
14 1至-(m-1)
15 1
16 (1)动 (2)静
17 (1)4(2)0
18 s<0
19 3
20 (1)信箱头 (2)信箱体
****************** 解析题 2即答案************************************
1,叙述进程和程序的主要区别。
解:进程和程序是两个既有联系又有区别的两个概念,它们的主要区别如下:
(1)程序是指令的有序集合,其本身没有任何运行的含义,它是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
(2)程序的存在是永久的。而进程是有生命期的,它因创建而产生,因调度而执行,因得不到资源而暂停,因撤消而消亡。
(3)程序仅是指令的有序集合。而进程则由程序,数据和进程数据块组成。
(4)进程与程序之间不是一一对应的,即同一个程序同时运行与若干不同的数据集合上,它将属于若干个不同的进程;而一个进程可以执行多个程序。
2,在测量控制系统中,数据采集任务把所采集的数据送入一单缓冲区;计算任务从该单缓冲区中取出数据进行计算。试写出利用信号量机制实现两者共享单缓冲区的同步算法。
解:在本题中,应设置两个信号量SF SE ,信号量SF表示缓存区中是否有可供打印的技术结果,其初值为0;信号量SE 用于表示缓冲区有无空位置存放新的信息,其初值为1。
本题的同步描述如下:
int se=1;
int sf=0;
main()
{
cobegin
get();
compute();
coend
}
get()
{
while(采集工作未完成)
{
采集一个数据;
p(se);
将数据送入缓冲区中;
v(sf)
}
}
compute()
{
while(计算工作未完成)
{
p(sf)
从缓冲区中取出数据;
v(se);
进行数据计算;
}
}
3 已知一个求值公式 (A^2+3B) / (B+5A),若A,B 已赋值,试画出该公试求值过程的前趋图.
解:
4,图2。7给出了四个进程合作完成某一任务的前趋图,试说明这四个进程间的同步关系,并用p,v操作作描述它。
解:图2。7说明任务启动后
解析题 2
解:图2。7说明任务启动后S1先执行。当S1结束后,S2,S3可以开始执行。S2,S3完成后,S4才能开始执行。为了确保这一执行顺利,设3个同步信号量b2,b3,b4分别表示进程S2,S3,S4是否可以开始执行,其初值均为0。这四个进程的同步描述如下:
Int b2=0
Int b3=0
Int b4=0
Main()
{
Cobegin
S1();
S2();
S3();
S4();
Coend
}
S1()
{
.
.
.
V(b2);
V(b3);
}
S2()
{
P(b2);
.
.
.
V(b4)
}
S3()
{
P(b3)
.
.
.
V(b4)
}
S4()
{
P(b4);
P(b4);
5.某系统的进程状态转换图如图2.8所示,请说明:
图2.8 某系统的进程状态转换图
(1) 引起各种状态转换的典型事件有哪些?
(2) 当我们观察系统中某些进程时,能够看到某一进程产生的一次状态转换能引起另一进程作一次状态转换,在什么情况下,当一个进程发生转换3时能立即引起另一个进程发生转换1?
(3) 试说明是否会发生下述因果转换:
2---->1
3---->2
4---->1
解:(1)在本题所给的进程状态图中,存在四种状态转换.当进程调度程序从就绪队列中选取一个进程投入运行引起转换,当进程调度程序从就绪队列中选取一个进程投入运行时引起转换1;正在执行的进程如因时间片用完而被暂停执行就会引起转换2;正在执行的进程因等待的事件尚未发生而无法执行(如进程请求完成I/O)则会引起转换3;当进程等待的事件发生时(如I/O完成)则会引起转换4.
(2) 如果就绪队列非空,则一个进程的转换3会立即引起另一个进程的转换1.这是因为一个进程发生转换3意味着正在执行的进程由执行状态变为阻塞状态1.这时处理机空闲,进程调度程序必然会从就绪队列选取一个进程并将他投入运行,因此只要就绪队列非空,一个进程的转换3能立即引起另一个进程的转换1.
(3)所谓因果转换指的是有两个转换,一个转换的发生会引起另一个转换的发生,前一个转换称为因,后一个称为果,这两个转换称为因果转换,当然这种因果关系并不是什么时候都能发生,而是在一定条件下才会发生.
2---->1当进程发生转换2时,就必然引起另一进程的转换1.因为当发生转换2时,正在执行的进程从执行状态转变为就绪状态,进程调度程序必然会从就绪队列选取一个进程投入运行,即发生转换1.
3---->2某个进程的转换3决不可能引起另一进程发生转换2,这是因为当前执行进程从执行状态变为阻塞状态,不可能又从执行状态转变为就绪状态,
4---->1当处理机空闲且就绪队列为空是,某一进程的转换4就会引起该进程的转换1,因为此时从阻塞状态变为就绪状态,因而调度程序就会将就绪队列中的此进程投入运行
. 6 在单处理机的分时系统中,分配给进程P的时间片用完后,系统进行切换,结果调度到的仍然是进程P,有可能出现上述情形吗?如果可能请说明理由?
解,有可能出现上述情况。例如,若在进程P时间片用完后,被追回到就绪队列时,就绪队列为空,这样进程P 就是就绪队列中唯一的一个进程,于是调度程序
选种的进程必然是进程P,又如在按优先级调度的系统中,就绪队列按进程优先级排列,在进程P时间片用完后回到就绪队列时,若其优先级高于当前就绪队列中的其它进程,则它排在就绪队列之首,从而再次被调度程序选种并投入运行。
7 桌上有一个空盘,允许存放一只水果。爸爸可向盘中放苹果,也可以向盘中放橘子,儿子专等吃盘中的橘子,女而专等吃盘中的苹果。规定当盘空时只能放一只水果供吃着取用,请用p,v原语实现爸爸,儿子,女儿三个并发进程的同步。
解,在本题中,应设置三个信号量S,SO,Sa,信号量S表示盘子是否为空,信号量So表示盘子是否有橘子,信号量Sa表示盘子是否有苹果,其初值为0。同步
描述如下:
int s=1;
int sa=0;
int so=0;
main()
{
cobegin
father();
son();
daughter();
coend
}
father()
{
while(1)
{
p(S)
将水果放入盘中:
if(放入的是橘子) v(So);
else
v(Sa);
}
}
son()
{
while(1)
{
p(So)
从盘子中取出橘子;
v(s);
吃橘子;
}
}
daughter()
{
while(1)
{
p(Sa)
从盘子中取出橘子;
v(s);
吃苹果;
}
}
8 (上海交通大学1996年试题)哲学家甲请哲学家乙,丙,丁到某处讨论问题,约定全体到齐后开始讨论;在讨论的间隙四位哲学家进餐,每位进餐是都需要使用刀,叉各一把,餐桌上的布置如图2.9所示。请用信号量及p,v原语操作说明
四位哲学家的同步,互斥过程。
解,在本题中,应设置四个信号量fork1,fork2,knife1,knife2,其初值均
为1,分别表示叉1,叉2,刀1,刀2是否可用。同步描述如下:
int fork1=1;
int fork2=1;
int knife1=1;
int knife2=1;
main()
{
cobegin
Pa();
Pb();
Pc();
Pd();
coend
}
Pa()
{
while(1)
{
p(knife1);
P(fork1);
进餐 V(knife1);
V(fork1);
讨论问题
}
}
Pb()
{
while(1)
{
p(knife2);
P(fork1);
进餐 V(knife2);
V(fork1);
讨论问题
}
}
Pc()
{
while(1)
{
p(knife2);
P(fork2);
进餐 V(knife2);
V(fork2);
讨论问题
}
}
Pd()
{
while(1)
{
p(knife1);
P(fork2);
进餐 V(knife1);
V(fork2);
讨论问题
}
}
while(1)
{
p(knife1=1);
}
}
9.某数据库有一个写进程,多个读进程,他们之间读,写操作的互斥要求是:写进程正在写该数据库时不能有其他进程读该数据库,读进程之间不互斥,可以同时读该数据库.请用信号量P.V操作描述这一组进程的工作进程.
解:在本题中,允许读进程同时读数据库,但写进程正在写数据库时不允许其他进程读数据库,也不允许其他进程写该数据库.为了解决读,写进程之间的同步,应设置两个信号量和一个共享变量:读互斥信号量rmutex,用于使读进程互斥地访问共享变量count,其初值为1;写互斥信号量wmutex,用于实现写进程与读进程的互斥及写进程与写进程的互斥,其初值为1;共享变量count,用于纪录当前正在读数据库的读进程数目,初值为
0.其工作、过程如下:
int rmutex=1;
int wmutex=1;
int count=0;
main()
{cobegin
reader();
writer();
coend}
reader()
{while(1)
{p(rmutex);
if (count==0) p(wmutex);
count++;
v(rmutex);
读数据库;
p(rmutex);
count--;
if (count==0) v(wmutex);
v(rmutex);
}
}
writer()
{while (1)
{p(wmutex);
写数据库;
v(wmutex);
}}
在本题中,要注意对信号量rmutex意义的理解.rmutex是一个互斥信号量,用于使读进程互斥地访问共享变量count,该信号量并不表示读进程的数目,表示读进程的数目的是共享变量count.当一个读进程要读数据库时,应将读进程计数count加1;如果此前数据库无读进程,还应对写进程互斥信号量wmutex做p操作,这样,若数据库中无写进程,则通过p操作阻止写进程写,若数据库有无写进程,则通过p 操作让读进程等待.
10 (华中理工大学1999年试题)设公共汽车上,司机和售票员的活动分别表示是
:
司机的活动:启动车辆;
正常行车;
到站停车;
售票员的活动:关车门;
售票;
开车门;
在汽车不断的到站,停车,行使过程中,这两个活动有什么 同步关系?用 信号
量及p,v操作实现它们的同步。
解,在汽车行使过程中,司机活动和售票员活动之间的同步关系为:售票员关车
门后,向司机发开车信号,司机接到开始信号后开始启动车辆,在汽车正常行使
工程中售票员售票,到站时司机停车,售票员在车听后开车门让乘客上下车。因
此司机启动车辆的动作必须与售票员关车取得同步,售票员开车门的门的动作也
必须与司机听车的动作取得同步,
在本题中,应设置两个信号量,S1,S2,S1表示是否允许司机启动车辆,其初值
为0,S2表示是否允许售票员开门,其初值为0。用p,v原语描述如下:
int S1=0;
int S2=0;
main()
{
cobegin
driver();
busman();
coend
}
driver()
{
while(1)
{
p(S1);
启动车辆;
正常行车;
到站停车;
V(s2);
}
}
busman()
{
while(1)
{ 关车门;
v(s1);
售票;
p(s2);
开车门;
上下乘客;
}
}
用p,v操作来控制现实生活中的操作流程是一类常见的试题。这类试题要求解题者能将生活中的控制流程用形式化的方式表达出来。
11.设有一个发送者进程,其流程图如图2.10 所示. S 是用于实现进程同步的信号量,MUTEX 用于实现进程互斥的信号量.试问流程图中的 A B C D 四框中应填写什么?假定缓冲区有无限多个, S 和 MUTEX 的初值应为多少?
解:由上述分析可知, A B C D 四框应分别填入:
A框 P(MUTEX)
B框 V(MUTEX)
C框 P(S)
D框 P(MUTEX)
开始时,消息链上没有可供接收的信息,所以 S 的初值为0 ;互斥信号量 MUTEX 的初值应为1.
12 下述程序是解决两个进程互斥访问临界区问题的一种方法,试从"互斥" ."有空让进"."有限等待"等三个方面讨论它是否正确.
int c1=1;
int c2=1;
main()
{
cobegin
P1();
p2(); /进程P1. P2并发执行/
coend
}
p1() /第一个进程P1/
{
while(1)
{other section 1;
do c1=1-c2;
while(c2=0);
critical section; /其它部分/
c1=1;
}
}
p2()/ 第二个进程P1/
{
while(1)
{other section 2; /其它部分/
do c2=1-c1;
while(c1=0);
critical section; /临界区/
c2=1;
}
}
解;从本题给出解决两个进程互斥访问临界区的实现算法中可以看出,全局变量C1 .C2 的初值为1,进程P1 进入临界区之前,要执行do .....while 循环语句,查看变量C2的值是否为0 (可理解为查看临界资源是否空),
若C2 为0 循环等待,否则 进入临界区执行,此时变量 C1 在do .....while 循环语句中重新赋了值(一般情况下值 为0 ,可理解为将临界区访问标志设置为 1 ,即未访问).同样,进程P2 进入临界区之前,查看变量C2的值是否为0 (可理解为查看临界资源是否空),若C2 为0 循环等待,否则 进入临界区执行,此时变量 C2在do .....while 循环语句中重新赋了值(一般情况下值 为0 ),当它退出临界区时,又将c2设置为1.
从"互斥"方面看,由于c1,c2的初值为1,在通常情况下,本题给出的访问临界区的实现算法能够满足互斥的要求.但在后面给出的特殊程序调度次序下,互斥条件无法满足.
若系统调度到进程p1,p1一直运行到进入了临界区,假定这时程序进行进程切换,暂停进程p1的执行转而调度进程p2.此时,变量c2的值为1,变量c1的值为0,因而在此循环语句处循环执行.
若系统在进程执行完do c2=1-c1时进行进程切换,则此时c1的值为0,变量c2的值为1.当进程p1再次执行时,它将执行完临界区中的代码并退出临界区,然后执行语句c1=1,这时变量c1,c2的值均为1,若这时程序进行进程切换,调度p2运行,因此时变量c1的值为1,故进程跳出do .....while 循环语句,进入临界区执行,若机车国内p2在临界区执行时,系统再次进行系统切换,调度进程p1执行,由于此时变量c2的值为1,因此进程p1可以进入临界区,从而无法满足若干进程申请进入临界区时候,只允许一个进程进入且至多只允许一个进程处于临界区的条件.图2.11描述可上述情况.
从"有空让进"方面看,当两个进程中的一个进程执行do .....while 循环语句时,为描述方便,不妨设为p1,由于c2的初值为1且进程p2退出临界区后将变量c2的值设置为1,因此只要在当前进程p2不在临界区且执行了语句c2=1,则变量c2的值为1,因此进程p1在do .....while 循环语句将变量c1设置为0并跳出循环,随后进入临界区.对于进程p2,其情况也是类似的.从上述分析可以看出,该实现算法遵循"空闲让进"的原则.
从"有限等待"方面看,若两个进程当前今不在临界区中,则任何一个申请进入临界区的进程都可以进入临界区(分析与有空让进部分相同),若当前有一个进程在临界区中执行,另一个进程申请进入临界区,为了描述方便不妨设为进程p1在临界区中执行,进程p2申请进入临界区,则进程p1会在有限的时间内执行完临界区中的代码并退出临界区,将变量c1设置为1,因此进程p2会因为变量c1的值变为1而跳出出do .....while 循环语句,
进入临界区.从上述分析可以看出,该实现算法遵循"有限等待"的原则.
13.(1)写出P .V 操作的定义.
(2)有三个进程PA . PB 和.PC 合作解决文件打印问题: PA 将文件纪录从磁盘读入贮存的缓冲区 1,每次执行依次读一个记录;PB将缓冲区1的内容复制到缓冲区2,每执行依次复制一个记录.PC 将缓冲区 2的内容打印出来,每执行依次打印一个记录.缓冲区的大小等于一个记录;请用P .V 操作来保证文件的正确打印.
解:
(1)P .V 操作是两条原语 ,它们的定义如下:
P 操作 / P 操作记为P(S),其中S 为一信号量,它执行时主要完成下述工作:
S=S-1
若S>=0,则进程继续运行.
若S<0,则进程被阻塞,并将它插入该信号量的等待队列中.
V 操作/ V 操作记为V(S),其中S 为一信号量,它执行时主要完成下述工作:
若S>0,则进程继续运行.
若S<=0,则从信号量等待队列中移出队首进程,使其变为就绪状态.
(2)在本题中没,进程PA . PB 和.PC之间的关系为:PA 与 PB共用一个单缓冲区,而 PB 又与PC 共用一个单缓冲区,其合作方式可用图2.12表示.当缓冲区1为空是,进程PB 可将一个纪录读入其中;若缓冲区1有数据且缓冲区2为空,PB 可将记录从缓冲区1复制到缓冲区2中;若缓冲区2中有数据,则进程可以打印记录.在其它条件下,相应进程必须等待.事实上,这是一个生产者_--消费者问题.
图2.12
为遵循这一同步规则.应设置四个信号量empty1 .empty2 .信号量empty1 .full 1.full 2,信号量empty1 与empty2 分别表示缓冲区1及缓冲区2是否为空,其初值为1;信号量full 1 及full 2分别表示缓冲区1及缓冲区2是否有记录可供处理,其初值为0.其同步描述如下:
int empty 1=1;
int empty 2=1;
int full 1=0;
int full 2=0;
main()
{
cobegin
PA();
pB();
pC();
coend
}
pA()
while(1)
{从磁盘读入一个记录;
p(empty 1);
将记录存入缓冲区1;
v(full 1);
}
pB()
while(1)
{
P(full 1);
从缓冲区1中取出记录;
V(empty 1);
p(empty 2);
将记录存入缓冲区2;
V(full 2);
}
pC()
while(1)
{p(full 2);
从缓冲区2中取出记录;
v(empty 2);
打印记录;
}
}
本题也是一个生产者_--消费者问题.其中的难点在于PB既是一个生产者又是一个消费者.
14 设有8个程序
展开阅读全文