进程同步练习
进程同步习题全

process W1 begin L3: P(s1); y:=B; V(mutex); 打印y goto L3 end;
进程管理
process R2 begin L2:从键盘上读数据送x2; P(mutex); B:=x2; V(s2); goto L2 end;
进程管理
【例】进程P1使用缓冲区buffer向进程P2,P3,P4发 送消息,要求每当P1向buffer中发消息时,只有 当P2,P3,P4进程都读取这条消息后才可再向 buffer中发送消息。利用PV原语描述进程的动作 序列
P2 P1 buffer P3
P4
进程管理
【解答】设置信号量初值S1=S2=S3=0,S=3 进程P1 进程P2 进程P3 P4 P(S) P(S1) P(S2) P(S3) P(S) 读消息 读消息 读消息 P(S) V(S) V(S) V(S) 发送消息到 Buffer V(S1) V(S2)
进程管理
生产者i repeat P(empty) P(mutex) putdata V(mutex) V(full)
消费者i repeat P(full) P(mutex) getdata V(mutex) V(empty)
进程管理
【例】多个生产者,多个消费者,N个buffer,多次循环存 取buffer,即多个生产者不断进行putdata操作,多个消费 者不断进行getdata操作 【解答】 只有buffer有空间时才能进行putdata操作 只有buffer有数据时才能进行getdata操作 不允许多个消费者和多个生产者同时操作 信号量 full:表示buffer是否有数据,初值为0 empty:表示buffer是否为空,初值为n mutex:表示buffer是否可操作,初值为1
进程同步练习(答案)

一、选择题1、我们把在一段时间内,只允许一个进程访问的资源,称为临界资源,因此,我们可以得出下列论述,请选择一条正确的论述。
A 、对临界资源是不能实现资源共享的B 、对临界资源,应采取互斥访问方式,来实现共享C 、为临界资源配上相应的设备控制块后,便能被共享D 、对临界资源应采取同时访问方式,来实现共享2、在多进程的系统中,为了保证公共变量的完整性,各进程应互斥进入临界区。
所谓临界区是指_______。
A 、一个缓冲区B 、一段数据区C 、同步机制D 、一段程序3、在操作系统中,信号量表示资源实体,信号量表示资源实体,是一个与队列有关的是一个与队列有关的_________变量,其值仅能用P 、V 操作来改变。
A 、实体B 、整形C 、布尔型D 、记录型4、用P 、V 操作可以解决_______互斥问题。
A 、某些B 、一个C 、一切D 、大多数5、对于记录型信号量,在执行一次P 操作时,信号量值应当_____A__A_(3)___;当其值为______B_B_(4)__时,进程应阻塞。
在执行V 操作时,信号量的值应当______C C (2)___;当其值为____D_D_(3)__时,应唤醒阻塞队列中的进程。
A 、C :(1)不变;(2)加1;(3)减1;(4)加指定数值;(5)减指定数值B 、D :(1)大于0;(2)大于等于0;(3)小于等于0;(4)小于0 6、对于两个并发进程,其互斥信号量为mutex ;若mutex=0,则表明_______。
A 、没有进程进入临界区B 、有一个进程进入临界区但没进程处于阻塞状态C 、一个进程进入临界区而另一个进程正处于等待进入临界区状态D 、有两个进程进入临界区7、设有5个进程共享一个互斥段,如果允许有3个进程同时进入互斥段,则所采用的互斥信号量的初值应是__________。
A 、5 B 、3 C 、1 D 、0 8、N 个进程共享某一临界资源,则互斥信号量的取值范围为_________。
第7章进程同步(含答案)

