?一文学懂信号量机制的各种大题,详细操作见下文~
????????1965年,荷兰学者Dijkstra提出的信号量(Semaphores)机制是一种卓有成效的进程同步工具。在长期且广泛的应用中,信号量机制又得到了很大的发展,它从整型信号量经记录型信号量,进而发展为“信号量集”机制。现在,信号量机制已经被广泛地应用于单处理机和多处理机系统以及计算机网络中。?
PV操作对于每一个进程来说,都只能进行一次,而且必须成对使用。在PV原语执行期间不允许有中断的发生。
整型和记录型的信号量是考研学子学习的重点~
?
问题提出:
目录
? ? ? ? 用户进程可以通过使用OS提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥和进程同步。
? ? ? ? 信号量本质上是一种变量,可以是一个整数亦或是更加复杂的记录型变量。用信号量来表示系统中某种资源的数量(比如未婚优质对象的个数为1,则可以设置一个初值为1的信号量~)
? ? ? ? 原语,之前也说过,是一种特殊的程序段,只能一气呵成——如果进入区、退出区的操作均由原语实现,就能避免检查和上锁无法一气呵成~
????????wait原语(P操作)用来检验信号量是否足够以满足当前进程,如果不满足则卡死在循环等待;signal(V操作)当进程结束后,将此时富余的信号量归还~ (类别先检查后上锁~)
(进程会发生忙等,不满足让权等待~)?
?
?
(解决了让权等待~) ——来源于block的自我阻塞~
?
?
临界区:系统中的某些资源必须通过互斥来访问,访问那段系统资源的代码叫做临界区~
即——同一个时刻只能有一个进程进入临界区~?
步骤:
(互斥信号量mutex本质上是一种进入临界区的名额~)
(semaphore定义的信号量为记录型信号量,本身不会产生“忙等”的现象~)?
即,要让各个并发的进程按要求有序地推进~
V操作可以理解为唤醒P操作的前提~?
只有前面进程完成其后面的V获得信号量后——P后面的后置进程才有进入临界区的资格~
?王道的一个典例,仔细看!
牢记前V后P的口诀~
?王道的思维导图,很到位: