进程合作:多进程共同完成一个任务
每一个进程有一段程序,执行不是顺序执行,有些地方需要等待其他进程发发送信号才能执行。
L16 进程同步与信号量
进程同步:
需要让进程走走停停来保证进程合理有序称为进程同步

L16 进程同步与信号量
L16 进程同步与信号量
但从依靠counter进行语义判断不足以判断到底来了几个生产者,在消费者唤醒时,是不能够唤醒睡眠中的进程。
L16 进程同步与信号量
L16 进程同步与信号量
L16 进程同步与信号量
当有进程睡眠时sem -1
继续有进程睡眠时 sen 再-1

当有进程唤醒时 sem ++

当sem >1时,sem++表示新增缓冲区,有空闲的新增缓冲区出现

L16 进程同步与信号量
v(semaphore s)
{
s.value++;
if(s.value <= 0)
{
wakeup(s.queue);
}
}
L16 进程同步与信号量

相关文章: