文章目录

  • 1 进程同步与互斥
    • 1.1 进程同步
    • 1.2 进程互斥
    • 1.3 进程同步机制遵循的原则
    • 1.3 进程同步、互斥小结
  • 2 进程互斥实现方法
    • 2.1 互斥的软件实现方法
      • 2.1.1 单标志法
      • 2.1.2 双标志法先检查
      • 2.1.3 双标志法后检查
      • 2.1.4 Peterson算法
      • 2.1.5 互斥的软件实现方法小结
    • 2.2 互斥的硬件实现方法
      • 2.2.1 中断屏蔽法
      • 2.2.2 TestAndSet指令
      • 2.2.3 Swap指令
      • 2.2.4 互斥硬件实现方法小结

1 进程同步与互斥

1.1 进程同步

主要是为了解决进程异步问题管理多个进程的运行,为了使多个进程能够有条不紊地运行。

进程同步机制主要任务:对多个相关进程在执行次序上进行协调,使并发执行的诸进程之间能按一定规则(或时序)共享系统资源,并能很好地相互合作,从而使程序的执行具有可再现性

1.2 进程互斥

进程互斥:当前一个进程访问某源时,另外一个要访问该临界资源的进程必须要等待。

  • 临界资源:一段时间内只允许一个进程访问的资源,比如物理设备(摄像头、打印机)和某些变量、数据、内存缓冲区都是临界资源。
  • 对临界资源的访问必须互斥地进行。

对临界资源的访问过程可分为4个部分:

>临界区:进程访问临界资源的那段代码
进入区、退出区:实现进程互斥的那段代码段

1.3 进程同步机制遵循的原则
  1. 空闲让进:临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区;
  2. 忙则等待:当已有进程进入临界区时,其他试图进入临界区的进程必须等待;
  3. 有限等待:对请求访问的进程,应确保能在有限时间内进入临界区,不会产生饥饿现象;
  4. 让权等待:当进程不能进入临界区时,应立即释放处理器,防止进程忙等待。
1.3 进程同步、互斥小结

2 进程互斥实现方法

2.1 互斥的软件实现方法

2.1.1 单标志法

算法思想:两个进程在访问完临界区后会把使用临界区的权限交给另一个进程。也就是说每个进程进入临界区的权限只能由另一个进程赋予。

  1. 优点:可以实现同一时间内最多只允许一个进程访问临界区。两个进程必须是交替进入临界区。
  2. 局限性:违背了空闲让进原则,若某个进程不再进入临界区,另外进程也无法进入临界区,很容易造成资源利用不充分。
2.1.2 双标志法先检查

算法思想:每个进程访问临界区资源之前,先查看临界资源是否正被访问,若被访问,该进程需等待,否则,进程才进入自己的临界区。

先检查对方进程状态,再置自己标志

  1. 优点:不用交替进入,可连续使用
  2. 局限:两个进程可能同时进入临界区,违背忙则等待原则
2.1.3 双标志法后检查

先设置自己标志,再检查对方进程状态

局限:不遵循空闲让进,有限等待,容易导致双方谦让,从而谁也无法进入临界区,产生“饥饿”现象

2.1.4 Peterson算法

算法思想:是单标志法和双标志法后检查的综合

局限:不遵循让权等待,会发生忙等

2.1.5 互斥的软件实现方法小结

2.2 互斥的硬件实现方法
2.2.1 中断屏蔽法

利用“开/关中断指令”实现(与原语的实现思想相同,即在某进程开始访问临界区到结束为止都不允许中断,即不能发生进程切换,因此不可能发生两个进程同时访问临界区的情况)

  1. 优点:简单、高效
  2. 局限:不适用多处理机;只适用操作系统内核进程。不适用用户进程
2.2.2 TestAndSet指令

简称TS指令或TSL指令,用硬件实现,执行过程不许间断,只可一气呵成。

  1. 优点:实现简单、适用于多处理环境
  2. 缺点:不满足“让权等待”原则,暂时无法进入临界区的进程会占用CPU并循环执行TSL指令,并会导致"忙等"
2.2.3 Swap指令

也称Exchange指令,简称XCHG指令
用硬件实现,执行过程中不允许间断,只可一气呵成

  1. 优点:实现简单,适用多处理机环境
  2. 缺点:不满足“让权等待”原则,暂时无法进入临界区的进程会占用CPU并循环执行TSL指令,并会导致"忙等"
2.2.4 互斥硬件实现方法小结

