设有一个发送者进程和接收者进程,其流程图如图4—3所示。S是用于实现进程同步的信号量,mutex是用于实现进程互斥的信号量。试问流程图中的A、B、C、D4个框中应填写什么?假定缓冲区有无限多个且初始为空,S和mutex的初值应该是什么?( )

admin2017-04-28  38

问题 设有一个发送者进程和接收者进程,其流程图如图4—3所示。S是用于实现进程同步的信号量,mutex是用于实现进程互斥的信号量。试问流程图中的A、B、C、D4个框中应填写什么?假定缓冲区有无限多个且初始为空,S和mutex的初值应该是什么?(    )

选项 A、P(mutex)、V(mutex)、P(S)、P(mutex)  S=缓冲区的个数  mutex=1
B、P(S)、V (mutex)、P(S)、P(mutex)  S=0  mutex=1
C、P(mutex)、V(mutex)、P(S)、P(mutex)  S=0  mutex=1
D、P(S)、V(mutex)、P(S)、P(mutcx)  S=缓冲区的个数  mutex=0

答案C

解析 流程图中的A、B、C、D4个框中分别应该填写:P(mutex)、V(mutex)、P(S)、P(mutex)或者P(mutex)、V(mutex)、P(mutex)、P(S)。首先应该明确这里的缓冲区是临界资源,所以“把缓冲区放到信息链尾”和“从缓冲区中取出消息”是互斥的。在操作前都要,P(mutex),成功的P操作后,进入临界区,退出时V(mutex),又mutex作为互斥信号量,初值应为l。
S作为同步信号量,发送者进程发送完信息后进行V(S),表示信号链中信息的个数增加1,作为接收者进程必须有相应的表示取走信息的P(S)操作。S是资源信号量,是用来表示信号链中信息的个数,其初值要根据进程的初始状态确定,这里初始为空,所以其初值应设置为0。
知识点回顾:
解决进程同步和互斥问题的求解步骤:
1)先要确定哪些操作是并发的,确定哪些操作是互斥的。并发操作可以用多个进程实现,同步和互斥就发生在这多个进程之间。多个进程操作同一临界资源就是进程间的互斥问题。多个进程要按一定的顺序操作就是进程间的同步问题。
2)每道题都指定了互斥和同步的规则,从中提炼出正确的操作条件,从而确定互斥和同步的操作流程。
3)根据互斥和同步规则以及操作流程确定信号量的个数和每个信号量表示的含义,只有确切地知道信号量所代表的含义,设置这个信号量才有意义。
4)同步信号量的初值要根据进程的初始状态确定,具体问题具体分析,没有统一的方法。互斥信号量的初值通常是1。
5)根据同步、互斥规则和每个进程的操作流程可以确定P、V操作的位置。需要说明的是,无论是互斥问题还是同步问题,只要是需要进程进入阻塞状态,就必须想到在什么时候将进程唤醒。
提示:
同步进程之间具有某种合作关系,如在执行时间上必须按一定的顺序协调运行,或者共享某种资源。互斥进程彼此在逻辑上完全无关,它们的运行不具有次序的特征。
转载请注明原文地址:https://kaotiyun.com/show/bPRi777K
0

最新回复(0)