Week5 同步机制
- 1. 进程的并发执行
- 2.进程互斥
-
- 2.1 基本概念
- 2.2 进程互斥的软件解决办法
- 2.3 进程互斥的硬件解决方案
- 3.进程同步
- 4.信 量及P、V操作
-
- 4.1 信 量
- 4.2 PV操作
- 4.3 PV操作解决进程间互斥问题
- 5. 案例分析
-
- 5.1 生产者/消费者问题
- 5.2 第一类读者/写者问题——读者优先
- 6.本章重点
1. 进程的并发执行
并发的特点:进程的执行是间断性的;进程的相对执行速度是不可预测的;在并发执行的情况下,共享资源的使用会带来一些制约。
举例来说,有两台ATM机,两个人分别用同一个账 进行取款,相当于两个进程。该账户余额为5000元,那么在取款前ATM机就会几乎同时读取系统内的余额数字,即两台ATM机都读入了5000元并显示给用户看。然后1 ATM取钱1000,2 ATM取钱2000,可是由于两台ATM之前读取的余额是5000,所以操作完成后,存入数据库的余额数值就会是4000(如果ATM1先完成操作)或3000(如果ATM2先完成操作。无论是哪种情况,这明显与事实不符合,这就是并发进程会产生的问题之一。
从上述案例可知,有些进程之间,其实是有先后顺序要求的,再比如提取数据、复制数据、显示数据、写入数据四个进程,由于进程的并发性,如果显示数据先执行,则可能会显示一个错误的数据(提取数据还未执行完毕)。通常来说,提取数据是一定要先执行完毕才可以执行后续步骤,而复制数据和显示数据其实可以同时执行。同一轮的复制数据和显示数据执行完毕后,才可以执行写入数据。因此进程之间的制约关系就很明显了。
2.进程互斥
2.1 基本概念
竞争条件
两个或多个进程读写某些共享数据区域时,而最后的操作结果取决于进程运行的精确时序,也就是谁先谁后会导致不同的结果。这种情况就叫做竞争条件。
进程互斥(Mutual Exclusive)
由于各进程要求使用共享资源(变量、文件等),而这些资源需要排他性使用(非我莫属),各进程之间竞争使用这些资源的情况,就叫做进程互斥。
临界资源(critical resource)
系统中某些资源一次只允许一个进程使用,这样的资源称为临界资源或共享变量或互斥资源。
临界区或互斥区(critical section)
各个进程中对某个临界资源(共享变量)实施操作的程序片段。
临界区(互斥区)的使用原则:
- 没有进程在临界区时,想进入临界区的进程可进入;
- 不允许两个进程同时处于其临界区中;
- 在临界区外运行的进程不得阻塞其他进程进入临界区;
- 不得使进程无限期等待进入临界区;
2.2 进程互斥的软件解决办法
软件方案:Dekker解法、Peterson解法
1).用一个free标志,标识临界区是否为空闲,true标识有,false标识没有。初值为false。但是这种简单的思路仍会有以下问题:即P进程执行到while判断后还没改变free标识就退出cpu了(因为一条看似简单的语句其实在机器语言里是分很多步执行的),而此时Q进程进来执行到临界区。这样临界区就有两个进程在执行了。所以,要将while(free)和free=true合并为一句原语。
问题描述:
- 一个或多个生产者生产某种类型的数据放置在缓冲区中;
- 有消费者从缓冲区中取数据,每次取一项;
- 只能有一个生产者或消费者对缓冲区进行操作;
要解决的问题: - 当缓冲区已满时,生产者不会继续向其中添加数据;
- 当缓冲区为空时,消费者不会从中取走数据
避免忙等待:睡眠与唤醒操作(原语),下图的代码可有助于理解上述问题
4.信 量及P、V操作
这是一种特殊的同步机制,既能解决同步问题,又能解决互斥问题(可以看作一种特殊的同步)。
4.1 信 量
信 量是一个特殊的变量,用于进程间传递信息的一个整数值。对信 量只能实施三种操作:初始化,P和V
4.3 PV操作解决进程间互斥问题
- 分析并发进程的关键活动,划定临界区
- 设置信 量mutex(mutual exclusive),初值为1
- 在临界区前实施P(mutex)操作
- 在临界区之后实施V(mutex)操作
5. 案例分析
5.1 生产者/消费者问题
6.本章重点
- 基本概念
- 竞争条件、临界区
- 进程同步、进程互斥
- 自旋锁、忙等待
- 信 量、PV操作
- 经典问题模型及解决方案
- 生产者-消费者问题
- 读写者问题
- 重要名词:竞争条件、忙等待、临界资源、临界区、进程互斥、进程同步、信 量、PV操作、锁、自旋锁、生产者消费者问题、读写者问题
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!