某系统中有一个缓冲区,进程P1不断地生产产品送入缓冲区,进程P2不断地从缓冲区中取出产品消费,用P、V操作实现进程间的同步模型如下图所示。假设信号量S1的初值为1,信号量S2的初值为0,那么a、b、C处应分别填( )

题目
某系统中有一个缓冲区,进程P1不断地生产产品送入缓冲区,进程P2不断地从缓冲区中取出产品消费,用P、V操作实现进程间的同步模型如下图所示。假设信号量S1的初值为1,信号量S2的初值为0,那么a、b、C处应分别填( )

A.V(S2)、P(S1)、V(S1)
B.V(S2)、P(S2)、V(S1)
C.P(S2)、V(S1)、V(S2)
D.P(S2)、V(S2)、V(S1)
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

设有一缓冲池P,P中含有20个可用缓冲区,一个输入进程将外部数据读入P,另有一个输出进程将P中数据取出并输出。若讲程每次操作均以一个缓冲区为单位,试用记录型信号量写出两个进程的同步算法,要求写出信号量的初值。


正确答案:

第2题:

进程P通过缓冲区K不断向n个进程Qi(1≤i≤n)发送消息,消息大小与缓冲区K一样。为了使每个接收进程都应该接收到与发送次序一样的消息序列,需要配置(23)。

A.2个信号量,初值分别为1,0

B.2个信号量,初值分别为1,n,

C.3个信号量,初值分别为1,0,0

D.3个信号量,初值分别为1,1,0


正确答案:C
解析:本题考查的是信号量与P、V操作在复杂条件下的运用。每个信号量原则上只能用来保证一个同步关系。这里,一个同步关系是发送进程必须遵循“取后再送”。也就是说,缓冲区被送入消息后,只有n个接收进程都取到了该消息,发送进程才能再次送入消息。而不能让发送进程不顾接收情况连续地往缓冲区内送消息,导致有的消息尚未取走就被新消息覆盖。因此应该设一个信号量S1,由于刚开始时,缓冲区内没有消息,所以S1的初值应该为1。再次发送消息前执行P(S1)。另一个同步关系是接收进程必须遵循“送后再取”。也就是说,接收进程在接收到消息后,必须等到新消息送入后才能再去取,而不能连续地取,导致接收到的消息出现重复。因此,应该设一个信号量S2,由于刚开始时,缓冲区内没有消息,所以的初值应该为0。接收消息之前接收进程应该执行P(S2)。所有进程都接收了一条消息后执行V(S1)。发送进程发送一条消息后应该执行V(S2)。这看来是简单的生产者与消费者关系,其实不然。本题的问题出在接收进程有n个,而且每个接收进程接收消息的次序必须与发送次序相同。因此,应该设一个共享变量T,记录有多少个接收进程已经接收了同一条消息,T得初值为n。如果已经全部接收了消息,就可以允许发送进程发送下一条消息了,否则还不能发送。那么。既然T为所有接收进程所共享,是否也应该设一个信号量,以保证互斥呢?其实这是不必要的,因为接收进程在接收消息前必须执行P(S2),而S2的初值为0,只有在发送进程执行了V(S2)以后才只允许一个接收进程通过P(S2),如果将对T的操作放在接受进程执行P(S2)以后,互斥不会成为问题。其次,并不是所有接收进程接收了消息后都去执行V(S1),只是(对同一条消息而言)最后一个接收进程接收了消息后才去执行V(S1)。否则,随便一个接收进程接收消息后就去执行V(S1),使发送进程可以发送新消息,就会导致消息被覆盖,有的接收进程就再也不能接收到这条消息了。因此,接收进程接收了消息后,需将T减1,然后判断自己是否是(对同一条消息而言)最后一个接收到这条消息的进程,如果是(T=0),就先将T改为n,再执行V(S1),让发送进程再次发送消息;否则执行V(S2),唤醒下一个等待接收该消息的接收进程。但是,这样仅仅能够保证每一条消息只能被接收n次,并不能防止某个动作极快地接收进程连续多次接收同一条消息,而动作较慢的进程的接收机会却被抢夺。因此,必须控制不是(对同一条消息而言)最后一个接收到消息的接收进程的运行速度,避免造成接收不同消息的进程排在同一个队列(信号量S2所对应)中,让信号量S2所对应的队列中的排队元素永远是等待接收最新消息的进程。显然,这样又出现了一个新的同步条件,一个调节接收进程运行速度的同步条件。为此,应该再设置一个信号量S3,初值为0。不是(对同一条消息而言)最后一个接收到消息的接收进程在接收消息后执行V(S3),先在这个队列上等待。(对同一条消息而言)最后一个接收到该消息的进程在接收消息以后,将它们(共有n-1个进程)全部释放,共同进入对下一条消息的角逐。下图表示发送、接收进程的流程。

