信号量机制的引入
利用原语对信号量操作
整型信号量
记录型信号量
打印机例子
先把两个资源分配给p0,p1进程。这时p3和p4进程提出申请资源的操作,发现系统已经没有资源了,在wait原语中进入阻塞态。依次进入等待队列。
假设p0已经执行完了,value=-1,唤醒等待队列的最前面的那个进程p2
假设p2进程释放后,value=0,说明还有进程在等待资源,于是又唤醒队列里的一个进程p3,等待队列为空了
p3释放后,value=1,说明没有进程在等待资源了。
总结
信号量机制实现进程的同步、互斥、前驱关系
实现同步
实现互斥
实现前驱关系
比较
生产者消费者进程
多生产者—多消费者进程
读者写者问题
潜在的问题就是读进程是优先的,主要读进程在读,写进程就会饿死
哲学家进餐问题
办法1
办法2:只有左右两只筷子都可以用时才拿起吃饭
当0号拿了筷子在吃饭时,其余请求的人都进入阻塞
0号在吃饭,4号申请,拿起啦左边的筷子,右边的筷子在0号那,所以4进入阻塞,等待另一只筷子。