进程同步控制问题练习
4.2 进程同步习题
![4.2 进程同步习题](https://img.taocdn.com/s3/m/bf83e660b84ae45c3b358ca6.png)
【例】现有4个进程R1,R2,W1,W2。它们共享 可以存放一个数据的缓冲器B。进程R1每次把磁 盘上读出的一个数据存到缓冲器B中,供进程W1 打印输出;进程R2每次从键盘上读一个数据存放 到缓冲器B,供W2打印输出。当一个进程把数据 存放到缓冲器后,在该数据还没有打印输出之前 不准任何进程再想缓冲器中存数据。当一个进程 已把缓冲器中的数据打印输出后,在缓冲器中还 没有存如新数据之前不准任何进程再从缓冲器中 取数打印。问怎样用PV操作使这4个进程并发执 行时能相互协作地工作?
• Semaphore Customers = 0; • Semaphore Barber = 0; • Mutex accessSeats = 1; • int NumberOfFreeSeats = N; //total number of seats
Customer() { while(true) Barbers() { { P(accessSeats); //lock while(true) if(NumberOfFreeSeats >0) { { P(customers); NumberOfFreeSeats--; //等待顾客,睡眠 V(customers);//通知理发师 P(accessSeats); //lock V(accessSeats);//unlock NumberOfFreeSeats++; P(barbers);//等待理发师 V(accessSeats); //unlock 顾客理发 理发中… } V(barbers) ; else }//while V(accessSeats); } }//while }
3 两个进程可以改为 semaphore S1=1 semaphore S2=0 Process X L1:P(S1) 使用资源r V(S2) goto L1
进程同步习题
![进程同步习题](https://img.taocdn.com/s3/m/71994e7002768e9951e73892.png)
补充题1:有三个进程p1、p2、p3协作解决文件打印问题:系统有两个环形缓冲池,每个缓冲池有n个缓冲区;p1每次将1条记录从磁盘读入缓冲池1,p2每次将1条记录从缓冲池1复制到缓冲池2,p3每次从缓冲池2取出1条记录打印输出。
请用信号量机制实现这三个进程的同步。
信号量提示:full1、empty1、mutex1、in1、out1;full2、empty2、mutex2、in2、out2。
答:方法1,记录型信号量机制:var mutex1、mutex2、empty1、empty2、full1、full2:semaphore:=1,1,n,n,0,0;buffer1:array[0,…,n-1] of item;buffer2:array[0,…,n-1] of item;int1,out1,int2,out2:integer:=0,0,0,0;p1进程:beginrepeat……从磁盘读入一条记录到nextp;……Wait(empty1);Wait(mutex1);Buffer1(int1):=nextp;In1: =(int1+1) mod n;Signal(mutex1);Signal(full1);Until false;EndP2进程:BeginRepeatWait(full1);Wait(mutex1);Nextc:=buffer1(out1);Out1:=(out1+1) mod n;Signal(mutex1);Signal(empty1);从buffer1取出1条记录;Until false;……repeat……Wait(empty2);Wait(mutex2);Buffer2(int2):=nextp;In2: =(int2+1) mod n;Signal(mutex2);Signal(full2);把记录放入buffer2中;Until false;EndP3进程:BeginRepeatWait(full2);Wait(mutex2);Nextc:=buffer2(out2);Out2:=(out2+1) mod n;Signal(mutex2);Signal(empty2);从buffer2取出1条记录打印;Until false;End方法2,AND型信号量机制var mutex1、mutex2、empty1、empty2、full1、full2:semaphore:=1,1,n,n,0,0;buffer1:array[0,…,n-1] of item;buffer2:array[0,…,n-1] of item;int1,out1,int2,out1,out2,:integer:=0,0,0,0;p1进程:beginrepeat……从磁盘读入一条记录到nextp;……SWait(empty1,mutex1);Buffer1(int1):=nextp;In1: =(int1+1) mod n;SSignal(mutex1,full1);Until false;EndP2进程:BeginRepeatSWait(full1,mutex1);Nextc:=buffer1(out1);Out1:=(out1+1) mod n;SSignal(mutex1,empty1);从buffer1取出1条记录;Until false;…………SWait(empty2,mutex2);Buffer2(int2):=nextp;In2: =(int2+1) mod n;SSignal(mutex2 ,full2);把记录放入buffer2中;Until false;EndP3进程:BeginRepeatSWait(full2,mutex2);Nextc:=buffer2(out2);Out2:=(out2+1) mod n;SSignal(mutex2,empty2);从buffer2取出1条记录打印;Until false;End补充题2:上题中如果两个缓冲池都是单缓冲区,则如何简化各进程的描述?提示:单缓冲区,故上题中的mutex、in、out均不需要。
进程同步习题全
![进程同步习题全](https://img.taocdn.com/s3/m/0c821b492b160b4e767fcfe7.png)
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
第7章进程同步(含答案)
![第7章进程同步(含答案)](https://img.taocdn.com/s3/m/1779caf871fe910ef12df889.png)
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。(类似生产者-消费者)
进程同步经典习题
![进程同步经典习题](https://img.taocdn.com/s3/m/945e25c3541810a6f524ccbff121dd36a32dc42b.png)
进程同步经典习题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个座位。
第二章进程同步典型习题
![第二章进程同步典型习题](https://img.taocdn.com/s3/m/368afbeb19e8b8f67c1cb909.png)
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操作模拟上面 设计相应的数据结构,并用 , 操作模拟上面 实习过程. 提示:除了有学生和教师进程外, 实习过程. (提示:除了有学生和教师进程外,还应 该有门卫进程) 该有门卫进程)
进程同步例题
![进程同步例题](https://img.taocdn.com/s3/m/8e863bea710abb68a98271fe910ef12d2af9a9ca.png)
1. 若有一个文件F ,供进程共享。
现把进程分成A 、B 两组,规定同组的进程可以同时读文件F ,但当有A 组(或B 组)的进程在读文件F 时不允许B 组(或A 组)的进程读文件F 。
现定义两个计数器C1和C2分别记录A 组和B 组中读文件F 的进程数。
当用P 、V 操作进行管理时需要三个信号量Sl Sl、、S2和SAB 才能保证正确的并发执行。
程序结构如下:Begin Sl ,S2S2,,SAB SAB::semaphore semaphore;;C1C1,,C2C2::integer integer;;S1:=1;S2:=1 ;SAB SAB::=1;C1=1;C1::=0=0;;C2C2::=0=0;;cobeginprocess Ai(i=1,2,…,…) )begin((1));C1:=C1十1;if Cl=1 then((2));((3));read file F((4))C1:=C1—1;if Cl=0 then((5))((6));end ;process Bj(j=1,2,…,…) )begin((7));C2:=C2十1;if C2=1 then((8));((9));read file F ;((10));C2:=C2=C2——1;if C2=0 then((11));((12)); end ;coend ;end ;回答:1.说明信号量S1,S2,SAB 的作用的作用2. 在上述程序的括号内填入适当的P 、V 操作,完善该程序。
操作,完善该程序。
2.一座山上有一个隧道,规定每次只允许一列火车过隧道,现在南方北方都有车要过隧道,如果把每个过隧道者看作一个进程,为保证安全.请用PV 操作实现正确管理。
理。
3.桌上有一个空盒,盒内只允许放一个水果,甲可向盒内放苹果,乙可向盒内放桔子。
丙专等吃盒中的苹果,丁专等吃盒中的桔子,若盒内已有水果,放者必须等待,若盒内没有自己要吃的水果,吃者必需等待,请回答下列问题:(1)(1)请给出四个之间的同步互斥关系。
进程同步练习
![进程同步练习](https://img.taocdn.com/s3/m/a90b80692b160b4e767fcf7d.png)
• 题目4: • 一个快餐店,有两个厨师,一个做中餐,一个做 西餐,厨师做完一份食物就放在窗口,由顾客自 取。窗口只能放下一份食物。到店顾客分两类: 要么只吃中餐,要么只吃西餐。试实现进程同步。 • 分析: • 窗口只能放一份食物,是临界资源,设一互斥信 号量mutex,初值为1 • 两个资源信号量:中餐S1,西餐S2,初值都为0 • 四个进程:中餐厨师,西餐厨师,中餐顾客,西 餐顾客
——处理机调度练习
题目1:假设有4道作业,它们的提交时刻及执行时间 由下表给出: 计算在单道程序环境下,采用先来先服务调度算法 和最短作业优先调度算法时的周转时间和平均带权 周转时间,并指出它们的调度顺序。
(1)先来先服务调度: 顺序:提交时间 开始执行时间 结束时间 1、 Ts1=10:00 10:00 Te1=12:00 2、 Ts2=10:20 12:00 Te2=13:00 3、 Ts3=10:40 13:00 Te3=13:30 4、 Ts4=10:50 13:30 Te4=13:50 T=0.25*(2+2.7+2.8+3)=2.625h W=0.25*(2/2+2.7/1+2.8/0.5+3/0.3)=4.825 (2)最短作业优先调度: 顺序:提交时间 开始执行时间 结束时间
• V操作 即Singal(S) V(S){ s.value++; if(S.value <= 0){从此资源相关的等待队列中唤醒一个进程;} }
• 进程同步问题的求解依据 ——信号量的两种应用
1.实现进程互斥
• • • • 分析题目中的资源、互斥资源,设置信号量及初值 分析题目中的进程,及其行为,进程访问的资源 利用所设置的信号量控制进程对资源的访问 必要时增加共享变量(如计数器),进程对共享变 量的访问是互斥的
进程同步问题习题
![进程同步问题习题](https://img.taocdn.com/s3/m/6f7e7a27af45b307e8719719.png)
1、理发店理有一位理发师、一把理发椅和n 把供等候理发的顾客坐的椅子,如果没有顾客,理发师便在理发椅上睡觉。
一个顾客到来时,它必须叫醒理发师。
如果理发师正在理发时又有顾客来到,则如果有空椅子可坐,就坐下来等待,否则就离开。
2、苹果桔子问题桌上有一只盘子,每次只能放入一只水果;爸爸专向盘子中放苹果(apple),妈妈专向盘子中放桔于(orange),一个儿子专等吃盘子中的桔子,一个女儿专等吃盘子里的苹果。
使用记录型信号量解决苹果桔子问题。
3、一座山有一个隧道,规定每次允许一列火车过隧道,现在南方北方都有车要过隧道。
如果把每个过隧道火车都看作一个进程,为保证安全,请用wait和signal原语操作实现正确管理。
var waiting : integer; /*等候理发的顾客数*/ CHAIRS:integer; /*为顾客准备的椅子数*/ customers, barbers,mutex : semaphore;customers := 0; barbers := 0; waiting := 0; mutex := 1;Procedure barber;beginwhile(TRUE); /*理完一人,还有顾客吗?*/P(cutomers); /*若无顾客,理发师睡眠*/P(mutex); /*进程互斥*/waiting := waiting – 1; /* */V(barbers); /*理发师去为一个顾客理发*等候顾客数少一个/V(mutex); /*开放临界区*/cut-hair( ); /*正在理发*/end;procedure customerbeginP(mutex); /*进程互斥*/if waiting<CHAIRS begin /*看看有没有空椅子*/waiting := waiting+1; /* 等候顾客数加1*/V(customers); /*必要的话唤醒理发师*/V(mutex); /*开放临界区*/P(barbers); /*无理发师, 顾客坐着养神*/get-haircut( ); /*一个顾客坐下等理发*/endV(mutex); /*人满了,走吧!*/end;varplate : integer;sp:semaphore;/* 盘子里可以放几个水果*/sg1:semaphore; /* 盘子里有桔子*/sg2:semaphore; /* 盘子里有苹果*/sp := 1; /* 盘子里允许放一个水果*/Sg1, := 0; /* 盘子里没有桔子*/sg2 := 0; /* 盘子里没有苹果*/cobeginprocess fatherbeginL1:削一个苹果;P(sp);把苹果放入plate;V(sg2);goto L1;end;process mother beginL2:剥一个桔子;P(sp);把桔子放入plate;V(sg1);goto L2;end;process sonbeginL3: P(sg1);从plate中取桔子;V(sp);吃桔子;goto L3;end;process daughter beginL4: P(sg2);从plate中取苹果;V(sp);吃苹果;goto L4;end;coend设信号量s表示隧道的互斥信号量,初始值为1。
习题第二章 进程控制与同步
![习题第二章 进程控制与同步](https://img.taocdn.com/s3/m/705f9aeab8f67c1cfad6b8b2.png)
第二章进程控制与同步本章学习要点●掌握程序顺序执行和并发执行的特点●掌握进程的定义及特征●深入领会进程状态及引起状态转换的典型原因●掌握进程同步与互斥●能够灵活应用信号量描述同步问题基本知识点2.1.1进程的概念1、前趋图2、程序的顺序执行3、程序的并发执行4、进程的定义及特征5、进程状态及其变化6、进程控制块2.1.2进程控制1、核心态和用户态2、进程创建3、进程撤消4、进程阻塞与唤醒2.1.3 线程1、线程的概念2、线程的实现、类型2.1.4互斥与同步的基本概念1、临界资源2、互斥3、同步的概念2.1.5 信号量1、信号量及P,V操作2、利用信号量实现互斥3、利用P,V操作描述前趋关系2.1.6 管程2.1.7 进程通信1、进程通信的类型2、消息缓冲通信3、信箱通信习题分析一、选择题1、在操作系统中,P,V操作是一种()A、机器指令B、系统调用指令C、作业控制命令D、低级进程通信原语2、对进程的管理和控制使用()A、指令B、原语C、信号量D、信箱3、若信号量S的初值为2,当前值为-1,则表示有()个进程等待。
A、0B、 1C、 2D、 34、用P,V操作管理临界区时,信号量的初值应定义为()A、-1B、0C、 1D、任意值5、临界区是()A、一个缓冲区B、一段共享数据区C、一段程序D、一个互斥资源6、信箱通信是一种()通信方式A、直接B、间接C、低级D、信号量7、操作系统通过()对进程进行管理A、JCBB、PCBC、DCTD、CHCT8、下述哪个选项不是管程的组成部分()A、局部于管程的共享数据结构B、对管程内的数据结构进行操作的一组过程C、管程外过程调用管程内数据结构的说明D、对局部于管程的数据结构设置初始值的语句9、系统的进程状态如下图所示,a是(①)状态,b是(②)状态,c是(③)状态。
1表示(④),2表示(⑤),3表示发生了等待事件,4表示等待事件结束。
下列情况中,当发生前者的状态转换时,(⑥)会导致发生后者的状态转换。
进程同步习题讲解
![进程同步习题讲解](https://img.taocdn.com/s3/m/85b42d2610661ed9ad51f3ae.png)
12.用P、V操作可以解决 A 互斥问题。 A. 一切 B. 某些 C. 正确 D. 错误 13.一个进程被唤醒意味着 D 。 A. 该进程重新占有了CPU B. 它的优先 权变为最大 C. 其PCB移至等待队列队首 D. 进程变为 就绪状态
26. 对于记录型信号量,在执行一次wait操作时,信号量 的值应当(A),当其值为(B)时,进程阻塞。在执行 signal操作时,信号量的值应当为(C),当其值为(D) 时,应唤醒阻塞队列中的进程。 A:(1)不变;(2)加1;(3)减1;(4)加指定数值; (5)减指定数值。 B:(1)大于0;(2)小于0;(3)大于等于0;(4)小 于等于0. C:(1)不变;(2)加1;(3)减1;(4)加指定数值; (5)减指定数值。 D:(1)大于0;(2)小于0;(3)大于等于0;(4)小 于等于0. 27. 用信号量S实现对系统中4台打印机的互斥使用, S.value的初值应设置为(A),若S.value的初值为-1, 则表示S.L队列中有(B)个等待进程。 A:(1)1;(2)0;(3)-1;(4)4;(5)-4 B:(1)1;(2)2;(3)3;(4)4;(5)5;(6)6; (7)0。
ቤተ መጻሕፍቲ ባይዱ
判断题
1.一个临界资源可以对应多个临界区。(√) 2.互斥地使用临界资源是通过互斥地进入临界区实现的。 (X) 表达不确切,应该是互斥的进入同类临界区。 3.同步信号量的初值一般为1。(X) 互斥信号量的初值一般为1;而同步信号量的初值应视具体情 况而定。 4.生产者-消费者问题是一个既有同步又有互斥的问题。 (√) 5.进程A、B共享变量x,需要互斥执行;进程B、C共享变 量y,B、C也需要互斥执行,因此,进程A、C必须互斥执 行。(X) 不具有传递性。 6. 单道程序系统中程序的执行也需要同步和互斥。(X) 单道程序系统不具有并发性,因此不需要同步和互斥。
进程同步练习
![进程同步练习](https://img.taocdn.com/s3/m/8d042425bcd126fff7050b97.png)
5 利用信号量来描述前趋关系
s3
s1
s2
s5Leabharlann s6s4School of Information Science and Engineering,Lanzhou University OS Autumn 2009 5
2,4,5,6,8
2.桌上有一空盘,一次只允许放一个水果。爸爸 向盘中方苹果或橘子,儿子专等橘子吃,女儿 专等苹果吃。用信号量实现三人的同步。 (三个并发进程R、W1、W2共享单缓冲区B。 进程R从输入设备上读入一个自然数存放到B 中,若B中的数是奇数,则由进程W1取出打 印,若B中的数是偶数,则由进程W2取出打 印。用信号量机制实现同步,使这三个进程能 正确执行。)
6 用P,V操作解决司机与售票员的问题
司机进程: while (true){ 启动车辆 正常驾驶 售票员进程: while (true){ 关门 售票
到站停车 开门 }… of Information Science and Engineering,Lanzhou University }… School
进程r从输入设备上读入一个自然数存放到b中若b中的数是奇数则由进程w1取出打印若b中的数是偶数则由进程w2取出打印
练习
1.用wait,signal操作解决下图之同步问题:
get
copy
put
f
s
t
g
1
School of Information Science and Engineering,Lanzhou University OS Autumn 2009
(完整版)操作系统-进程同步习题答案(22)
![(完整版)操作系统-进程同步习题答案(22)](https://img.taocdn.com/s3/m/96d4844133d4b14e852468ea.png)
A.时间片完B.其它进程执行了唤醒原语
C.执行了V操作D.执行了P操作
5.在单处理机系统中,设系统中有n个进程(n>2),且当前处理机没有执行进程调度程序,下述情况哪些可能发生( BCD)。
A.没有运行的进程,有2个进程处于就绪状态,n个进程处于等待状态。
A.临界资源是非共享资源 B.临界资源是任意共享资源
C.临界资源是互斥共享资源 D.临界资源是同时共享资源
4.对进程间互斥地使用临界资源,进程可以(D)
A.互斥地进入临界区 B.互斥地进入各自的临界区
C.互斥地进入同一临界区 D.互斥地进入各自的同类资源的临界区
5.设两个进程共用一个临界资源的互斥信号量mutex,当mutex=1时表示( B )。
〈进程P1〉〈进程P2〉
y:=1; x:=1;
y:=y+2; x:=x+1;
V(S1); P(S1);
z:=y+1; x:=x+y;
P(S2);V(S2);
y:=z+y; z:=x+z;
解:
因为P1和P2是两个并发进程,所以进程调度程序调度P1和P2的顺序是不确定的。
这里不妨假设P1先执行。进程P1执行到语句P(S2)时,S2=-1,进程P1阻塞。此时,y=3,z=4。当进程调度程序调度到进程P2时,由于进程P1已执行了V(S1),进程P2在执行P(S1)时并未阻塞而继续执行,当执行到V(S2)时,将P1唤醒,然后执行最后一个语句z:=x+z,此时x=5,z=9。当进程P1再次被调度时,继续执行P1的最后一个语句,此时y=12,最终结果是:x=5,y=12,z=9。
A.4 B.3 C.5 D.0
进程同步例题
![进程同步例题](https://img.taocdn.com/s3/m/d5b69cc8bb4cf7ec4afed094.png)
例1:医生进程Doctor,化验进程Lab共同完成病人的诊治工作,医生开化验单,化验进程进行化验,医生根据化验结果进行诊断。
请用记录型信号量和P、V 操作实现两进程的同步。
例2 吃水果问题
例3、某集装箱仓库共有100个仓位,用同一辆吊车负责集装箱的吊进和吊出。
现有一批集装箱运来进仓,另有货主不断前来提货(按仓位顺序进出),设进仓用过程PUTIN表示,出仓用过程GETOUT表示,请用P、V操作协调上述工作。
例4、有一独木桥,每次只允许一人过桥,现在桥的南北两端随时有人要过桥(PASS),为保证安全,请用P、V操作解决如下问题:
1)只要桥上无人则允许任一方的一人过桥,桥上有人则等待。
2)两边的人交替过桥。
即某一方一人过桥后要让另一方的一个人过桥,桥上
有人则等待。
例5、有三个进程PA、PB、PC合作解决文件打印问题:PA将文件记录从磁盘读入主存的缓冲区1,每执行一次读一个记录;PB将缓冲区1的内容复制到缓冲区2,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。
缓冲区的大小等于一个记录的大小。
请用P、V操作协调三个进程的工作。
例6 少林寺问题。
操作系统_进程同步算法习题精选
![操作系统_进程同步算法习题精选](https://img.taocdn.com/s3/m/2e7768ccaa00b52acfc7cac1.png)
A1: while (1) { P(Sin[1]); P(Sin[2]); 将数据放入缓冲区 V(Sout[1]); V(Sout[2]); }
Bi: while (1) { P(Sout[i]); 从缓冲区取数 V(Sin[i]); }
向目标前进一步:
• 设缓冲区的大小为m • 有一个发送进程A1 • 有二个接收进程B1、B2
Bi: while (1) { P(Sout[i]); V(mutex); 从缓冲区取数 P(mutex); V(Sin[i]); };
例题6
a,b两点之间是一段东西向的单行车道,现要设计一个自
动管理系统,管理规则如下: (1)当ab之间有车辆在行驶时同方向的车可以同时驶入ab 段,但另一方向的车必须在ab段外等待; (2)当ab之间无车辆在行驶时,到达a点(或b点)的车辆 可以进入ab段,但不能从a点和b点同时驶入; (3)当某方向在ab段行驶的车辆驶出了ab段且暂无车辆进
到达目标
• 设缓冲区的大小为m • 有n1个发送进程A1….An1 • 有n2个接收进程B1…Bn2
• 设有n2个信号量Sin[n2] 初值均为m • 设有n2个信号量Sout[n2] 初值均为0
Aj: while (1) { for(i=1;i<=n2;i++) P(Sin[i]); P(mutex); 将数据放入缓冲区 V(mutex); for(i=1;i<=n2;i++) V(Sout[2]); }
思考题: 如果S和T是由多个缓冲区组成的 缓冲池,上述算法将如何修改?
【例题3】
桌上有一空盘,最多允许存放一只水 果。爸爸可向盘中放一个苹果或放一个桔 子,儿子专等吃盘中的桔子,女儿专等吃 苹果。 试用P、V操作实现爸爸、儿子、女儿 三个并发进程的同步。
操作系统自测题三(进程同步)
![操作系统自测题三(进程同步)](https://img.taocdn.com/s3/m/97fd9e19ff00bed5b9f31d2f.png)
操作系统自测题三一选择题1.以下________操作系统中的技术是用来解决进程同步的。
A.管道B.管程C.通道D.DMA2.以下________不是操作系统的进程通信手段。
A.管道B.原语C.套接字D.文件映射3.如果有三个进程共享同一程序段,而且每次最多允许两个进程进入该程序段,则信号量的初值应设置为________。
A.3B.2C.1D.04.下面有关进程的描述,________是正确的。
A.进程执行的相对速度不能由进程自己来控制B.进程利用信号量的P、V操作可以交换大量的信息C.并发进程在访问共享资源时,不可能出现与时间有关的错误D.P、V操作不是原语操作5.信号可以用来实现进程之间的________A.调度B.同步与互斥C.同步D.互斥6.对于两个并发进程都想进入临界区,设互斥信号量为S,若某时S=0,表示________。
A.没有进程进入临界区B.有1个进程进入了临界区C.有2个进程进入了临界区D.有1个进程进入了临界区并且另一个进程正等待进入7.信箱通信是一种________方式。
A.直接通信B.间接通信C.低级通信D.信号量8.以下关于临界区的说法,________是正确的。
A.对于临界区,最重要的是判断哪个进程先进入B.若进程A已进入临界区,而进程B的优先级高于进程A,则进程B可以打断进程A而自己进入临界区C.信号量的初值非负,在其上只能做P、V操作D.两个互斥进程在临界区内,对共享变量的操作是相同的9.并发是指________。
A.可平行执行的进程B.可先后执行的进程C.可同时执行的进程D.不可中断的进程10.临界区是________。
A.一个缓冲区B.一段数据区C.一段程序D.栈11.进程在处理机上执行,它们的关系是________。
A.进程之间无关,系统是封闭的B.进程之间相互依赖、相互制约C.进程之间可能有关,也可能无关D.以上都不对12.在单处理机中,如果系统中有N个进程,则就绪队列中的进程个数最多的是________。
进程同步典型例题
![进程同步典型例题](https://img.taocdn.com/s3/m/cb02a434e009581b6ad9eb21.png)
进程同步练习题1. 在公共汽车上,司机和售票员的工作流程如图所示。
为保证乘客的安全,司机和售票员应密切配合协调工作。
请用信号量来实现司机与售票员之间的同步。
①约束:怎么密切配合协调工作才能保证安全呢?a) 关车门之后再启动车辆;利用前驱图解释b) 到站停车之后再开车门;②根据约束定义信号量;关车门和启动车辆需要一个信号量进行同步S1;到站停车和开车门之间需要一个信号量进行同步S2;③建立几个进程呢?a) 为司机建立一个进程Driver ;b) 为售票员建立一个进程Conductor;Driver :Repeat启动车辆;正常行驶;到站停车;Until false;Conductor:Repeat关车门;开车门;Until false;④加入同步关系:Var s1,s2:semorphore=0,0;Driver :RepeatWait (s1);启动车辆;正常行驶;到站停车;Signal(s2)Until false;Conductor:Repeat 关车门;Signal(s1);Wait(s2)开车门;Until false;main(){Driver();Conductor ();}2. 桌子上有一只盘子,盘子中只能放一只水果。
爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。
用PV 操作实现他们之间的同步机制。
分析:①约束:a) 爸爸和妈妈竞争盘子,往盘子放水果,爸爸在放时,妈妈等待,或者相反;b) 爸爸和女儿要同步,即爸爸放完苹果之后通知女儿来吃;同时女儿吃完之后要通知盘子可用;c) 妈妈和儿子要同步,即妈妈放完橘子之后通知儿子来吃;同时儿子吃完之后要通知盘子可用;②经上述分析可知:需要3个信号量:S1表示临界资源盘子,初值1;爸爸和女儿需要一个信号量进行同步S2=0妈妈和儿子需要一个信号量进行同步S3=0;③建立进程?爸爸:妈妈:女儿:儿子:Repeat repeat repeat repeat取一个苹果;取一个橘子;从盘子取一个苹果;从盘子取一个橘放入盘子;放入盘子吃苹果;吃橘子;Until false; Until false; Until false; Until false;④ 加入同步关系。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、进程之间存在哪几种相互制约关系?各是什么原因引起的?下列活动分别属于哪种制
约关系?1)若干同学去图书馆借书;
2)两队举行篮球比赛;
3)流水线生产的各道工序;
4)商品生产和社会消费。
2、一条小河上有一座单人行走的独木桥,规定每次只能一个人过桥,如果把每个过桥者看作一个进程,请用信号量的同步控制机制实现正确的过桥管理,以保障行人安全。
3、现有四个进程R1、R2、W1、W2,它们共享可以存放一个数的缓冲器B。
进程R1每次把
来自键盘的一个数存入缓冲器B中,供进程W1打印输出;进程R2每次从磁盘上读一个数存放到缓冲器B中,供进程W2打印输出。
为防止数据的丢失和重复打印,问怎样用信号量操作来协调这四个进程的并发执行。
4、如果有三个进程R、W1、W2共享一个缓冲器B,而B中每次只能存放一个数。
当缓冲
器中无数时,进程R可以将从输入设备上读入的数存放到缓冲器中。
若存放到缓冲器中的是奇数,则允许进程W1将其取出打印;若存放到缓冲器中的是偶数,则允许进程W2将其取出打印。
同时规定:进程R必须等缓冲区中的数被取出打印后才能再存放一个数;进程W1或W2对每次存入缓冲器的数只能打印一次;W1和W2都不能从空缓冲中取数。
写出这三个并发进程能正确工作的程序算法。