信号量机制
进程同步之信号量机制
信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。
信号量机制
信号量机制即利用 pv 操作来对信号量进行处理。
什么是信号量?信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。
当它的值大于 0 时,表示当前可用资源的数量;
当它的值小于 0 时,其绝对值表示等待使用该资源的进程个数。
注意,信号量的值仅能由 PV 操作来改变。
一般来说,信号量 S$\ge$0 时,S 表示可用资源的数量。执行一次 P 操作意味着请求分配一个单位资源,因此 S 的值减 1;当 S<0 时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。而执行一个 V 操作意味着释放一个单位资源,因此 S 的值加 1;若 S£0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。