同步互斥问题及解决方法

一、基本概念
1.临界区
进程中访问临界资源的一段需要互斥执行的代码
2.进入区

3.退出区
清除“正在访问临界区”
4.剩余区
代码中的其余部分

二、临界区的访问规则
1.空闲则入
没有进程在临界区时,任何进程可以进入
2.忙则等待
有进程在临界区时,其他进程均不能进入临界区
3.有限等待
等待进入临界区的进程不能无限等待下去
4.让权等待
不能进入临界区的进程,应释放CPU

三、临界区的实现方法
1.禁用中断
没有中断,没有上下文切换,因此没有并发

进入临界区

离开临界区

缺点:
禁用中断后,进程无法被停止
临界区可能很长

2.软件方法:Pererson算法
满足两个线程之间互斥的经典的基于软件的解决方法

软件方法的分析:

3.更高级的抽象方法
3.1 锁:抽象的数据结构

使用锁来控制临界区的访问

3.2 原子操作指令
现代CPU体系都提供一些特殊的原子操作指令
测试和置位指令

交换指令

原子操作指令锁的特征:
优点

缺点

四、同步方法总结
锁是一种高级的同步抽象方法

常用的三种同步实现方法

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年2月4日
下一篇 2018年2月5日

相关推荐