问题 单项选择题

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

A.-2

B.-1

C.0或正整数

D.任意数值

答案

参考答案:C

解析:试题18~19

[分析]:
在操作系统中,进程之间经常会存在互斥(都需要共享独占性资源时)和同步(完成异步的两个进程的协作)两种关系。为了有效地处理这两种情况,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,并唤醒它以继续执行。

单项选择题
填空题