信号量机制
解决进程同步问题的机制
1965年,荷兰学者Dijkstra提出的信号量(Semaphores)机制是一种卓有成效的进程同步工具。在长期且广泛的应用中,信号量机制又得到了很大的发展,它从整型信号量经记录型信号量,进而发展为“信号量集”机制。现在,信号量机制已经被广泛地应用于单处理机和多处理机系统以及计算机网络中。
信号量S是一个整数,S大于等于零是代表可供并发进程使用的资源实体数,当S小于零时则表示正在等待使用临界区的进程数。
Dijkstra同时提出了对信号量操作PV原语
P原语操作的动作是:
(1)S减1;
(2)若S减1后仍大于或等于零,则进程继续执行;
(3)若S减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度
V原语操作的动作是:
(1)S加1;
(2)若相加结果大于零,则进程继续执行;
(3)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度
PV操作对于每一个进程来说,都只能进行一次,而且必须成对使用。在PV原语执行期间不允许有中断的发生。
信号量机制分 整型信号量机制、记录型信号量机制、and型信号量机制、信号量集
整型信号量是一种最简单的信号量,主要用于解决并发程序互斥访问临界资源问题。
记号信号量在整型信号量的举出上进行了改进,让不能进入临界区的进程“让权等待”,即进程状态有运行转换为阻塞状态,进程进入阻塞队列中等待。
AND型信号量集是将进程在运行中所需要的临界资源全部一次性分配给进程,等进程用完后再全部一次释放。
信号量集的定义
1.用s1、s2、...sn分别表示有n类裂解资源信号量;
2.用d1、d2、...dn分别表示进程需要的每类临界资源个数;
3.用t1、t2、...tn分别表示每类临界资源分给进程的下限值;
信号量分类
参考资料
最新修订时间:2022-10-11 13:47
目录
概述
参考资料