OS学习笔记-17(清华大学慕课)进程的同步和互斥

进程的同步和互斥

背景

  • 多个进程一起执行有很多好处,但执行时容易产生资源共享的问题

在这里插入图片描述
进程的交互

  • 互斥(一个进程占用某资源,则其他进程不能使用该资源)
  • 死锁(多个进程占用各自部分资源,形成循环等待)
  • 饥饿(一些进程轮流占用一个资源,导致一个进程一直无法得到该资源执行)

同步和互斥

  • 同步亦称直接制约关系,异步亦称简介制约关系
  • 同步例子:输入程序A通过单缓冲向B发送数据。缓冲区为空时B阻塞,缓冲区满时A阻塞
  • 异步例子:当一个进程访问临界区时另一个进程需要等待,等它退出之后才能访问

临界区

  • 许多物理设备都属于临界资源,还有许多变量和数据等被若干进程共享,也属于临界资源
  • 访问临界资源的那段代码称为临界区
  • 访问临界资源,依次包括进入区,临界区,退出区,剩余区

在这里插入图片描述
实现进程互斥访问临界区的方法

  • 禁用中断(硬件方法)
  • 软件方法
  • 更高级的抽象方法(硬件方法)

方法一:禁用中断
在这里插入图片描述

  • 禁用中断方法的缺点

在这里插入图片描述
基于软件的同步方法

  • 两个进程间通过共享变量实现(比较麻烦)
    在这里插入图片描述

  • 注意while是个死循环,条件不满足时会不断等待

在这里插入图片描述

  • 方法一缺点:如果另一个进程未进入临界区,则该进程也无法进入临界区

在这里插入图片描述

扫描二维码关注公众号,回复: 10055621 查看本文章
  • 方法二缺点:有可能同时进入临界区

在这里插入图片描述

  • 方法三缺点:可能两个都进入不了

Peterson算法

  • 后写的满足条件,会循环等待,进不去,先写的进入

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

  • 容易扩展到多线程

N线程实现方法
在这里插入图片描述
高级抽象的同步方法
在这里插入图片描述

  • ?

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

发布了43 篇原创文章 · 获赞 3 · 访问量 3369

猜你喜欢

转载自blog.csdn.net/a1920993165/article/details/99866987