7 操作系统第二章 进程管理 进程同步与互斥相关推荐

  1. 操作系统---第二章进程管理---进程同步---应用题

    1同步与互斥 同步就是先V后P,互斥就是先P后V. 三个进程P1,P2,P3互斥使用一个包含N(N>0)个单元的缓冲区.P1每次使用produce()生成一个正整数并用put()送入缓冲区某一空 ...

  2. 操作系统第二章 进程管理

    写在前面:本文参考王道论坛的 操作系统考研复习指导单科书 文章目录 第二章 进程管理 进程同步 读者写者问题 哲学家就餐问题 练习题 哲学家就餐:加碗(2019真题) 既是生产者又是消费者 和尚取水( ...

  3. 笔记篇:操作系统第二章 进程管理

    笔记篇:操作系统第二章 进程管理 目录 笔记篇:操作系统第二章 进程管理 2.1 进程的基本概念 2.1.1 程序的顺序执行及其特征 2.1.2 前驱图 2.1.3 程序的并发执行及其特征 2.1.4 ...

  4. (王道408考研操作系统)第二章进程管理-第三节10:经典同步问题之哲学家进餐问题

    本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 (王道408 ...

  5. (王道408考研操作系统)第二章进程管理-第三节8:经典同步问题之吸烟者问题

    本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 文章目录 一 ...

  6. (王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题

    注意:生产者与消费者问题Linux系统编程专栏有案例讲解 Linux系统编程39:多线程之基于阻塞队列生产者与消费者模型 Linux系统编程40:多线程之基于环形队列的生产者与消费者模型 本文接:(王 ...

  7. 操作系统 第二章 进程管理

    2.1 进程与线程 第一节零碎知识比较多,关键在于进程状态的切换.进程线程的关系. 第一章中提到过的多道程序环境,由于程序的特点,不能让程序并发,所以引入了进程的概念,让进程来并发,从而实现了多道程序 ...

  8. 3 操作系统第二章 进程管理 进程定义、特征、组织、状态与转换

    文章目录 1 进程的定义和特征 2 进程的组织 3 进程的状态与转换 3.1 进程的状态 3.2 进程状态转换 1 进程的定义和特征 引入进程的原因 为了使程序能够并发执行,并且可以对并发执行的程序加 ...

  9. (王道408考研操作系统)第二章进程管理-第一节4:进程通信(配合Linux)

    文章目录 一:什么是进程通信 二:如何实现进程间通信及其分类 三:通信方式1-共享存储(共享内存) (1)课本基础内容 (2)补充-Linux中的进程通信 四:通信方式2-管道 (1)管道是什么 (2 ...

最新文章

  1. 微软提出CLIPBERT:通过稀疏采样的视频语言学习
  2. Label 的作用是什么,是怎么用的?
  3. python argparse中action 的可选参数store_true
  4. xml发生错误_WEB之web.xml详解
  5. UNIX再学习 -- 错误和警告
  6. vue.js基础知识篇(4):过滤器、class与style的绑定2
  7. java日期格式化、解析
  8. c语言制作贪吃小白入门,小白入门——easyx界面版“贪吃蛇”的C语言实现(详细)...
  9. 无码编程:无代码软件开发大行其道
  10. 华泰证券 python 自动交易软件_量化交易策略自动搬砖自动交易软件费用
  11. 【自动驾驶】模型预测控制(MPC)实现轨迹跟踪
  12. 输出信噪比公式_关于信噪比SNR
  13. js室内地图开发_我开发的开源 JS 地图引擎 maptalks.js, 请大家不吝赐教!
  14. iPad商标之争或和解
  15. linux将汇编转为机器码,如何将汇编语言转化为机器码
  16. torch.nn.Linear实现单层回归网络的正向传播
  17. DNS服务器的作用 路由器的功能,dns服务器是什么意思 dns服务器主要功能有哪些...
  18. Dubbo2.6.5入门——简单的HelloWorld
  19. iOS热更新实现方式
  20. PIV粒子图像运动场

热门文章

  1. 安卓9.0马达框架分析
  2. C++ —— C++程序编译的四个过程
  3. linux查看登录服务器的ip历史记录,通过登陆IP记录Linux所有用户登录所操作日志的方法...
  4. 四、数据预处理——处理连续型特征:二值化与分段
  5. 天池 在线编程 最小的行程(动态规划)
  6. LeetCode 802. 找到最终的安全状态(逆向图+拓扑排序)
  7. LintCode 563. 背包问题 V(DP)
  8. 剑指Offer - 面试题54. 二叉搜索树的第k大节点(二叉树循环遍历)
  9. LeetCode 134. 加油站(贪心)
  10. python股票历史最低点_Python统计某一只股票每天的开盘,收盘,最高,最低价格!...