操作系统:进程与线程(二)同步与互斥A

一战成硕

    • [2.3 同步与互斥](#2.3 同步与互斥)
      • [2.3.1 同步与互斥的基本概念](#2.3.1 同步与互斥的基本概念)
      • [2.3.2 实现临界区互斥基本方法](#2.3.2 实现临界区互斥基本方法)
      • [2.3.3 互斥锁](#2.3.3 互斥锁)
      • [2.3.4 信号量](#2.3.4 信号量)

2.3 同步与互斥

2.3.1 同步与互斥的基本概念

  1. 临界资源
    将一次仅允许一个进程使用的资源称为临界资源。
    许多物理设备均属于临界资源,如打印机,此外,还有许多变量数据等,可以被若干进程共享,也属于临界资源。
    对于临界资源的访问,必须互斥地进行,在每个进程中,访问临界资源的那段代码称为临界区,为了保证临界资源的正确使用,可把临界资源访问过程分为四个部分:
    1)进入区
    2)临界区
    3)退出区
    4)剩余区
  2. 同步
    同步亦称直接制约关系,是指为完成某种任务而建立的两个或多个进程。
  3. 互斥
    互斥也称直接制约关系。当一个进程进入临界区使用临界资源,另一个进程必须等待,当占用临界资源的进程退出临界区,另一进程才允许去访问此临界资源。
    同步机制应遵循以下准则:
    1)空闲让进
    2)忙则等待
    3)有限等待
    4)让权等待

2.3.2 实现临界区互斥基本方法

  1. 软件实现方法

    在进入设置区设置并检查一些标志来标明是否有进程在临界区,若已经有进程在临界区,则在进入区通过循环检查进行等待,进程离开临界区后,则在退出区修改标志。

    1)算法一:单标志法

    2)算法二:双标志先检查

    3)算法三:双标志法后检查

    4)算法四:Peterson`s Algorithm


  2. 硬件实现方法

    计算机提供了特殊的硬件指令,允许对一个字的内容进行检测和修正,或对两个字的内容进行交换,通过硬件支持实现临界段问题的方法称为低级方法,或称元方法。

    (1)中断屏蔽法

(2)硬件指令法


2.3.3 互斥锁

2.3.4 信号量

用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥,进程同步。

信号量其实就是一个变量(可以是一个整数,也可以是更复杂的记录型变量),可以用一个信号量来表示系统中某种资源的数量。

wait(S)和signal(S)原语常简称为P(S)、V(S)。

  1. 整型信号量

  2. 记录型信号量


  3. 利用信号量实现同步

  4. 利用信号量实现进程互斥

    1)分析并发关键活动,划定临界区

    2)设置互斥信号量 初值为1

  5. 利用信号量实现前驱关系

相关推荐
_OP_CHEN2 小时前
【Linux系统编程】(二十六)一文吃透 Ext 系列文件系统软硬链接:原理、实战与底层逻辑揭秘
linux·操作系统·文件系统·c/c++·硬链接·软链接·ext2文件系统
fleaxin3 小时前
统信服务器操作系统V20(1070)安装过程
docker·操作系统·nvidia·统信
_OP_CHEN1 天前
【Linux系统编程】(二十五)从路径到挂载:Ext 系列文件系统的 “导航” 与 “整合” 核心揭秘
linux·操作系统·文件系统·c/c++·ext2文件系统·路径解析·挂载分区
HalvmånEver3 天前
Linux:线程 ID 与地址空间布局:深入理解线程内存分布(线程七)
linux·运维·服务器·操作系统·线程
Trouvaille ~3 天前
【Linux】线程同步与互斥(四):线程池与任务管理
linux·运维·服务器·c++·操作系统·线程池·日志系统
燃于AC之乐3 天前
【Linux系统编程】Shell解释器完全实现:从命令解析、环境变量管理到内建命令的全面解析
linux·操作系统·命令行工具·进程控制·shell编程
2401_841495643 天前
【操作系统】存储器管理算法
python·操作系统·存储器管理·连续内存分配算法·非连续内存分配算法·虚拟存储页面置换算法·内存碎片整理与回收算法
holeer3 天前
CS.Math 之《离散数学》| 知识点笔记
数据结构·数据库·数学建模·操作系统·抽象代数·计算机组成
Serene_Dream4 天前
OS 内存小结
操作系统·内存
程序员一点4 天前
第3章:首次启动与基础配置
操作系统·openeuler