首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

操作系统学习笔记-信号量相关问题

写者1 → 写者2 第一个写进程会顺利通过Ⅰ(semWait(w))操作,Ⅱ(semWait(rw))操作,并顺利写文件。...写者1 → 读者1 写着进程顺利通过Ⅰ(semWait(w))操作,Ⅱ(semWait(rw))操作,开始写文件。...此时若写进程执行,可以顺利执行Ⅰ(semWait(w))操作,但在Ⅱ(semWait(rw))操作会被阻塞。...然后第二个读进程并发执行,由于上一步读进程顺利执行Ⅰ(semWait(w))操作,所以第二个读进程会被阻塞在Ⅴ(semWait(w))操作。...然后读进程会执行Ⅵ(semWait(rw))操作对文件“上锁”,在执行完Ⅶ(semWait(w))操作时释放对写进程的操作,第二个写进程就继续执行,但是会被阻塞在Ⅱ(semWait(rw))操作。

66820

操作系统学习笔记-并发性:互斥和同步

两个原子操作: semWait(x): semWait 对 count 进行减一操作,如果操作结果为负数(小于零),执行semWait 的进程会被阻塞到队列上; semSingal(x):semsignal...; queueType queue; }; /*semWait*/ void semWait(semaphore s) { s.count--; if (s.count < 0...当A执行一条semWait指令后,信号量减为0,A能继续执行,随后它加入就绪队列。 然后在时刻②时,B正在运行,最终执行一条semWait指令,并被挂起(此时信号量为-1)。...在时刻⑤时,D加入就绪队列,C开始运行,当它执行semWait指令时被挂起。 类似地,在时刻⑥,A和B运行,且被挂起在这个信号量上,允许D恢复执行。...s.count ≥ 0:s.count是可以执行semWait(s)而不被挂起的进程数(如果其间没有semSignal(a)被执行)。这种情形允许信号量支持同步与互斥。

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券