5、用P、V操作管理临界区时,任何一个进程在进入临界区之前应调用(P)操作,退出临界区时应调用(V)操作。
6、在多道程序系统中,进程之间存在着的不同制约关系可以划分为两类:(同步)与(互斥)。(同步)指进程间具有一定逻辑关系;(互斥)是指进程间在使用共享资源方面的约束关系。
INT BUFFER-SIZE=N;
INT SF=0;/*BUFFER中是否有可取的信息*/
INT SE=N;/* BUFFER中是否有空位置以存放信息*/
MAIN()
{
GET()
COMPUTE()
}
4、桌上有一空盘,允许存放一只水果,爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供吃者取出,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步。
{ int b2=0:/*表示进程S2是否可以开始执行*/
int b3=0:/*表示进程S3是否可以开始执行*/
int b4=0:/*表示进程S4是否可以开始执行*/
Main()
s1();
s2();
s3()
s4()
}
6、 读者/写者问题。有一数据区为多个进程所共享,假设一些进程只能对该数据区完成读操作(读者),而另一些进程只能对其完成写操作(写者),读者和写者要遵守以下的约束:
Int SF=0;/*信号量SF用于表示缓冲区中有无可供计算的信息。*/
Main()
{
get();
compute();}
3、**在视频通信系统中,由进程PA采集一帧图像信息并存入环形缓冲区buffer,进程PB从buffer中取一帧数据进行处理,假设buffer的大小为n,试用P、V操作实现PA和PB。(类似生产者-消费者)
进程同步经典习题

进程同步经典习题1.某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。
若把一个购票者看作一个进程,请用PV操作实现管理。
解:定义一个信号量S,初值为20parbeginprocess pl(l=1,2,……)beginwait(S);进入售票厅;购票;退出;signal(S)end2.桌上有一空盘,允许存放一个水果,爸爸可向盘内放苹果,妈妈可向盘内放桔子,儿子专等吃盘内的桔子,女儿专等吃盘中的苹果,请用P、V 操作实现爸爸、妈妈、儿子、女儿四个并发进程的同步与互斥。
int S=1;int Sa=0;int Sb=0;main(){cobeginfather();mather();son();daughter();coend}father() mather(){while(1) { while(1){p(S); {p(S) ;将一个苹果放入盘中将一个桔子放入盘中V(Sa);} V(Sb);}} }son() daughter(){ while(1) { while(1){p(Sb); { p(Sa);从盘中取出桔子从盘中取出苹果V(S);吃桔子;} V(S);吃苹果;}}3.生产围棋的工人不小心把相等数量的黑子和白子混装在一个盒子里,现在要用自动分拣系统把黑子和白子分开,该系统由两个并发执行的进程PA和PB组成,系统功能如下:(1)PA专拣黑子,PB专拣白子;(2)每个进程每次只拣一个子,当一个进程拣子时,不允许另一个进程去拣子;(3)当一个进程拣一个子(黑或白)后,必须让另一个进程去拣一个子(白或黑)请回答:①这两个并发进程之间的关系是同步还是互斥②写出PV操作管理时应定义的信号量及其初值。
③根据定义的信号量,写出用PV操作管理两个并发进程的程序答:①两个进程之间是同步关系②定义两个信号量S1和S2,初值为1和0③process PA process PAbegin beginrepeat repeatwait(S1) wait(S2)拣黑子拣白子signal(S2) signal(S1)until false until falseend end4.有一阅览室,读者进入时必须先在一张登记表上登记,该表为每一座位列出一个表目,包括座号、姓名,读者离开时要注销登记信息;假若阅览室共有100个座位。
第二章进程同步典型习题

east() {
p(emutex); if e=0 then p(wait); e++; v(emutex); 车辆过桥; p(emutex); e--; if e=0 then v(wait); v(emutex);
west() {
p(wmutex); if w=0 then p(wait); w++; v(wmutex); 车辆过桥; p(wmutex); w--; if w=0 then v(wait); v(wmutex);
process E->W; ; begin …… P(S1); ( ); 过桥; 过桥; V(S2); ( ); …… end; ;
process W->E; ; begin …… P(S2); ( ); 过桥; 过桥; V(S1); ( ); …… end; ;
3.设有三个进程A、B、C,其中A与B构成一 3.设有三个进程A、B、C,其中A 设有三个进程A、B、C,其中 对生产者和消费者,共享一个由1个缓冲区组 对生产者和消费者,共享一个由1 成的缓冲池;B与C也构成一对生产者和消费 成的缓冲池;B与 ;B 者,共享另一个由1个缓冲区组成的缓冲池。 共享另一个由1个缓冲区组成的缓冲池。 用PV操作描述它们的同步关系。 PV操作描述它们的同步关系。 操作描述它们的同步关系
1.答: 答 1)各进程之间的关系是互斥 ) 2)可定义一个互斥信号量 S,S的初值为 1。用 PV操作管理时 S可能 ) , 的初值为 。 操作管理时 可能 的取值为 1、0及<0, 、 及 , 这些值的含义是: 这些值的含义是: S=1时表示无车辆在 段行驶,若有某车辆欲进人AB段则立即可以 时表示无车辆在AB段行驶,若有某车辆欲进人 段则立即可以 时表示无车辆在 段行驶 进入。 进入。 S=0时表示已有一车辆正在 AB段行驶,这时任何其它车辆欲进入 段行驶, 时表示已有一车辆正在 段行驶 AB段都必须等待。 段都必须等待。 段都必须等待 S<0时其绝对值 表示在 A点等待进入 AB段行驶的车辆数。 时其绝对值|S|表示在 点等待进入 段行驶的车辆数。 时其绝对值 段行驶的车辆数 3)用PV操作管理时进程的程序如下: 操作管理时进程的程序如下: ) 操作管理时进程的程序如下 begin 到达A点 到达 点; P(S); ( ) 段行驶; 在AB段行驶; 段行驶 驶出B点 驶出 点; V(S); ( ) end
第二章进程同步典型习题

