哈工大操作系统学习笔记九——进程同步与信号量

哈工大os学习笔记九(进程同步与信号量)



一、 进程同步

1.进程同步

 一组进程为了协调其推进速度,在某些地方需要相互等待或者唤醒,这种进程间的相互制约就被称作是进程同步。这种合作现象在操作系统和并发式编程中属于经常性事件。合理有序的进行就是合作。
 所谓进程同步就是等待,等待是进程同步的核心,一个进程要等待另一个进程发送的信号,继续执行。不是任意前进的。
进程同步也好,互斥也好,都是为了多个进程合理有序的向前推进。
在这里插入图片描述

2.生产者消费者

在这里插入图片描述
在这里插入图片描述
 进程的等待是关键,先分析哪里会让进程停,再分析哪里会发信号让信号继续。
 所谓的停,先判断一下,这个条件是否能够满足我这个进程的需求;这个资源是否充足能够满足我的需求继续执行下去。而这个条件和资源依赖于另一个进程结束时产生。这就是所谓的继续前进。几个进程之间相互直接制约,合理有序的前进最终完成任务。

二、信号量

在这里插入图片描述
单独依靠信号,会导致无法唤醒P2进程。
生产者消费者之间的多种映射对应,多个生产者,多个 消费者。
由这个原因引出信号量。

1.信号量

在这里插入图片描述
同步也就是等待唤醒,然后根据信号量实现等待唤醒。
就绪态,阻塞态,运行态的切换。
在这里插入图片描述
semaphore<=0等待,睡眠,阻塞,进程根据信号量的值决定干什么。
多进程合作完成一件事的时候,会进行合作,合作就不是随便执行,多进程在执行推进的过程中就要合理有序的推进执行,表达的含义就是执行到一定程度就要等待,依靠信号量进行的等待,看信号量的值进行判断。
semaphore=0 表示缓冲区满了,空闲缓冲区为0,空闲资源为0,空闲资源为2,空闲资源为-2缺2个资源。

2.信号量与PV操作

 这个进程同步机制应该算的上是古董级的了,这种机制的主要思想就是——通过将资源数量化,将申请资源和释放资源的动作具体化,从而达到对资源的操作及结果可视化的程度。
在这里插入图片描述

  v(semaphore s )
  {
  	s.value++;
  	if(s.value<=0){
		wakeup(s.queue)}
  }

在这里插入图片描述
先看有没有资源能不能用,在用mutex(互斥信号量 )上锁。
有减有增
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值