进程同步习题全

合集下载

4.2 进程同步习题

4.2 进程同步习题

【例】现有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

操作系统习题

操作系统习题

操作系统作业【注意】对于作业中的选择题,都要求抄写题目(题中若有插图可不画),并在题目上填写答案。

作业1——进程同步(1)1.设有n个进程使用同一个共享变量,如果最多允许m(m < n)个进程同时进入相关临界区,则信号量的变化范围是。

A. n,n-1,...,n-mB. m,m-1,...1,0,-1,...m-nC. m,m-1,...1,0,-1,...m-n-1D. m,m-1,...1,0,-1,...m-n+12.对于有两个并发进程的系统,设互斥信号量为mutex,若mutex=0,则。

A. 表示没有进程进入与mutex相关的临界区B. 表示有一个进程进入与mutex相关的临界区C. 表示有一个进程进入与mutex相关的临界区,另一个进程等待进入D.表示有两个进程进入与mutex相关的临界区3.S.queue,S.value是信号灯S的两个组成部分,当S.queue为空时,S.value的值是( ) A.S.value≤0 B.S.value=0 C.S.value=1 D.Svalue≥04.如果信号量的当前值为-3,则表示系统中在该信号量上有个等待进程。

5.下列选项中,操作系统提供给应用程序的接口是。

(2010全国试题)A.系统调用B.中断C.库函数D.原语6.下列选项中,导致创建新进程的操作是。

(2010全国试题)I.用户登录成功II.设备分配III.启动程序执行A.仅I和II B.仅II和III C.仅I和III D.I、II和III7.设与某资源关联的信号量初值为3,当前值为1。

若M表示该资源的可用个数,N表示等待该资源的进程数,则M、N分别是。

(2010全国试题)A.0、1 B.1、0 C.1、2 D.2、0作业2——进程同步(2)1.如何利用信号量机制来实现多个进程对临界资源的互斥访问?2.四个进程A、B、C、D都要读一个共享文件F,系统允许多个进程同时读文件F,但限制是进程A 和进程C不能同时读文件F,进程B和进程D也不能同时读文件F,为了使这四个进程并发执行时能按系统要求使用文件,现用PV操作进行管理,请回答下面的问题:(1)应定义的信号量及初值:。

(完整版)第三章进程同步与通信作业习题与答案

(完整版)第三章进程同步与通信作业习题与答案

第三章一.选择题(50题)1.以下_B__操作系统中的技术是用来解决进程同步的。

A.管道B.管程C.通道D.DMA2.以下_B__不是操作系统的进程通信手段。

A.管道B.原语C.套接字D.文件映射3.如果有3个进程共享同一程序段,而且每次最多允许两个进程进入该程序段,则信号量的初值应设置为_B__。

A.3B.2C.1D.04.设有4个进程共享一个资源,如果每次只允许一个进程使用该资源,则用P、V 操作管理时信号量S的可能取值是_C__。

A.3,2,1,0,-1B.2,1,0,-1,-2C. 1,0,-1,-2,-3D.4,3,2,1,05.下面有关进程的描述,是正确的__A__。

A.进程执行的相对速度不能由进程自己来控制B.进程利用信号量的P、V 操作可以交换大量的信息C.并发进程在访问共享资源时,不可能出现与时间有关的错误D.P、V操作不是原语操作6.信号灯可以用来实现进程之间的_B__。

A.调度B.同步与互斥C.同步D.互斥7.对于两个并发进程都想进入临界区,设互斥信号量为S,若某时S=0,表示_B_ _。

A.没有进程进入临界区B.有1个进程进入了临界区C. 有2个进程进入了临界区D. 有1个进程进入了临界区并且另一个进程正等待进入8. 信箱通信是一种_B__方式A.直接通信B.间接通信C.低级通信D.信号量9.以下关于临界区的说法,是正确的_C__。

