操作系统总结(六)进程同步

这篇博客探讨了操作系统中的进程同步问题,包括背景、互斥与临界区概念,以及解决临界区问题的方法如轮换法、标记法、Peterson算法和面包店算法。还介绍了进程同步的应用实例,如生产者消费者问题和哲学家进餐问题,讨论了避免死锁的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

多个进程需要合作完成一个任务,在进程合作过程中,除了并行执行之外,还经常存在两个进程需要共享信息相互等待的协作过程。为了满足上述要求,因此进程之间需要同步。如生产者消费者问题就是一个典型的需要同步的问题。

互斥与临界区问题
  • 竞争条件:多个进程并发访问和操作同一数据且执行结果与访问发生的特定顺序有关。

    如何尝试避免竞争条件?资源加锁。

  • 临界资源:把一次仅允许一个进程使用的资源称为临界资源。如只能独享的物理设备(打印机)、共享变量等等。

  • 临界区:在每个进程中,访问临界资源的那段程序称为临界区。

    如何进入临界区:互斥进入(这是临界区进入的基本原则和正确性保证),还需要考虑有空闲时进入,以及从请求进入到被允许进不能无限等待

临界区问题的解决

即如何进入和退出临界区以达到进程互斥和同步的目的

  • 一般软件法

    1. 轮换法

      满足互斥但是不满足空闲进入,即A进程离开临界区后即使B没有到达临界区也不能再次进入临界区。必须轮流进入

    2. 标记法

      进入临界区就做一个标记,后者根据标记决定是否进入临界区。但是由于时间片的切换,有可能导致两者同时标记了进入临界区但是没能成功进入,这就会导致无限等待。

    3. Peterson算法

      结合了标记和轮转两种方法,每个进程包含一个flag标记,此外还含有轮转标记。

      • 满足互斥进入

      以2个进程为例:如果不互斥,需要满足flag[0] =&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值