1.答: 答 1)各进程之间的关系是互斥 ) 2)可定义一个互斥信号量 S,S的初值为 1.用 PV操作管理时 S可能 ) , 的初值为 . 操作管理时 可能 的取值为 1,0及<0, , 及 , 这些值的含义是: 这些值的含义是: S=1时表示无车辆在 段行驶,若有某车辆欲进人AB段则立即可以 时表示无车辆在AB段行驶,若有某车辆欲进人 段则立即可以 时表示无车辆在 段行驶 进入. 进入. S=0时表示已有一车辆正在 AB段行驶,这时任何其它车辆欲进入 段行驶, 时表示已有一车辆正在 段行驶 AB段都必须等待. 段都必须等待. 段都必须等待 S<0时其绝对值 表示在 A点等待进入 AB段行驶的车辆数. 时其绝对值|S|表示在 点等待进入 段行驶的车辆数. 时其绝对值 段行驶的车辆数 3)用PV操作管理时进程的程序如下: 操作管理时进程的程序如下: ) 操作管理时进程的程序如下 begin 到达A点 到达 点; P(S); ( ) 段行驶; 在AB段行驶; 段行驶 驶出B点 驶出 点; V(S); ( ) end
思考:某高校计算机系开设网络课并安排上机实习, 思考:某高校计算机系开设网络课并安排上机实习,假
设机房有共有2m台机器, 名学生选该课, 设机房有共有 台机器,有2n名学生选该课,规定: 台机器 名学生选该课 规定: 1)每2个学生组成一组,各占一台机器,合作完成 个学生组成一组, ) 个学生组成一组 各占一台机器, 上机实习 2)只有一组 个学生到齐,并且此时机房有空闲机 个学生到齐, )只有一组2个学生到齐 器时, 器时,该组学生才能进入机房 3)上机实习由一名教师检查,检查完毕,一组学生 )上机实习由一名教师检查,检查完毕, 同时离开机房 设计相应的数据结构,并用wait,signal操作模拟上面 设计相应的数据结构,并用 , 操作模拟上面 实习过程. 提示:除了有学生和教师进程外, 实习过程. (提示:除了有学生和教师进程外,还应 该有门卫进程) 该有门卫进程)
操作系统-进程同步-信号量练习题