第3题:

某系统中有一个缓冲区,进程P1不断地加工数据送入缓冲区,进程P2不断地从缓冲区中取数据打印,用PV操作实现进程间的同步模型如图2所示。假设信号量S1的初值为1,信号量S2的初值为0,那么图2中a、b、c、d处应分别填(51)。

A.P(S2)、V(S2)、P(S1)、V(S1)

B.P(S2)、V(S1)、P(S1)、V(S2)

C.P(S1)、V(S2)、P(S2)、V(S1)

D.P(S1)、V(S1)、P(S2)、V(S2)


正确答案:C
解析:本题考查应试者对操作系统进程管理中PV操作方面的基础知识。
  为了保证进程P1和进程P2间的正常运行,a、b处应分别填P(S1)、V(S2),c、 d处分别填P(S2)、V(S1),如下图所示。

第4题:

某系统中有一个缓冲区,进程P1不断地生产产品送入缓冲区,进程P2不断地从缓冲区中取出产品消费,用P、V操作实现进程间的同步模型如下图所示。假设信号量S1的初值为1,信号量S2的初值为0,那么a、b处应分别填(26),c、d处分别填(27)。

A.V(S2)、P(S1)

B.P(S1)、V(S2)

C.P(S2)、V(S1)

D.V(S1)、P(S2)


正确答案:B

第5题:

进程PA不断地向管道写数据,进程PB从管道中读数据并加工处理,如图所示。如果采用P-V操作来实现进程PA和PB的管道通信,并且保证这两个进程并发执行的正确性,则至少需要(1)

A.1个信号量,信号量的初值是0

B.2个信号量,信号量的初值是0,1

C.3个信号量,信号量的初值是0,0,1

D.4个信号量,信号量的初值是0,0,1,1


正确答案:B
由于这里只有两个进程PA和PB,所以只需要用两个同步信号量,就可以让PA和PB同步和互斥,若有多个进程对管道操作,则需要增加互斥信号量。

第6题:

进程PA不断地向管道写数据,进程PB从管道中读数据并加工处理,如图5-1所示。如果采用P、V操作来实现进程PA和PB的管道通信,并且保证这两个进程并发执行的正确性,则至少需要(2)。

A.1个信号量,信号量的初值是0

B.2个信号量,信号量的初值是0、1

C.3个信号量,信号量的初值是0、0、1

D.4个信号量,信号量的初值是0、0、1、1