A.对于临界区,最重要的是判断哪个进程先进入B.若进程A已进入临界区,而进程B的优先级高于进程A,则进程B可以打断进程A而自己进入临界区C. 信号量的初值非负,在其上只能做PV操作D.两个互斥进程在临界区内,对共享变量的操作是相同的10. 并发是指_C__。

A.可平行执行的进程B.可先后执行的进程C.可同时执行的进程D.不可中断的进程11. 临界区是_C__。

A.一个缓冲区B.一段数据区C.一段程序D.栈12.进程在处理机上执行,它们的关系是_C__。

第2章进程管理练习题(答案)

第2章进程管理练习题(答案)

第2章进程管理练习题(答案)第二章进程管理一、单项选择题1、在单一处理机上执行程序,多道程序的执行是在(B)进行的。

A.同一时刻B. 同一时间间隔内C.某一固定时刻D. 某一固定时间间隔内2、引入多道程序技术后,处理机的利用率( C)。

A.降低了B. 有所改善C.大大提高D. 没有变化,只是程序的执行方便了3、顺序程序和并发程序的执行相比,( C)。

A.基本相同 C.并发程序执行总体上执行时间快B. 有点不同 D.顺序程序执行总体上执行时间快4、单一处理机上,将执行时间有重叠的几个程序称为(C )。

A.顺序程序B. 多道程序C.并发程序D. 并行程序5、进程和程序的本质区别是(D )。

A.存储在内存和外存B.顺序和非顺序执行机器指令C.分时使用和独占使用计算机资源D.动态和静态特征6、进程就是程序在并发环境中的执行过程,它是系统进行资源分配和调度的一个基本单位。

进程具有[1A]、[2D]、调度性、异步性和结构性等基本特征。

进程是一次执行过程,具有生命期体现了进程的[1]特征。

进程由程序段、[3B]、[4C]组成,其中[4]是进程在系统中存在的唯一标识。

供选择的答案:[1][2] :A、动态性 B、静态性 C、共行性 D、并发性 E、可执行性 F、易用性[3] :A、过程 B、数据 C、进程标识符 D、函数[4] :A、FCB B、FIFO C、PCB D、JCB7、进程执行时的间断性,决定了进程可能具有多种状态。

进程的基本状态有三种,在分时系统中,当一个进程拥有的时间片到时,则该进程即由[1D]进入[2A]。

如果出现因某种原因使得处理机空闲时,则需要从就绪队列中选择一进程,并将处理机分配给它,此时该进程进入[3D],这个过程是由[4C]来完成。

供选择的答案:[1][2][3] :A、就绪状态 B、静止状态 C、阻塞状态 D、运行状态[4] :A、进程控制程序B、资源分配程序C、进程调度程序D、处理机分配程序8、为了描述进程的动态变化过程,采用了一个与进程相联系的(C ),根据它而感知进程的存在。

进程同步与互斥练习答案

进程同步与互斥练习答案

2.一个正在运行的进程调用P(s)后,若S的 值为(AD ),则该进程可以继续运行。 A.S>0 B.S<0 C.S≠0 D.S≥0 E.S≤0
判断题
• 1.有交往的并发进程一定共享某些资源。 (√)
• 2.如果不能控制并发进程执行的相对速度, 则它们在共享资源时一定会出现与时间有 关的错误。 ( × )
上衣或裤子后制作室工人都要分别把它们送到 配套室的衣架F1和裤架F2上,衣架F1上存放上 衣,裤架F2上存放裤子,衣架最多能放50件上 衣,裤架最多能放50条裤子。配套室工人每次
从架上取一件上衣和一条裤子,然后将它们配 成套装,并进行包装。为防止操作出错, 甲制
作室工人及配套室工人对衣架F1的存取动作应
设私用信号量empty1和empty2分别表示 衣架和裤架的空位数,
full1表示衣架上的衣服数,full2表示裤架上的 裤子数
(2)初始化mutex1=1,mutex2=1,
empty1=50,empty2=50,full1=0,full2=0
(3)描述:
甲制作室工人工作过程:
乙制作室工人工作过程:
• 3.并发进程的执行结果只取决于进程本身, 不受外界影响。 ( × )
• 4.多道程序设计必然导致进程的并发执行。 (√ )
1. 有m个进程共享同一临界资源,若使用信号量机制实现对资源 的互斥访问,则信号量值的变化范围是 1-m≤ mutex ≤1。
2. 对于两个并发进程,设互斥信号量为mutex,若mutex=0,则 ____B____
• 设有一个作业由四个进程组成,这四个进 程在运行时必须按图所示的顺序,用P、V 原语操作表达四个进程的同步关系。
T1
T3 T2
T4

