信号量
#信号量机制
--
用户进程可以使用操作系统提供的一对原语来对信号量进行操作,从而便于实现进程互斥,进程同步
*信号量就是一个变量*(可以是一个整数,也可以是更复杂的记录型变量),可以用一个信号量来表示系统中某种资源的数量。
原语,多次介绍了,不懂自己搜
*一对原语*:wait(S)原语和signal(S)原语,理解成普通函数就行
wait,signal,原语常称为P,V操作,故一般写作P(S),V(S)
#整型信号量
--
用一个整数型的变量作为信号量,用来表示系统中某种资源的数量
逻辑上和双标志先检查法差不多
区别就在于,信号量是原语操作的,执行起来一气呵成,不会因切换进程而炸缸
#记录型信号量
--
可见其结构中多了一个等待队列,这是件好事
也是解决“忙等”问题的关键
P,V操作综上,P操作中多了一个*block函数*,V操作中多了一个*wakeup*函数
*block函数会将进程从运行态挂到阻塞队列*
*wakeup函数则会唤醒阻塞队列里的一个进程,将该进程变为就绪态*
如此一来就解决了“忙等”
我觉得这个理解起来,实在不难,你自己看看办吧