说点什么吧~
17.1 背景
并发进程的正确性
独立进程:不和其他进程共享资源和状态
并发进程:在多个进程间有资源共享
进程并发执行的好处
好处1:共享资源
好处2:加速
好处3:模块化
原子操作:指一次不存在任何中断或失败的操作
要么操作成功完成,或操作没有执行,不会出现部分执行的状态
操作系统需要利用同步机制在并发执行的同时, 保证一些操作是原子操作
17.2 现实生活中的同步问题
17.3 临界区和禁用硬件中断同步方法
临界区,进入区,退出区
临界区的访问规则
空闲则入, 忙则等待, 有限等待, 让权等待(可选)
临界区的实现方法
禁用中断, 软件方法, 更高级的抽象方法
方法1:禁用硬件中断
缺点:
禁止中断后, 进程无法被停止
临界区可能很长
要小心
17.4 基于软件的同步方法(不太懂)
Peterson算法实现
Dekkers算法
复杂:需要两个进程间的共享数据项
需要忙等待:浪费CPU时间
17.5 高级抽象的同步方法
硬件提供了一些同步原语
锁:是一个抽象的数据结构
一个二进制变量(锁定/解锁)
Lock::Acquire()
Lock::Release()
原子操作指令
现代CPU体系结构都提供一些特殊的原子操作指令
测试和置位指令
从内存单元中
交换指令
交换内存中的两个值
使用TS指令实现自旋锁(spinlock)
原子操作指令锁的特征
优点:
适用于单处理器或者共享内存的多处理器中任意数量的进程同步
简单并且容易证明
支持多临界区
缺点:
忙等待消耗处理器时间
可能导致饥饿
进程离开临界区时有多个等待进程的情况
死锁
拥有临界区的低优先级进程
请求访问临界区的高优先级进程获得处理器并等待临界区
同步方法总结
锁时一种高级的同步抽象方法
互斥可以使用锁来实现
需要硬件支持
常用的三种同步实现方法
禁用中断(仅限于单处理器)
软件方法(复杂)
原子操作指令(单处理器或多处理器均可)
说点什么吧~
欢迎来到学堂在线广场~
在这里你可以玩活动,看资讯,晒笔记。
还可以交学友、发心情、聊人生。
在学堂的每一天,就从这里开始吧!
点击 广场指南 了解更多