看个例子:
Eg:某计算机系统中有2台打印机..则可在初始化信号量S时将S.value的值设为2,队列S.L 设置为空
开始时这样的
剩余资源数2,等待队列为null
下面看进程
进程从左到右:
然后切换到P1进程
这时候,vlaue等于0,资源使用完毕了,没有进程在等待
然后继续下一个进程
进入下一个进程
P3跟P2一样
然后P0进程结束,signal释放资源时候
把打印机资源分配给P2
那么现在接着P2完成进程
跟上面一样,P2申请资源后,-1+1=0,说明还有阻塞进程,P2运行完signal后,释放资源,把释放的资源给P3使用
然后
然后P2完成,回到P1操作
然后结束后到P3
最后资源数还是2,结束
总结: