有m个进程共享同一临界资源,若使用信号量机制实现对一临界资源的互斥访问,则信号量的变化范围是( )。
A.1至-(m-1) B.1至m-1 C.1至-m D.1至m
当然,下面我用一个具体的例子来解释信号量值的变化范围。
假设有 3 个进程($m = 3$)共享一个临界资源,初始信号量值设为 1(表示资源可用)。
第一个进程执行 P 操作:
第二个进程执行 P 操作:
第三个进程执行 P 操作:
此时,信号量值为 -2,表示有两个进程在等待资源。由于资源只能被一个进程使用,所以其他进程必须等待。
第一个进程执行 V 操作(资源释放):
第二个进程执行 V 操作(资源释放):
第三个进程执行 V 操作(资源释放):
在这个例子中,信号量值的变化过程为:
1 → 0 → -1 → -2 → -1 → 0 → 1
因此,当所有进程都在等待资源时,信号量值最小可达 -2,即初始值 1 减去进程数量 3,得到 -2。
变化范围:信号量值从初始的 1 开始,最小可达 -(m-1)(即此例中的 -2)。当所有阻塞的进程被唤醒并完成对资源的访问后,信号量值最终恢复到 1。
这就是为什么信号量的变化范围是 **1 至 -(m-1)**。希望这个例子能帮助你理解!
无进程使用,信号量为1;
有一个进程使用,其他m-1个进程访问时阻塞并将信号量减1,-(m-1)
A
用户登录可进行刷题及查看答案
登录后提交答案