操作系统理论知识:同步与互斥

 

 


一、并发

1、相关术语

  • 原子操作(atomic operation)——不可分割的操作;
  • 临界区(critical section)——不允许多个进程同时进入的一段访问共享资源的代码
  • 死锁(deadlock)——两个及以上进程因每个进程都在等待其他进程做完某事(如释放资源),而不能继续执行;
  • 活锁(livelock)——两个及以上进程,为响应其他进程中的变化而不断改变自己的状态,但是没有做任何有用的工作;
  • 互斥(mutual exclusion)——当一个进程在临界区访问共享资源时,不允许其他进程进入访问;
  • 竞争状态(race state)——多个进程/线程读写共享数据,其结果依赖于它们执行的相对速度;
  • 饥饿(starvation)——可运行的进程长期未被调度执行;

2、并发的基本特征

并发:在同一时间间隔内发生的进程或线程交替地共享相同的资源。

异步性:相对执行速度不可预测是多道程序系统的基本特征。

3、竞争

竞争出现的条件:

  • 在并发环境中发生;
  • 多个进程共享数据;
  • 多个进程读取且至少一个进程写入;
  • 共享数据的最终结果取决于进程执行的相对速度

竞争引发的控制问题:互斥、死锁、饥饿。

4、操作系统需要考虑的问题

  • 并发环境中跟踪每个进程,知道它们的状态;
  • 为每个进程分配和回收各种资源:处理器、存储器、文件、I/O设备;
  • 保护进程拥有的数据和物理资源;
  • 保证进程的结果与相对执行速度无关

5、进程间的互相作用

间接作用:因为共享而产生竞争,通过共享实现合作;

直接作用:通过通信的合作(进程知道其他进程的存在);

二、互斥

1、互斥的要求

  • 在具有相同资源或共享对象的临界区的所有进程中,一次只允许一个进程进入临界区——强制排它;
  • 一个在非临界区停止的进程必须不干涉其他进程——充分并发;
  • 没有进程在临界区中时,任何需要访问临界区的进程必须能够立即进入——空闲让进;
  • 决不允许出现一个需要访问临界区的进程被无限延迟——有限等待;
  • 相关进程的执行速度和处理器数目没有任何要求或限制(满足异步条件)——满足异步;
  • 若进程无法进入临界区则应该立即释放处理器以防止进程忙等待——让权等待;

2、实现互斥的尝试方案

1、第一种方案

该方案硬性规定了进程进入临界区的顺序——轮流进入,可以保证互斥,但难以支持并发处理。

存在的问题:

  • 忙等待(busy waiting):为了等待一事件的发生,重复执行一段循环代码——浪费CPU时间;
  • 必须轮流进入临界区的设计不合理,限制了进程的推进速度;
  • 如果一个进程失败那么另一个进程将被永久阻塞;

2、第二种方案

该方案中每个进程有自己进入临界区的钥匙,每个进程控制一个标志位表示自己进入和离开临界区,进程先检查对方的标志再设置自己进入临界区的标志。

存在的问题:

  • 一个进程在临界区内失败,则另一个进程将被永远阻塞
  • 不能保证互斥——两个进程可能同时进入临界区

这是一个错误的方案,不能保证进程的运行结果与执行速度无关。

3、第3种方案

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值