信号机制是解决进程同步和互斥的有效工具。实现进程间的互斥时,公用变量信号的初值一般设置为(18);实现进程间的同步时,私用变量初值一般设置为(19)。

admin2010-05-10  39

问题 信号机制是解决进程同步和互斥的有效工具。实现进程间的互斥时,公用变量信号的初值一般设置为(18);实现进程间的同步时,私用变量初值一般设置为(19)。

选项 A、-2
B、-1
C、0或正整数
D、任意数值

答案C

解析 在操作系统中,进程之间经常会存在互斥(都需要共享独占性资源时)和同步(完成异步的两个进程的协作)两种关系。为了有效地处理这两种情况,W.Dijkstra在1965年提出了信号量和PV操作。
   .  信号量:是一种特殊的变量,表现形式为一个整数S和一个队列。
   .  P操作:也称为down()、wait()操作,使S=S-1,若S<0,进程暂停执行,放入信号量的等待队列;
   .  V操作:也称为up()、signal()操作,使S=S+1,若S≤0,唤醒等待队列中的一个进程。
   (1)完成互斥控制。也就是为了保护共享资源,不让多个进程同时访问这个共享资源,换句话说,就是阻止多个进程同时进入访问这些资源的代码段,这个代码段称为临界区(也称为管程),而这种一次仅允许一个进程访问的资源称为临界资源。为了实现进程互斥地进入自己的临界区,代码可以如下所示。
   P(信号量)
     临界区
   V(信号量)
   由于只允许一个进程进入,因此S的初始值应该为1(或者整个资源数目),表示可以允许多少个进程进入,当S<0时,其绝对值就是等待使用的进程数,也就是等待队列中的进程数。而当一个进程从临界区出来时,就会将S加1,如果等待队列中还有进程,则调入一个新的进程进入(这个过程称为“唤醒”)。
   (2)完成同步控制。最简单的同步形式是:进程A在进程B到达L2以前,不应前进到超过点L1,这样就可以使用下列程序:
   进程A               进程B
   …                  …
   11:P(信号量)    L2:V(信号量)
   …             …)
   因此,要确保进程B执行V操作之前,不让进程A的运行超过L1,信号量S的初值就应该为0。这样,如果进程A先执行到L1,那么执行P操作后,  S就会小于0,也就停止执行。直到进程B执行到L2时,将S加1,并唤醒它以继续执行。
转载请注明原文地址:https://jikaoti.com/ti/t0z7FFFM
0

最新回复(0)