1【单选题】用P、V操作管理临界区时,互斥信号量的初值应定义为( A)。
•A,1•B,0•C,-1•D,任意值2【单选题】在操作系统中,对信号量S的P原语操作定义中,使进程进入相应等待队列等待的条件是( )。
•A,S>0•B,S = 0•C,S<0•D,S<>0我的答案:C3【单选题】信号量S的初值为8,在S上执行了10次wait 操作,6次signal操作后,S的值为(D )。
•A,10•B,8•C,6•D,4P操作每执行一次,信号量减1;V操作每执行一次,信号量加1.所以答案为8-10+6 = 44【单选题】用V操作唤醒一个等待进程时,被唤醒进程的状态应变成( B)状态。
•A,执行•B,就绪•C,阻塞•D,挂起被唤醒的进程由等待状态变为就绪状态。
5【单选题】利用Wait和signal操作可以( )。
•A,实现进程互斥和同步•B,检测死锁•C,解除死锁•D,防止死锁我的答案:A6【单选题】两个并发进程,设互斥信号量mutex(初值为1),若信号量=0;则(B )•A,表示没有进程进入临界区•B,表示有一个进程进入临界区•C,表示有一个进程进入临界区,另一个进程等待进入•D,表示两个进程进入临界区临界区不允许两个进程同时进入,D选项明显错误。
mutex初值为1,表示允许一个进程进入临界区,当有一个进程进入临界区且没有进程等待进入时,mutex值减1,变为0。
7【单选题】V操作是对信号量执行加1操作,意味着释放一个单位资源,加1后如果信号量的值等于零,则从等待队列中唤醒一个进程,现进程变为等待状态,否则现进程继续进行。
•A,对•B,错我的答案:B8【单选题】有3个进程,两台打印机,用wait和sigual操作来实现互斥访问打印机,则信号量S的取值范围是( )•A,2,1,0,-1•B,3,2,1,0•C,2,1,0,-1,-2•D,1,0,-1,-2我的答案:如果n个进程共享两个打印机,信号量取值范围:-(n-2)~2;9【单选题】设与某资源相关的资源信号量K,初值为3,当前值为1,则可用资源个数为( ),等待资源的进程数为( )。
进程同步例题

