大学生寒假在家过于无聊,整理一下以前学过的知识,顺便复习一下,水平较低,专业性差,仅供参考,不喜勿喷(反正也没人看)。心虚啊。。。
一、信号量
(1)概念
信号量是一种变量,它只能取正整数值或0,对这些数只能进行两种操作:等待和信号
用两种记号来表示信号量的这两种操作:
P(semaphore variable) 代表等待 -1
V(semaphore variable) 代表信号 +1
(2)分类
最简单的信号量是一个只能取“0”和“1”值的变量,也就是人们常说的“二进制信号量”
可以取多种正整数值的信号量叫做“通用信号量”
(3)PV操作
假设我们有一个信号量变量sv,则pv操作的
定义如下
P(sv):如果sv的值大于零,就给它减去1;如果sv的值等于零,就挂起该进程的执行
V(sv): 如果有其他进程因等待sv变量而被挂起,就让它恢复执行;如果没有进程因等待sv变量而被挂起,就给