操作系统-5【并发性:互斥和同步】

5.1 并发的原理principles of concurrency

在这里插入图片描述

0. 一些术语

  1. 临界区:
    critical section

一段代码,在这段代码中 进程将共享资源,当另外一个进程已在这段代码中运行时,这个进程就不可在这段代码中执行。同时只允许一个进程访问临界区

  1. 死锁:
    deadlock
    两个或以上的进程 因每个进程都在等待其他进程做完某事而不能继续执行。
    竞争、协作导致的都不能向后执行,若无外力干预,则都面临饿死。

  2. 活锁
    livelock

两个或两个以上的进程为响应其他进程中的变化持续改变自己的状态但不做有用的工作情形

  1. 互斥:
    mutual exclusion

当一个进程在临界区访问共享资源时,其他进程不能进入临界区访问共享资源的情形

  1. 竞争条件:
    race condition

多个线程或进程在读写一个共享数据时,结果依赖于他们执行的相对时间情形

  1. 饥饿
    starvation

一个可运行的进程尽管能继续执行,但被调度程序无限期的忽视,而不能被调度执行的情形。

1. 例子

在这里插入图片描述
echo 共享过程

  1. 全局共享资源危险
  2. 难以对资源做到全局优化分配
  3. 难以定位程序错误,错误的产生可能是由于代码出错,也可能是由于进程与其余进程 协作出错,资源分配出错

2. 竞争条件

race condition
竞争条件发生在多个进程 或 线程对共享数据进行读写操作,因此数据的最终值取决于 进程指令 对共享数据的操作顺序

3. 操作系统关心的

在这里插入图片描述

4.进程的交互

在这里插入图片描述

5. 互斥的要求

  1. 强制互斥:一次只允许一个进程进入临界区
  2. 一个在非临界区停止的进程不能干涉其他进程
  3. 不会出现死锁或饥饿
  4. 当前临界区为空,无论进程的优先级高低,必须能够立即进入
  5. 对相关进程的执行速度和处理器的数量没有任何要求和限制
  6. 一个进程驻留在临界区的时间必须是有限的

在这里插入图片描述

5.2 互斥:硬件的支持Mutual Exclusion:Hardware Support

1. 中断禁止 interrupt Disabling

在这里插入图片描述
单处理机器中,并发不能重叠,只能交替

  1. 一个进程将一直执行直到 系统服务 或被中断
  2. 中断提供了交互
  3. 只需要保证一个进程不被中断即可

缺点:
4. 代价很高
5. 不适合多核,只适合单核

2. 专属机器指令

  • 原子性要求:指令周期内,特殊机器指令不会被中断
  • 实现过程中:若有进程在访问指令的内存单元,其他进程不能访问该指令所在的内存单元
  • 通过机器硬件进行设置

i初始化为0,第一个调用testset的进程将i置为1,并返回true,随后进程调用将返回false,直到第一个进程执行结束,将i重置为0在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.3 信号量 Semaphores

1. Overview

信号量是一种数据结构
包含 一个整数 和一个阻塞队列
在这里插入图片描述
在这里插入图片描述

2. 互斥 mutual exclusion

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 生产者/消费者问题 The Producer/Consumer Problem

在这里插入图片描述
在这里插入图片描述

  1. 有一个或多个生产者 生产某种类型的数据(记录、字符)并放到缓冲区中
  2. 有一个消费者从缓冲区中取数据,每次取一项
  3. 只有一个主体可以访问缓冲区

生产者——in指针向存储单元存放数据,一次存放一条,in指针向后移一个位置
消费者——out指针 从缓冲区逐条取走数据

谁跑得快?

在这里插入图片描述
在这里插入图片描述

5.4 管程 Monitors

5.5 消息传递 Message Passing

5.6 读者/写者问题 Readers/Writers Problem

在这里插入图片描述在这里插入图片描述

#  5.7 小结 Summary
在这里插入图片描述

名词解释

并行

同一时间内,有多个进程执行

并发

同一时刻,有多个进程执行

交替执行

单处理器系统中,采用多个进程并行时,采用的时交替执行

重叠执行

多处理器系统中,当多个进程并发时,采用的是重叠执行

互斥

当一个进程在临界区 访问共享资源时,不允许其他进程进入临界区访问共享资源

同步

多个进程的执行顺序有严格的限制,
A通过但缓冲区向buffer中存放数据
B从buffer中读取数据
当buffer中没有数据时,B被阻塞
当A向buffer放数据后,唤醒B进程

临界区

一段代码
在这段代码中 进程将访问共享资源
当一个进程已经执行这段代码时,另一个进程不能执行这段代码

临界资源

1个 或多个进程需要进行访问的一个不可共享的资源

条件竞争

多个线程 或 进程 对一个共享数据进行操作时
最终结果取决于 最后执行的那个进程

原子操作

由 一个或多个 指令组成的一个函数或动作,对外是不可见的
其他进程不知道其中见执行的结果,也不能中断他执行

信号量

用于传递进程间 信号的一个整数值
只有初始化
增加
递减

三个操作

选择

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值