进程同步问题例题

进程同步问题例题

吃水果问题
• 问题描述:桌上有一只盘子,每次只能放入或 取出一个水果。现有许多苹果和桔子。一家四 口各行其职。爸爸专向盘中放苹果,妈妈专向 盘中放桔子,儿子专等吃盘中的桔子,女儿专 等吃盘中的苹果。请给出四人之间的同步关系, 并用PV操作实现四人正确活动的程序。
四人之间的关系
爸爸,妈妈要互斥使用盘子,所以两者 之间是互斥关系; 爸爸放的苹果,女儿吃,所以两者是同 步关系; 妈妈放的桔子,儿子吃,所以两者也是 同步关系。
• • • • •
empty,orange,apple:semaphore empty=1; orange=0; apple=0; parbegin
• Father: • • • • • •
Begin L1:P(empty); L1 P(empty); 放置苹果; V(apple); Goto L1; End;
到站停车;
图书馆阅览室问题
问题描述:假定阅览室最多可同时容纳 100个人阅读,读者进入时,必须在阅 览室门口的一个登记表上登记,内容包 括姓名、座号等,离开时要撤掉登记内 容。用P、V操作描述读者进程的同步算 法。
Sem:mutex=1,readcount=100; readeri()(i=1,2,…k) Procedure readeri()(i=1,2, k) { while(true){ P(readcount) ; p(mutex); 登记 v(mutex); 阅读 p(mutex); 撤消登记 v(mutex); v(readcount); }
Mother:
• • • • • • Begin L2: P(empty); 放置桔子; V(orange); Goto L2; End;
Son:

计算机操作系统进程同步算法习题选

计算机操作系统进程同步算法习题选

s
t
解:
设置四个信号量Sin=1,Sout=0,Tin=1,Tout=0; get: while(1) { wait(Sin); 将数放入S; signal (Sout); } copy: while(1) { wait (Sout); wait (Tin); 将数从S取出放入T; signal (Tout); signal (Sin); } put: while(1) { wait (Tout); 将数从T取走; signal(Tin); }

A1: while (1) { wait(Sin[1]); wait(Sin[2]); 将数据放入缓冲区 signal(Sout[1]); signal(Sout[2]); }
Bi: while (1) { wait(Sout[i]); 从缓冲区取数 signal(Sin[i]); }
向目标前进一步:
司机进程: while(1) { 启动车辆
正常驾驶 到站停车 }…
售票 员 进程 : while(1) { 关门
售票
}…
开门
分析:
为保证车辆行驶安全,售票员必须关好车门, 然后通知司机启动车辆,在行驶过程中售票员不 能打开车门,待车到站停稳后,司机通知售票员 才能打开车门,如此不断重复。为此,须设置两 个信号量S1,S2用来控制司机和售票员的行为, 初值都为0。
解:
算法如下: 司机进程: while(1) { wait(S1) 启动车辆 正常驾驶 到站停车 signal(S2) }… 售票员进 程: while(1) { 关门 signal(S1)
售票
wait(S2) 开门 }…
【例题2】
1.用wait、signal操作解决下图之同步问题 提示:分别考虑对缓冲区S和T的同步,再 合并考虑 get copy put

进程同步与通信作业习题与答案

进程同步与通信作业习题与答案

第三章一.选择题(50题)1.以下_B__操作系统中的技术是用来解决进程同步的。

A.管道B.管程C.通道2.以下_B__不是操作系统的进程通信手段。

A.管道B.原语C.套接字D.文件映射3.如果有3个进程共享同一程序段,而且每次最多允许两个进程进入该程序段,则信号量的初值应设置为_B__。

4.设有4个进程共享一个资源,如果每次只允许一个进程使用该资源,则用P、V操作管理时信号量S的可能取值是_C__。

,2,1,0,-1 ,1,0,-1,-2 C. 1,0,-1,-2,-3 ,3,2,1,05.下面有关进程的描述,是正确的__A__。

A.进程执行的相对速度不能由进程自己来控制B.进程利用信号量的P、V 操作可以交换大量的信息C.并发进程在访问共享资源时,不可能出现与时间有关的错误、V操作不是原语操作6.信号灯可以用来实现进程之间的_B__。

A.调度B.同步与互斥C.同步D.互斥7.对于两个并发进程都想进入临界区,设互斥信号量为S,若某时S=0,表示_B__。

A.没有进程进入临界区B.有1个进程进入了临界区C. 有2个进程进入了临界区D. 有1个进程进入了临界区并且另一个进程正等待进入8. 信箱通信是一种_B__方式A.直接通信B.间接通信C.低级通信D.信号量9.以下关于临界区的说法,是正确的_C__。

A.对于临界区,最重要的是判断哪个进程先进入B.若进程A已进入临界区,而进程B的优先级高于进程A,则进程B可以打断进程A而自己进入临界区C. 信号量的初值非负,在其上只能做PV操作D.两个互斥进程在临界区内,对共享变量的操作是相同的10. 并发是指_C__。

A.可平行执行的进程B.可先后执行的进程C.可同时执行的进程D.不可中断的进程11. 临界区是_C__。

A.一个缓冲区B.一段数据区C.一段程序D.栈12.进程在处理机上执行,它们的关系是_C__。

A.进程之间无关,系统是封闭的B.进程之间相互依赖相互制约C.进程之间可能有关,也可能无关D.以上都不对13. 在消息缓冲通信中,消息队列是一种__A__资源。

操作系统-进程同步-信号量练习题

操作系统-进程同步-信号量练习题

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,则可用资源个数为( ),等待资源的进程数为( )。

进程同步习题全

进程同步习题全

进程管理
【例】进程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
进程管理
操作流程 <PUT类进程> repeat 判断buff1是否有空间,没有则等待 是否可操作buff1 PUT 设置buff1可操作标志 设置buff1有数据的标志 until false
进程管理
<MOVE类进程> repeat 判断buff1是否有数据,没有则等待 判断buff2是否有空间,没有则等待 是否可操作buff1 是否可操作buff2 MOVE 设置buff1可操作标志 设置buff2可操作标志 设置buff1有空间标志 设置buff2有空间标志

操作系统-进程同步习题答案

操作系统-进程同步习题答案

第二章进程同步一、选择最合适的答案1. 用P、V操作管理临界区时,信号量的初值一般应定义为()。

A.–1B.0C.1D.任意值2. 有m个进程共享同一临界资源,若使用信号量机制实现对一临界资源的互斥访问,则信号量的变化范围是()。

A.1至–(m-1)B.1至m-1C.1至–mD.1至m3. 在下面的叙述中,正确的是()。

A.临界资源是非共享资源B.临界资源是任意共享资源C.临界资源是互斥共享资源D.临界资源是同时共享资源4. 对进程间互斥地使用临界资源,进程可以()A.互斥地进入临界区B.互斥地进入各自的临界区C.互斥地进入同一临界区D.互斥地进入各自的同类资源的临界区5. 设两个进程共用一个临界资源的互斥信号量mutex,当mutex=1时表示()。

A.一个进程进入了临界区,另一个进程等待B.没有一个进程进入临界区C.两个进程都进入了临界区D.两个进程都在等待6. 设两个进程共用一个临界资源的互斥信号量mutex,当mutex=-1时表示()。

A.一个进程进入了临界区,另一个进程等待B.没有一个进程进入临界区C.两个进程都进入了临界区D.两个进程都在等待7.当一进程因在记录型信号量S上执行P(S)操作而被阻塞后,S的值为()。

A.>0B.<0C.≥0D.≤08.当一进程因在记录型信号量S上执行V(S)操作而导致唤醒另一进程后,S的值为()。

A.>0B.<0C.≥0D.≤09.如果信号量的当前值为-4,则表示系统中在该信号量上有()个进程等待。

A.4B.3C.5D.010.若有4个进程共享同一程序段,而且每次最多允许3个进程进入该程序段,则信号量的变化范围是()。

A. 3,2,1,0B. 3,2,1,0,-1C. 4,3,2,1,0D. 2,1,0,-1,-211.若信号S的初值为2,当前值为-1,则表示有( )个等待进程?A.0B.1C.2D.312.如果有三个进程共享同一互斥段,而且每次最多允许两个进程进入该互斥段,则信号量的初值应设置为()。

计算机操作系统习题及答案4

计算机操作系统习题及答案4

计算机操作系统习题及答案4第4章进程同步与通信1 )选择题(1)在操作系统中,P、V操作是⼀种_D__。