正确答案:B
解析:在单处理机中,由于多道程序的存在,即系统要对多个进程进行管理,而不可避免地涉及到并发控制。而进程间的互斥和同步是并发控制的有效手段。不允许两个以上的共享某资源的并发进程同时进入临界区称为互斥。此处,所谓的临界区是指每个进程中访问临界资源(临界资源是指公用数据,公用硬件或软件资源等)的那段程序代码。进程同步是指一组并发进程因直接制约而互相发送消息进行互相合作、互相等待,使得各进程按一定的速度执行的过程。在操作系统中,主要通过信号量和P、V原语来实现进程的同步和互斥。信号量sem是一个整数,在sem大于等于零时表示可供并发进程使用的资源实体数;sem小于零时,其绝对值表示正在等待使用临界区的进程数。P原语的主要操作是:(1)sem减1;(2)若sem减1后仍大于或等于零,则该进程继续执行:(3)若sem减1后小于零,则该进程被阻塞,在相应队列中排队,然后转向系统的进程调度。V原语的主要操作是:(1)sem加1;(2)若相加结果大于零,则进程继续执行:(3)若相加结果小于或等于零,则唤醒一阻塞在该信号量上的进程,然后再返回原进程继续执行或转进程调度。进程间可以互相传递信息和数据,这称为进程间通信(IPC)。进程的互斥和同步可归结为低级通信(P、V原语可看做是低级通信原语),一般只传送一个或几个字节的控制信息。操作系统还提供了高级通信机制,高级通信的目的不是为了控制进程的执行速度,而是为了交换信息。高级通信可分为三大类:共享存储器系统、消息传递系统和管道通信系统。本题是一个典型的生产者一消费者的问题,其中进程PA和PB分别为生产者与消费者,管道为临界区。程序应该设置1个同步信号量S1,当S1=1时说明管道已满,拒绝PA再写入数据:当S1=0时说明管道为空,拒绝PB再读出数据,管道初始是没有数据的,所以初始值为S1=0。同时,程序还需要设置1个互斥信号量S2,用以保证在同一时刻,只有一个进程访问管道,初始值为S2=1。首先,当进程PA需要向管道写数据时,执行P操作,S2-1=0,这时,如果PB需要从管道中读数据时,也执行P操作,S2-1=-1,则进程PB阻塞,直到PA写完数据后执行V操作,S2+1=0,唤醒进程PB读取数据。

第7题:

进程PA不断地向管道写数据,进程PB从管道中读数据并加工处理,如下图所示。如果采用PV操作来实现进程PA和进程PB间的管道通信,并且保证这两个进程并发执行的正确性,则至少需要(26)。

A.1个信号量,信号量的初值为0

B.2个信号量,信号量的初值分别为0、1

C.3个信号量,信号量的初值分别为0、0、1

D.4个信号量,信号量的初值分别为0、0、1、1


正确答案:C
解析:本题考查的是进程同步互斥方面的知识。在系统中的每一个进程其工作的正确与否不仅取决于它自身的正确性,而且与它在执行中能否与其他相关进程正确的实施同步互斥有关。常用PV操作实现进程同步与互斥。试题是关于两个进程合作的同步问题,是一个典型的生产者和消费者的问题。生产者进程PA不断地向管道写数据,消费者进程PB从管道中读数据并加工处理。为了实现 PA与PB进程间的同步问题,需要设置一个信号量S1,且初值为1,表示管道未满,可以将数据写入管道;设置另一个信号量S2与管道是否有数据联系起来,当信号量的值为“0”时表示进程PA还未将数据写入管道,当信号量的值为非“0”时表示管道有数据存在。其同步过程如图所示。试题(26)的正确答案是C。

第8题:

阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

在并发系统设计中,通过对信号量S的P、V操作实现进程的同步与互斥控制。

P(S):S:=S-1,若S≥0,则执行P操作的进程继续执行:若S<0,则置该进程为阻塞状态,并将其插入阻塞队列。

V(S):S:=S+1,若S>0,则执行V操作的进程继续执行;若S≤0,则从阻塞队列唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续执行。

在某并发系统中,有一个发送进程A、一个接收进程B、一个环形缓冲区BUFFER、信号量S1和S2。发送进程不断地产生消息并写入缓冲区BUFFER,接收进程不断地从缓冲区BUFFER取消息。假设发送进程和接收进程可以并发地执行,那么,当缓冲区的容量为N时,如何使用P、V操作才能保证系统的正常工作。发送进程A和接收进程B的工作流程如图4-1所示。请在图4-1中的空(1)~(4)处填入正确的内容。


