操作系统-10-进程同步和互斥

操作系统-10-进程同步和互斥

前言

mark

1. 同步和互斥的概念

1.1 进程同步

  • 同步也称为直接制约关系。
  • 在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,如等待、传递信息等,引入了进程同步的概念。进程同步是为了解决进程的异步问题。
  • 一个简单的例子来理解这个概念。
  • 例如,让系统计算1 + 2x3,假设系统产生两个进程: 一个是加法进程,一个是乘法进程。要让计算结果是正确的,一定要让加法进程发生在乘法进程之后,但实际上操作系统具有异步性,若不加以制约,加法进程发生在乘法进程之前是绝对有可能的,因此要制定一定的机制去约束加法进程,让它在乘法进程完成之后才发生。

异步性:进程具有异步性的特征。异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。

1.2 进程互斥

  • 互斥,亦称间接制约关系进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。
  • 在这里需复习一下临界资源的概念。
  • 我们把一个时间段内只允许一个进程使用的资源称为临界资源。许多物理设备(比如摄像头、打印机)都属于临界资源。此外还有许多变量、数据、内存缓冲区等都属于临界资源。
  • 对临界资源的访问,必须互斥地进行。

mark

  • 为了禁止两个进程同时进入临界区,需遵循以下准则

mark

2. 临界区进程互斥的实现方法

2.1 软件实现方法

mark

  • 软件实现方法的思想:在进入区设置并检查一些标志 来标明是否有进程在临界区中,若已有进程在临界区,则在进入区通过循环检查进行等待,进程离开临界区后则在退出区修改标志。
  • 入区通过循环检查进行等待,进程离开临界区后则在退出区修改标志。
  1. 单标志法

mark

mark

  1. 双标志先检查法

mark

  1. 双标志后检查法

mark

  1. Peterson 算法

mark

2.2 硬件实现方法

mark

  1. 中断屏蔽

mark

  1. TestAndSet指令
  • 执行TSL指令时,它的内部运转逻辑:
    • 假设lock现在为false,代表临界资源A空闲,那么我就可以访问这个资源,同时将lock=true,提醒别的进程,这个临界资源A我正在使用,让他们等等
    • 假设lock为true,代表临界资源正在有人使用,所以我必须等待,并且将lock=true,并不影响什么,所以没关系,只是为了让lock为false时可以上锁,将上锁与检查在一个TSL指令完成。

mark

  1. swap 指令
  • old是每个进程都要进行的一步,都必须将old=true
  • 分析一下这样做的原因:
    • 因为lock是某一特定临界资源的共享变量,当每一个进程准备访问这个特定的临界资源时,初始化old=true,然后进入while循环进行交换,如果当前lock是false,则交换后old=false,则当前进程可以跳出循环进入临界区代码段,
    • 同时因为交换,lock=old=true上锁,不让别的进程来打扰,别的进程会因为lock变为true,一直在while循环等待,当我使用完临界资源,则将lock=false,此时别的进程再交换old和lock就能判断old=false,可以跳出循环,使用临界资源。

mark

3. 信号量

mark

mark

3.1 整型信号量

mark

mark

3.2 记录型信号量

mark

mark

  • 一个案例:打印机资源为2访问

mark

3.3 信号量机制实现进程同步和互斥

mark

3.3.1 互斥

mark

3.3.2 同步

  • 想象一下四则运算的顺序,加减乘除;

mark

  • 要想理解这一部分知识,必须知道P、V操作的内部实现原理

mark

3.3.3 前驱关系

mark

4. 管程

mark

4.1 为什么要引入管程?

mark

4.2 管程的基本组成

mark

4.3 管程实现消费者生产者问题

mark

mark

4.4 java中的管程

mark

参考书籍:《王道考研计算机操作系统》

参考博客https://mubu.com/doc/Cd-Y4YOfkh#o-1d01735b78f18c07f

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信