目录
1信号量机制
1.1定义:
对系统中资源及其组织情况的抽象
1.2包含:
1.2.1value 可用资源数目
value>0-----当前可用资源数目为value
value=0-----当前资源刚好用完
value<0-----有value个进程正在等待执行
1.2.2L 等待此类进程资源的PCB表链
L不为空,L中等待进程的个数为value的绝对值
2p-v操作:
2.1p原语:
请求系统分配一个单元的资源,
//s为信号量
--s.value;
if(s.value<0)//没有空闲资源
{
block(s,L);//调用进程进入等待队列,阻塞调用进程
}
2.2v原语:
请求系统释放一个单元的资源
++s;//释放一个资源
if(s.value<=0){// 仍然有进程处于阻塞队列
wakeup(s,L);//从等待队列中取进程进入就绪队列
}
3信号量的应用:
3.1解决生产者-消费者问题
3.1.1互斥:
设生产者进程和消费者进程的公有互斥信号量为mutex初=1,表示当前共享的缓冲池资源空闲
3.1.2同步
当缓冲池空时,
当且仅当生产者给缓冲池中放产品,消费者从缓冲池中取产品
设两进程的私有同步信号量为full初=0,表示当前缓冲池为空