讨论区讨论详情

【学堂笔记展览馆】《操作系统》第十七章 同步互斥
2015-05-19 11:09:09

17.1 背景

并发进程的正确性

 独立进程:不和其他进程共享资源和状态

 并发进程:在多个进程间有资源共享


进程并发执行的好处

好处1:共享资源

好处2:加速

好处3:模块化

原子操作:指一次不存在任何中断或失败的操作

要么操作成功完成,或操作没有执行,不会出现部分执行的状态

操作系统需要利用同步机制在并发执行的同时, 保证一些操作是原子操作


17.2 现实生活中的同步问题


17.3 临界区和禁用硬件中断同步方法

临界区,进入区,退出区

临界区的访问规则

空闲则入, 忙则等待, 有限等待, 让权等待(可选)

临界区的实现方法

禁用中断, 软件方法, 更高级的抽象方法

方法1:禁用硬件中断

缺点:

  禁止中断后, 进程无法被停止

  临界区可能很长

  要小心


17.4 基于软件的同步方法(不太懂)

Peterson算法实现

Dekkers算法

复杂:需要两个进程间的共享数据项

需要忙等待:浪费CPU时间


17.5 高级抽象的同步方法

硬件提供了一些同步原语

锁:是一个抽象的数据结构

  一个二进制变量(锁定/解锁)

 Lock::Acquire()

 Lock::Release()

原子操作指令

  现代CPU体系结构都提供一些特殊的原子操作指令

  测试和置位指令

      从内存单元中

  交换指令

      交换内存中的两个值

使用TS指令实现自旋锁(spinlock)

原子操作指令锁的特征

优点:

    适用于单处理器或者共享内存的多处理器中任意数量的进程同步

    简单并且容易证明

    支持多临界区

缺点:

    忙等待消耗处理器时间

    可能导致饥饿

        进程离开临界区时有多个等待进程的情况

    死锁

        拥有临界区的低优先级进程

        请求访问临界区的高优先级进程获得处理器并等待临界区

同步方法总结

    锁时一种高级的同步抽象方法

        互斥可以使用锁来实现

        需要硬件支持

    常用的三种同步实现方法

        禁用中断(仅限于单处理器)

        软件方法(复杂) 

        原子操作指令(单处理器或多处理器均可)

    


回复:

还没有人发言哦,来抢沙发吧~

请先登录

说点什么吧~

学堂公告

各位MOOCer大家好 (^-^)V

欢迎来到学堂在线广场~

在这里你可以玩活动,看资讯,晒笔记。

还可以交学友、发心情、聊人生。

在学堂的每一天,就从这里开始吧!

点击 广场指南 了解更多

推荐活动

我要举报
提交