1965年,荷兰学者提出了利用信号量机制解决进程同步问题,信号量正式成为有效的进程同步工具,现在信号量机制被广泛的用于单处理机和多处理机系统 以及计算机网络中。 信号量S是一个整数,S大于等于零时代表可供并发进程使用的资源实体数,但S小于零时则表示正 在等待使用临界区的进程数。 Dijkstra同时提出了对信号量操作的PV原语。 P原语操作的动作是: (1)S减1; (2)若S减1后仍大于或等于零,则进程继续执行; (3)若S减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。 V原语操作的动作是: (1)S加1; (2)若相加结果大于零,则进程继续执行; (3)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续 执行或转进程调度。 PV操作对于每一个进程来说,都只能进行一次,而且必须成对使用。在PV原语执行期间不允许有 中断的发生。