A. 机器指令B. 系统调⽤命令C. 作业控制命令D. 低级进程通信原语(2)若信号量S的初值为2,当前值为-1,则表⽰有_B__等待进程。

A. 0个B. l个C. 2个D. 3个(3)在直接通信⽅式中,系统提供两条通信原语进⾏发送和接收,其中Send原语中参数应是_C_。

A. sender,messageB. sender,mailboxC. receiver,messageD. receiver,mailbox(4)下述那个选项不是管程的组成部分_A__。

A. 管程外过程调⽤管程内数据结构的说明B. 管程内对数据结构进⾏操作的⼀组过程C. 局部于管程的共享数据说明D. 对局部于管程的数据结构设置初值的语句(5)某通信⽅式通过共享存储区来实现,其属于_D__。

A. 消息通信B. 低级通信C. 管道通信D. ⾼级通信(6)⽤P、V操作管理临界区时,信号量的初值应定义为__C__。

A. -1B. 0C. 1D. 任意值(7)临界区是_B__。

A. ⼀个缓冲区B. ⼀段程序C. ⼀段共享数据区D. ⼀个互斥资源(8)信箱通信是⼀种_D__通信⽅式。

A. 直接通信B. 信号量C. 低级通信D. 间接通信(9)对于两个并发进程,设互斥信号量为mutex,若mutex=0则__A_。

