1、创建semaphore信号量集(仅创建一个信号量),初始值为0
2、进程a释放掉n个信号量,进程b获取了m个信号量(n >m)均使用undo标志, 此时在进程a中获取信号量值,为n - m
3,杀掉进程a, 再次在进程b中获取信号量值,为0
问题是为什么此时的信号量值不为-m,还是说系统当前的信号量值只能为非负,才会导致这种结果?
1、创建semaphore信号量集(仅创建一个信号量),初始值为0
2、进程a释放掉n个信号量,进程b获取了m个信号量(n >m)均使用undo标志, 此时在进程a中获取信号量值,为n - m
3,杀掉进程a, 再次在进程b中获取信号量值,为0
问题是为什么此时的信号量值不为-m,还是说系统当前的信号量值只能为非负,才会导致这种结果?
2 回答720 阅读✓ 已解决
6 回答4k 阅读✓ 已解决
3 回答790 阅读
1 回答771 阅读
2 回答726 阅读
1 回答1.3k 阅读
1 回答825 阅读
Semaphore值最小为0,不可能为负数。
根据《操作系统设计与实现》(Operating Systems - Design and Implementation by Tanenbaum etc.)第三版 2.2.5 Semaphores: