信号量机制
为了更好的解决进程互斥与同步的问题
前面的提到的多种进程互斥实现方法,都无法解决让权等待问题
用户进程通过使用操作系统提供的一对原语wait(s)和signal(s)来对信号量进行操作
wait、signal原语简称为PV操作,P(S)、V(S)
整型信号量
用整形信号量来表示系统中某种资源的数量,但由于有原语操作加入,因此加锁和检查是一气呵成的,但会发生忙等,不满足让权等待
记录型信号量
区别在如果申请不到资源,就通过block原语将所有等待资源的进程进行挂起,避免了忙等,而释放资源时通过wakeup原语唤醒等待队列中的一个进程,数字正值表示剩余资源数目,负值表示请求资源的进程数
解决了让权等待问题
实现互斥
重点在对不同临界资源设置不同的互斥信号量,PV操作成对
实现同步
同步要点在于协调语言的执行顺序,还没到顺序的就进行阻塞
这里要点在 需要最先完成的操作完成后再V操作,后完成的操作之前要进行P操作