A. 表⽰有⼀个进程进⼊临界区B. 表⽰没有进程进⼊临界区C. 表⽰有⼀个进程进⼊临界区,另⼀个进程等待进⼊D. 表⽰有两个进程进⼊临界区(10)对信号量S执⾏V操作后,下述选项正确的是_C__。

A. 当S⼩于等于0时唤醒⼀个阻塞进程B. 当S⼩于0时唤醒⼀个阻塞进程C. 当S⼩于等于0时唤醒⼀个就绪进程D. 当S⼩于0时唤醒⼀个就绪进程(11)在消息缓冲通信中,消息队列属于_A__资源。

A. 临界B. 共享C. 永久D. 可剥夺(12)在消息缓冲通信机制中,使⽤的临界资源是_D__。

进程同步例题

进程同步例题

例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 少林寺问题。

进程同步典型例题(操作系统)

进程同步典型例题(操作系统)

进程同步练习题1.在公共汽车上,司机和售票员的工作流程如图所示。

为保证乘客的安全,司机和售票员应密切配合协调工作。

请用信号量来实现司机与售票员之间的同步。

司机售票员图司机和售票员工作流程图①约束:怎么密切配合协调工作才能保证安全呢?a)关车门之后再启动车辆;利用前驱图解释b)到站停车之后再开车门;②根据约束定义信号量;关车门和启动车辆需要一个信号量进行同步S1;到站停车和开车门之间需要一个信号量进行同步S2;③建立几个进程呢?a)为司机建立一个进程Driver;b)为售票员建立一个进程Conductor;Driver:Repeat启动车辆;正常行驶;到站停车;Until false;Conductor:Repeat关车门;售票;开车门;Until false;④加入同步关系: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;③建立进程?爸爸:妈妈:女儿:儿子:取一个苹果;取一个橘子;从盘子取一个苹果;从盘子取一个橘子;放入盘子;放入盘子吃苹果;吃橘子;Until false; Until false; Until false; Until false;④加入同步关系。