正确答案:(1)P(S1) (2)V(S2) (3)P(S2) (4)V(S1)
(1)P(S1) (2)V(S2) (3)P(S2) (4)V(S1) 解析:本题考查的是并发系统的同步与互斥控制。
  在并发系统中,同时存在的多个进程在执行速度上是相对独立的,它们以各自的运行速度向前推进。但是,由于多个并发进程或者共享系统资源,或者合作完成某项任务,所以它们之间常常存在着相互制约或彼此依赖的关系,进程之间的这种制约和依赖关系可以归结为两种基本形式:同步和互斥。
  一般来说,一个进程相对于另一个进程的运行速度是不确定的,也就是说进程是在异步环境下运行的,每个进程都有各自独立的、不可预知的速度向前推进。但是相互合作的进程需要在某些确定点上协调它们的工作,当一个进程到达了这些点后,除非另一进程已经完成了某些操作,否则就不得不停下来等待这些操作结束。这就是进程间的同步。
  在多道程序系统中,各进程可以共享各类资源,但有些资源一次只能供一个进程使用,称为临界资源(critical resource,CR),如打印机、公共变量、内存工作区、表格等。临界区(critical section,CS)是进程中对临界资源实施操作的那段程序。
  在多道程序系统中,一般都使用P、V操作原语通过信号量实现进程的同步和互斥。信号量是一种特殊的变量,它具有以下特性:
  ▲ 信号量是一个整型变量。
  ▲ 每一个信号量表示一种系统资源的状况,其值表示资源当前可用的数量。
  ▲ 每一个信号量都对应一个空或非空的等待队列,该队列就是信号量所表示的资源的等待队列。
  ▲ 对信号量只能实施P、V操作,只有P、V操作才能改变其值。
  P操作的功能是:当进程执行P操作时,首先将信号量S减一,其结果为:若 S0,则该进程继续运行;若S0,则阻塞该进程,并把它插入道信号量S的等待队列中。
  V操作的功能是:当进程执行V操作时,首先将信号量S加1,其结果是:若S>0,则该进程继续执行;如果S≤o,则释放S信号量等待队列中队首的等待进程,解除其阻塞状态,而调用V操作的当前进程继续执行。
  P、V操作是一对操作,若有对信号量的P操作,必定有对该信号量的V操作,这样才能保证资源被合理地分配和释放。
  问题1:缓冲区BUFFER是临界资源,信号量S1表示缓冲区中空闲单元的数目,初值为N,信号量S2表示缓冲区中消息的数目,初值为0。
  显然,发送进程海产生一条消息,将消耗一个空闲的缓冲区单元,所以将消息送入缓冲区时应先执行一个P(S1),写入消息后执行一个V(S2)。当接收进程执行时,若缓冲区中有消息,则可读取,然后将释放一个空闲单元,所以接收进程进入其临界区后先执行一个P(S2),读取消息后执行一个V(S1)。

第9题:

● 某系统中有一个缓冲区,进程 P1 不断地生产产品送入缓冲区,进程 P2 不断地从冲区中取出产品消费,用P、V 操作实现进程间的同步模型如下图所示。假设信号量S1初值为1,信号量S2的初值为0,那么a、 b处应分别填 (26) , c、 d处分别填 (27) 。

(26)

A. V(S2)、P(S1)

B. P(S1)、V(S2)

C. P(S2)、V(S1)

D. V(S1)、P(S2)

(27)

A. V(S2)、P(S1)

B. P(S1)、V(S2)

C. P(S2)、V(S1)

D. V(S1)、P(S2)


正确答案:B,C

第10题:

某系统中有一个缓冲区,进程P1不断地生产产品送入缓冲区,进程P2不断地从缓冲区中取产品消费。假设该缓存区只能容纳一个产品。进程P1与P2的同步模型如下图所示:

为此,应设信号量S1的初值为(18),信号量S2的初值为(19)。

A.-2

B.-1

C.0

D.1


正确答案:D
解析:由于系统中只有一个缓冲区,需要设置一个信号量S1,且初值为1,表示缓冲区空,可以将产品送入缓冲区。为了实现P1与P2进程间的同步问题,设置另一个信号量S2,且初值为0,表示缓冲区有产品。这样,当生产者进程P1生产产品送入缓冲区时需要判断缓冲区是否为空,需要执行P(S1),产品放入缓冲区后需要执行V(S2),通知消费者缓冲区已经有产品。而消费者进程P2在取产品消费之前必须判断缓冲区是否有产品,需要执行P(S2),取走产品后缓冲区空了,需要执行V(S1),释放缓冲区。

更多相关问题