OS学习笔记四:同步机制

Posted jiankunking

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OS学习笔记四:同步机制相关的知识,希望对你有一定的参考价值。


一、 进程互斥

1、进程互斥

  • 由于各 进程 要求使用共享资源( 变量 、文件等),而 这些 资源需要排他性使用各进程之间 竞争使用这些 资源—— 这一关系称为 进程互斥
  • 临界资源:critical resource
    系统中某些资源一次只允许一个进程使用,称这样的资源为 临界资源 或 互斥资源 或 共享变量
  • 临界区( ( 互斥区) ) :critical section(region)
    各个进程中对某个临界资源(共享变量)实施操作 的程序 片段

2、临界区(互斥区)使用原则

  • 没有进程在临界区时,想进入临界区的进程可进入
  • 不允许两个进程同时处于其临界区 中
  • 临界区外运行的进程不得阻塞其他进程进入临界区
  • 不得使进程无限期等待进入临界区

3、实现互斥的解决方法

  • 软件方案
  • Dekker 解法、Peterson 解法
  • 硬件 方案
  • 屏蔽中断、TSL(XCHG) 指令

二、进程同步

1、进程同步

进程同步:synchronization 指系统中多个进程中发生的事件存在某种时序关系 ,需要相互合作,共同完成一项任务

具体地说,一个进程运行到某一点时,要求另一伙伴进程为它提供消息,在未获得消息之前,该进程进入阻塞态,获得消息后被唤醒进入就绪态

三、信号量及PV操作

1、信号量及PV操作

  • 一个特殊变量
  • 用于进程间传递 信 息 的 一个整数值
  • 定义如下:
struc semaphore

int count;
queueType queue;
  • 对信号量可以实施的操作:初始化、P 和V (P 、V 分别是荷兰语的test(proberen) 和increment(verhogen) )

2、p、v操作定义

P( s )

s.count--;
if ( s.count < 0
P( s )

s.count--;
if ( s.count < 0

3、有关说明

  • P 、V 操作为原语 操作(primitive or atomic action)
  • 在 信号量上定义了三个操作:初始化( 非负数) 、P 操作、V 操作
  • 最初提出的是二元信号量 (解决互斥 )之后, 推广 到一般信号量(多值)或计数信号量(解决同步)

四、管程的基本概念

1、管程的定义

  • 是一个特殊的模块
  • 有一个名字
  • 由关于共享资源的数据结构及在其上操作的一组过程组成

2、进程与管程

进程 只能通过调用 管程中的过程 来间接地访问管程中的数据结构

3、管程需要保证什么?

  • 作为一种同步机制,管程要解决两个问题
  • 互斥
  • 管程是 互斥 进入 的(为了保证管程中数据结构的数据完整性)
  • 管程的互斥性是由编译器负责保证的
  • 同步
  • 管程中设置 条件 变量及等待/ 唤醒操作 以 解决同步问题
  • 可以让一个进程或 线程在 条件变量上等待(此时,应先释放管程的使用权),也可以通过发送信号将等待在条件变量上的进程或线程唤醒

五、管程小结

  • 管程 : 抽象数据类型
  • 有一个明确定义的操作集合,通过它且只有通过它才能操纵该数据类型的实例
  • 实现管程结构必须保证下面几点:
  • (1)只能通过管程的某个过程才能访问资源;
  • (2) 管 程是互斥的 , 某个时刻只能有一个进程或线程调用 管程中 的过程
  • 条件变量:为 提供进程与其他进程通信或同步 而引入
  • wait/signal 或 wait/notify 或 wait/broadcast

六、进程间通信

1、基本通信方式

  • 消息传递
  • 共享 内存
  • 管道
  • 套接 字
  • 远程过程调用

2、原子操作

  • 不可分割,在执行完之前不会被其他任务或事件中断
  • 常用于实现资源的引用计数

3、屏障(BARRIER)

  • 一种同步机制( ( 又称栅栏、关卡) )
  • 用于对一组线程进行协调
  • 应用场景
  • 一组线程协同完成一项任务,需要所有线程都到达一个汇合点后再一起向前推进

​​​​

个人微信公众号:

OS学习笔记四:同步机制_操作系统

作者:jiankunking​


以上是关于OS学习笔记四:同步机制的主要内容,如果未能解决你的问题,请参考以下文章

OS 学习笔记什么是同步互斥?

操作系统笔记四 进程管理进程同步

操作系统四——进程同步

进程/线程同步的方式和机制,进程间通信

《Linux内核设计与实现》读书笔记- 内核同步介绍

线程同步的方式和机制