第三章 进程同步问题习题答案

第三章 进程同步问题习题答案

进程同步练习1.有一阅览室,共有100个座位。

读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名。

读者离开时要消掉登记内容。

试用P、V操作描述读者进程的同步结构。

varmutex : semaphere;信号量,用于互斥full : semaphere; 信号量,用于同步table : array 0..n-1 of item; 登记表procedure reader;读者进程beginP(full);P(mutex);Register_name(table);V(mutex);Reading;P(mutex);Delet_name(table);V(mutex);V(full)end;beginseminitsal(mutex.v,1; full.v,100);初始化cobeginreader;reader;...coendend.2.设公共汽车上有一位司机和一位售票员,它们的活动如下:售票员:动车辆售票正常行车开车门到站停车关车门请分析司机与售票员之间的同步关系,如何用PV操作实现。

答:为了安全起见,显然要求:关车门后才能启动车辆;到站停车后才能开车门。

所以司机和售票员在到站、开门、关门、启动车辆这几个活动之间存在着同步关系。

用两个信号量S1、S2分别表示可以开车和可以开门,S1的初值为1,S2的初值为0。

用PV操作实现司机进程和售票员进程同步的算法描述如下:售票员:(S1)售票动车辆P(S2)正常行车开车门到站停车关车门V(S2)V(S1)另外,程序中PV操作出现的顺序与信号量的初值设置有关,以本题为例,算法如下描述时,S1、S2的初值均应为0。

