美文网首页
操作系统同步机制的实现

操作系统同步机制的实现

作者: Crane_FeiE | 来源:发表于2018-11-01 16:04 被阅读0次

背景

多进程(线程)并发执行会出现进程间相互制约的情况发生,例如两个进程需要:

  • 共享唯一的硬件设备
  • 共享同一块内存区域
  • 一个进程的运行依赖另一进程对共享资源的执行结果

如果多个进程间存在时序关系,需要协同工作以完成一项任务,则成为同步;如果不满足协同的条件,而知识因为共享具有排他性资源时所产生的关系称为互斥

1. 信号量

信号量和PV原语操作是有Dijkstra发明的,它是最为广泛的互斥方法之一:

  • Semaphore S:信号量,表示共享资源的可用数量
  • Operation P:P原语,用于减少S计数
  • Operation V:V原语,用于增加S计数

信号量和PV操作原理:

  1. 当进程想要进入共享区时,首先执行P操作,S-1
  2. 当进程想要退出共享区时,执行V操作,S+1
  3. 进程进出共享区的操作,是原子操作(执行过程不允许被中断)


    PV 原语

2. Mutex

Mutex是 Mutual Exclusion 简写,其释义有为互斥体

  1. 如果一个资源有多个对象同时访问:称为Counting Semaphores,
  2. 若只允许取值0或1(locked/unlocked):称为Binary Semaphore,可以认为它与Mutex是相同的性质。Mutex是对于Binary Semaphore的一种简单实现方式

3. 管程 (Monitor)

管程是对Semaphore机制的延伸和改善,是一种更简单的同步手段

Semaphore 机制的缺陷:

程序的易读性相对较差,对于信号量的管理也分散在各个参与对象中,因此有可能引起死锁,进程饿死等问题

管程的定义

管程是可以被多个进程/线程安全访问的对象或模块
管程汇总的方法是受到Mutex保护的,意味着同一时刻只允许一个访问者来使用它们。

管程的特性

  • 安全性
  • 互斥性
  • 共享性

很多流行的编程语言都实现了管程机制:如Java,Python,Delphi,Ruby,C#等

4. Linux Futex (Fast Userspace muTEXes)

Linux 中的同步机制,它在应用程序空间中就可以应对大多数同步场景。
判断是否开启了ART_USE_FUTEXES宏
Mutex的加锁逻辑:如果获取到锁,就直接返回,否则进入挂起的状态。


futex例子

相关文章

  • 操作系统同步机制的实现

    背景 多进程(线程)并发执行会出现进程间相互制约的情况发生,例如两个进程需要: 共享唯一的硬件设备 共享同一块内存...

  • Boost asio实现的异步TCP/IP通信

    asio库基于操作系统提供的异步机制,采用前摄器模式(Proactor)实现可移植的异步(或同步)IO操作,不需要...

  • 操作系统知识点

    操作系统 IPC 共享内存 管道 socket RPC romote procesure calls 同步机制 ...

  • Android系统中的同步机制

    1. Overview 操作系统的同步机制都是类似的,目前Android封装的同步类包括: Mutex头文件是fr...

  • 线程同步辅助类(一)

    java中基本的同步机制有synchronized,Lock等,这些机制可以实现并发任务共享一个资源时的同步...

  • 多线程笔记:同步机制(1)

    同步机制简介 线程同步机制是一套用于协调线程间的数据访问及活动的机制,该机制用于保障线程安全以及实现这些线程的共同...

  • RocketMQ-HA机制(主从同步)-修正版

    初识主从同步 主从同步基本实现过程如下图所示: RocketMQ 的主从同步机制如下: A. 首先启动Master...

  • 2018-05-11 JAVA

    1 java同步几种方法?threadlocal怎么实现。 java的同步机制 1.synchronized; 2...

  • ReentrantLock原理分析

    前言 上一篇文章《基于CAS操作的Java非阻塞同步机制》 分析了非同步阻塞机制的实现原理,本篇将分析一种以非同步...

  • Lock锁 与 synchronized 比较

    Lock 定义:更强大的线程同步机制--显式定义同步锁对象来实现同步 特点: 在JUC(java.util.con...

网友评论

      本文标题:操作系统同步机制的实现

      本文链接:https://www.haomeiwen.com/subject/igktxqtx.html