软考中级

重新定义P操作: P(s): S=S-1; if s<0 then {将本进程插入相应等待队列的队首}; V操作的定义不变。 使用上述定义的信号量操作。现有n个进程竞争进入一个临界区,需要使用(24),并保证进程能够以正常的次序公平地进入临界区。A.1个信号量,初值为1B.2个信号量,初值分别为1,0C.n-1个信号量,初值均为1D.n/2个信号量,初值均为1

题目

重新定义P操作: P(s): S=S-1; if s<0 then {将本进程插入相应等待队列的队首}; V操作的定义不变。 使用上述定义的信号量操作。现有n个进程竞争进入一个临界区,需要使用(24),并保证进程能够以正常的次序公平地进入临界区。

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

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

C.n-1个信号量,初值均为1

D.n/2个信号量,初值均为1

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

若P操作、V操作的信号量S初值为3,当前值-3,则表示有()等待进程。

A、0个

B、1个

C、2个

D、3个


正确答案:D

第2题:

操作系统在使用信号量解决同步与互斥问题中,若P(或wAit)、V(或signAl)操作的信号量S初值为3,当前值为-2,则表示有( )等待进程。

A 0个

B 1个

C 2个

D 3个


参考答案C

第3题:

如P和V操作的信号量S初值为4,则现在S=-1,表示有()个进程在等待。

A、1

B、2

C、3

D、5


参考答案:A

第4题:

若P、V操作的信号量S初值为2,当前值为-1,则表示有(31)等待进程。如果有三个进程共享同一互斥段,而且每次最多允许两个进程进入该互斥段,则信号量的初值应设置为(32)。

A.0个

B.1个

C.2个

D.3个


正确答案:B

第5题:

若P、V操作的信号量S初值为2,当前值为-1,则表示有() 个等待进程。

A.0

B.l

C.2

D.3


参考答案:B

第6题:

用PV操作管理临界区时把信号量的初值定义为1,现已有一个进程在临界区,但有n个进程在等待进人临界区,这时信号量的值为()。

A.1

B.-1

C.-N

D.N


正确答案:C

第7题:

若P、V操作的信号量S初值为2,当前值为-1,则表示有()个等待进程。

A.0

B.1

C.2

D.3


参考答案B

第8题:

用P、V操作管理临界区时,把信号量mutex的初值设定为1。当mutex的等待队列中有k(k>1)个进程时,信号量的值为( )。

A)k

B)k-1

C)1-k

D)-k


正确答案:C
设信号量为S,常用信号量的取值可以解释为:S值的大小表示某类资源的数量。当S>0时,表示还有资源可以分配;当S<0时,其绝对值表示S信号量等待队列中进程的数目。每执行一次P操作,意味着要求分配一个资源;每执行一次v操作,意味着释放一个资源。依题意。信号量mutex的初始值为1,表示有一个资源可以分配,当mutex的等待队列中有K个进程时,信号量的值为1-K。

第9题:

进程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读取数据。

第10题:

进程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个进程)全部释放,共同进入对下一条消息的角逐。下图表示发送、接收进程的流程。

更多相关问题