售票员:常行车售票站停车P(S2)V(S2)开车门P(S1)关车门启动车辆V(S1)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
进程管理
【例】一个buffer,一个生产者,一个消费者,生产者 只生产一个东西,消费者只进行一次消费,即:生 产者只进行一次putdata操作,消费者只进行一次 getdata操作。
进程管理
【解答】
设置信号量full,表示buffer是否有数据,初值为0
生产者
消费者
putdata
P(full)
V(full)
getEBuffer()返回空的buffer号 getEBuffer()
return (pbuffer+1)mod n getDBuffer()返回有数据的buffer号 getDBuffer()
return (pdata+1)mod n
进程管理
semaphore mutex,empty,full=1,n,0
getdata
进程管理
【例】一个buffer,一个生产者,一个消费者,生产 者不断进行putdata操作,消费者不断进行 getdata操作,即生产者不断生产,消费者不断 消费。
【解答】buffer为空时,才能进行putdata操作, 只有buffer有数据时,才能进行getdata操作
信号量 full:是否有数据初值为0 empty:是否为空,初值为1
integer pbuff,pdata=0,0
生产者i
消费者j
repeat
repeat
P(empty)
P(full)
P(mutex)
P(mutex)
in=getEBuffer()
out=getDBuffer()
V(mutex)
V(mutex)
putdata(in)
getdata(out)
V(full)
进程管理
PUT
Buff1
MOVE
Buff2
GET
进程管理
【解答】三类进程:多个PUT类进程,一个MOVE 类进程,多个GET类进程
操作规则 1 只有buff1有空间才能进行PUT操作 2 只有buff1有数据,buff2有空间才能进行MOVE
操作 3 只有buff2有数据才能进行GET操作 4 不允许多个进程同时操作buff1 5 不允许多个进程同时操作buff2
【解答】 只有buffer有空间时才能进行putdata操作 只有buffer有数据时才能进行getdata操作 不允许多个消费者和多个生产者同时操作 信号量 full:表示buffer是否有数据,初值为0 empty:表示buffer是否为空,初值为n mutex:表示buffer是否可操作,初值为1
进程管理
生产者i repeat
P(empty) P(mutex) putdata V(mutex) V(full)
消费者j repeat
P(full) P(mutex) putdata V(mutex) V(empty)
进程管理
【改进】putdata和getdata操作都在临界区中,因 此多个进程对多个buffer的操作不能并行进行的, 进程间并行操作的程度很低。实际上只要保证多个 进程同时操作不同buffer就可以实现对整个buffer 的并行操作。
进程管理
操作流程 <PUT类进程>
repeat 判断buff1是否有空间,没有则等待 是否可操作buff1 PUT 设置buff1可操作标志 设置buff1有数据的标志
until false
进程管理
<MOVE类进程> repeat 判断buff1是否有数据,没有则等待 判断buff2是否有空间,没有则等待 是否可操作buff1 是否可操作buff2 MOVE 设置buff1可操作标志 设置buff2可操作标志 设置buห้องสมุดไป่ตู้f1有空间标志 设置buff2有空间标志
进程管理
生产者: repeat
P(empty) putdata V(full)
消费者: repeat
P(full) getdata V(empty)
进程管理
【例】一个buffer,多个生产者,多个消费者,多个生产者和 消费者都在不断地存取buffer,即生产者不断地进行 putdata操作,消费者不断进行getdata操作。
进程管理
<GET类进程> repeat 判断buff2是否有数据,没有则等待 是否可操作buff2 GET 设置buff1可操作标志 设置buff1有空间标志
进程管理
4 信号量 设置6个信号量 full1:buff1是否有数据,初值为0 empty1:buff1有空间,初值为m mutex1:buff1是否可操作,初值为1 full2:buff2是否有数据,初值为0 empty2:buff2有空间,初值为n mutex2:buff2是否可操作,初值为1
【解答】 只有buffer为空时能进行putdata操作,只有buffer有数据
时能进行putdata操作。 不允许多个进程同时操作buffer,即不允许多个消费者同时进
行getdata,不允许多个生产者进行putdata操作 信号量 full:buffer是否有数据,初值为0 empty:buffer是否为空,初值为1 mutex:buffer是否可操作,初值为1
进程同步习题
设有n个进程共享一个程序段,对如下两种情况: (1)如果每次只允许一个进程进入该程序段; (2)如果每次最多允许m个进程(M<=n)同时进入 该程序段。 试问:所采用的信号量初值是否相同?信号量值的变 化范围如何? 所采用信号量的初值不相同。 在情况(1)中,信号量的初值为1, 信号量值的变化范围是l,0,-1…-(n-1)。 在情况(2)中,信号量的初值为M, 信号量值的变化范围是M,m-1,m-2…(m-n)。
V(empty)
进程管理
【练习】如图,有多个PUT操作同时向Buff1放数据, 有一个MOVE操作不断地将Buff1的数据移到 Buff2,有多个GET操作不断地从Buff2中将数据取 走。Buff1的容量是m,Buff2的容量是 n,PUT,MOVE,GET每次操作一个数据,在操作的 过程中要保证数据不丢失。试用P,V原语协调 PUT,MOVE操作,并说明每个信号量的含义和初 值。
进程管理
生产者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操作
相关文档
最新文档