(一)图书馆有100个座位,每位进入图书馆的读者要在登记表上登记,退出时要在登记表上注销。
要几个程序?有多少个进程?(答:一个程序;为每个读者设一个进程)(1)当图书馆中没有座位时,后到的读者在图书馆为等待(阻塞)(2)当图书馆中没有座位时,后到的读者不等待,立即回家。
解(1 )设信号量:S=100; MUTEX=1 P(S)P(MUTEX)登记V(MUTEX)阅读P(MUTEX)注销V(MUTEX)V(S) 解(2)设整型变量COUNT=100; 信号量:MUTEX=1;P(MUTEX);IF (COUNT==0){ V(MUTEX);RETURN;}COUNT=COUNT-1;登记V(MUTEX);阅读P(MUTEX);COUNT=COUNT+1;V(MUTEX); RETURN;(二)一家四人父、母、儿子、女儿围桌而坐;桌上有一个水果盘;(1)当水果盘空时,父亲可以放香蕉或者母亲可以放苹果,但盘中已有水果时,就不能放,父母等待。
当盘中有香蕉时,女儿可吃香蕉,否则,女儿等待;当盘中有苹果时,儿子可吃,否则,儿子等待。
解设信号量:SE=1 (空盘子);SA=0 (放了苹果的盘子);SB=0 (放了香蕉的盘子)父亲REPEAT剥香蕉P(SE)放香蕉V(SB)UNTIL FALSE 母亲REPEAT削苹果P(SE)放苹果V(SA) UNTIL FALSE儿子P(SA) 拿苹果V(SE) 吃苹果女儿P(SB) 拿香蕉V(SE) 吃香蕉(2)解:再增加两个信号量:SF=0, SM=0父亲REPEATP(SF)剥香蕉P(SE)放香蕉V(SB)UNTIL FALSE 母亲REPEATP(SM)削苹果P(SE)放苹果V(SA) UNTIL FALSE儿子V(SM) P(SA) 拿苹果V(SE) 吃苹果女儿V(SF) P(SB) 拿香蕉V(SE) 吃香蕉(三)有一个超市,最多可容纳N个人进入购物,当N个顾客满员时,后到的顾客在超市外等待;超市中只有一个收银员。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6 用P,V操作解决司机与售票员的问题 操作解决司机与售票员的问题 司机进程: 司机进程: while (true){ 启动车辆 正常驾驶 售票员进程: 售票员进程: while (true){ 关门 售票
到站停车 开门 }… }… of Information Science and Engineering,Lanzhou University School
School of Information Science and Engineering,Lanzhou University OS Autumn 2009 2
3 P0源源不断往传送带上放置 零件或 零 源源不断往传送带上放置A零件或 源源不断往传送带上放置 零件或B零 传送带上最多放N个零件 如果是A 个零件。 件,传送带上最多放 个零件。如果是 零件, 取下加工 如果是B零件 取下加工; 零件, 零件,P1取下加工;如果是 零件,P2 取下加工。 取下加工。用信号量实现三个进程的同 步
OS Autumn 2009
6
7对于下面的程序: 对于下面的程序: 对于下面的程序
int result; void dec () { int i; for(i=1,i<=10;i++) result--; } void main() { result=100;parbegin (dec (), dec (), dec ()); wri of Information Science and Engineering,Lanzhou University OS Autumn 2009
3
4 物业中心有 (N>1)位维修员,一本一次只 物业中心有N( )位维修员, 允许一人填写的维修记录表。 允许一人填写的维修记录表。如没有维修任务 则维修员睡觉。住户有维修请求时,到物业中 则维修员睡觉。住户有维修请求时, 心在维修记录表上进行登记, 心在维修记录表上进行登记,每人每次只能登 记一个请求。当累计有三个维修请求时, 记一个请求。当累计有三个维修请求时,唤醒 维修员去进行维修。维修员完成维修任务后, 维修员去进行维修。维修员完成维修任务后, 回到物业中心在维修记录上填写维修结果。 回到物业中心在维修记录上填写维修结果。如 没有新的维修请求或请求少于三个时, 没有新的维修请求或请求少于三个时,维修员 休息睡觉。 休息睡觉。请用信号量机制解决维修员与住户 的同步问题。 的同步问题。
School of Information Science and Engineering,Lanzhou University OS Autumn 2009 7
8第二类读者写者问题 第二类读者写者问题 1)多个读者可以同时进行读 ) 2)写者必须互斥(只允许一个写者写, )写者必须互斥(只允许一个写者写, 也不能读者写者同时进行) 也不能读者写者同时进行) 3)写者优先于读者(一旦有写者,则 )写者优先于读者(一旦有写者, 后续读者必须等待, 后续读者必须等待,唤醒时优先考虑 写者) 写者)
练习
1.用wait,signal操作解决下图之同步问题 用 操作解决下图之同步问题: 操作解决下图之同步问题
get
copy
put
f
s
t
g
1
School of Information Science and Engineering,Lanzhou University OS Autumn 2009
2.桌上有一空盘,一次只允许放一个水果。爸爸 桌上有一空盘,一次只允许放一个水果。 桌上有一空盘 向盘中方苹果或橘子,儿子专等橘子吃, 向盘中方苹果或橘子,儿子专等橘子吃,女儿 专等苹果吃。用信号量实现三人的同步。 专等苹果吃。用信号量实现三人的同步。 三个并发进程R、 共享单缓冲区B。 (三个并发进程 、W1、W2共享单缓冲区 。 、 共享单缓冲区 进程R从输入设备上读入一个自然数存放到 从输入设备上读入一个自然数存放到B 进程 从输入设备上读入一个自然数存放到 中的数是奇数, 中,若B中的数是奇数,则由进程 中的数是奇数 则由进程W1取出打 取出打 中的数是偶数, 印,若B中的数是偶数,则由进程 中的数是偶数 则由进程W2取出打 取出打 用信号量机制实现同步, 印。用信号量机制实现同步,使这三个进程能 正确执行。) 正确执行。)
假设进程可以以任意相对速度执行, 假设进程可以以任意相对速度执行,且一个 值由机器指令载入寄存器后只能减1。 值由机器指令载入寄存器后只能减 。确定 此并发程序执行后变量result最终值的上限 此并发程序执行后变量 最终值的上限 和下限并解释原因。 和下限并解释原因。要使此并发程序有确定 的结果,用信号量如何实现。 的结果,用信号量如何实现。
School of Information Science and Engineering,Lanzhou University OS Autumn 2009
8
School of Information Science and Engineering,Lanzhou University OS Autumn 2009 4
5 利用信号量来描述前趋关系
s3
s1
s2
s5
s6
s4
School of Information Science and Engineering,Lanzhou University OS Autumn 2009 5