什么是进程互斥?

所谓进程互斥,就是对于系统的某种资源,若一个进程正在访问它,其他进程必须等待,不能同时使用。这是一种源于资源共享的制约关系,也称为间接制约关系。

接下来,我们来简要的了解一下几个概念:

  1. 这种限定资源只能排他性的访问的资源叫做临界资源。

  2. 程序中访问临界资源的那段代码称为临界区或临界段。

    如何实现进程互斥?

    为实现对临界资源的互斥访问,应保证诸进程互斥的进入各自的临界区。在操作系统中,最早采用软件的方法,后来常采用硬件指令或者在系统中设置专门的同步机构方法。这些方法共同形成临界区的使用原则:

    (1)当临界区空闲时,必须让一个要求进入临界区的进程立即进入,以有效的利用资源;

    (2)当临界区已经有进程进入时,其他试图进入临界区的资源必须等待,以保证互斥地进入临界区;

    (3)对于要求进入临界区的进程应在有限的时间内使之进入,以免陷入“死等”;

    (4)等待进入临界区的进程必须立即释放CPU,以免“忙等”。

    上锁与开锁是一种最简单的进程互斥方法。它使用一个变量“W”来表示某种临界资源的状态。若W=1,表示资源已经被使用,若W=0,表示资源可用。一般将上锁与开锁原语设置在临界区相应的程序段前后。

    举个栗子:

    甲进程:

                       其他代码:

                        LOCK(W);

                        甲进程的临界区;

                        UNLOCK(W);

                         其他代码;

    进程进入临界区之前应该测试W的值,若W=1,资源被占用,则应返回测试;若W=0,即资源可用,则在进入临界区前为防止其他进程进入二给资源上锁,将W置为1。用完资源退出前,给资源解锁,使W=0。

    但是有没有想过,如此简单的条件测试有可能会导致CPU“忙等”?于是就有了信号量机制的产生。

【操作系统原理】进程的互斥以及上锁与解锁原语相关推荐

  1. Linux 操作系统原理 — 进程管理 — 进程调度

    目录 文章目录 目录 进程调度 CFS 完全公平调度器 SCHED_NORMAL(普通进程调度算法) SCHED_BATCH(批量调度算法) RTS 实时调度器 SCHED_FIFO(先到先服务调度算 ...

  2. Linux 操作系统原理 — 进程与线程管理

    目录 文章目录 目录 前言 进程与线程 内核线程,用户线程与轻量级进程 内核线程 轻量级进程 用户线程 轻量级进程与用户线程的区别 用户线程与轻量级进程的混合模式 用户线程和内核线程的区别 线程的实现 ...

  3. Linux 操作系统原理 — 进程管理 — Namespace 系统资源隔离

    目录 文章目录 目录 Linux Namespace UTS namespace PID namespace IPC namespace Mount namespace Network namespa ...

  4. Linux 操作系统原理 — 进程管理 — NUMA 架构中的多线程调度开销与性能优化

    目录 文章目录 目录 前言 NUMA 体系结构 基本对象概念 查看 Host 的 NUMA Topology Bash 脚本 DPDK 脚步 NUMA 架构中的多线程性能开销 1.跨 Node 的 M ...

  5. Linux 操作系统原理 — 系统结构

    目录 文章目录 目录 Linux 系统架构 Linux 内核 内存管理 进程管理 文件系统 设备驱动程序 网络接口 Shell Linux 系统架构 Linux 系统一般有 4 个主要部分:内核.Sh ...

  6. 『操作系统』 进程的描述与控制 Part3 管程

    文章目录 2.6 管程 管程的基本概念 1.管程的组成 2.管程的主要特性 3.条件变量 4.管程的实现 5.管程和进程的异同点 练习题 2.7 进程通信 进程通信的类型 共享存储器系统 练习题 消息 ...

  7. 操作系统原理学习笔记(基础概念与进程)

    学习视频 王道的操作系统原理,我在网上搜了一下,没有那个视频像湖科大那种推荐的人那么多,感觉这个还可以,就看这个了. 随看随记 进程运行前需要将需要执行的程序放置到内存中,内存再到CPU中执行程序. ...

  8. 王道考研——操作系统(第二章 进程管理)(进程的同步,进程的互斥,管程)

    一.进程同步与进程互斥 什么是进程同步 "进程同步"讨论的就是怎么解决"进程异步"的问题 什么是进程互斥 知识回顾与重要考点 二.进程互斥的软件实现方法 学习提 ...

  9. Linux操作系统原理与应用03:进程

    目录 1. 进程简介 1.1 程序和进程 1.2 进程的定义 1.2.1 正文段 1.2.2 用户数据段 1.2.3 系统数据段 1.3 进程的层次结构 1.3.1 进程的亲缘关系 1.3.2 进程树 ...

最新文章

  1. html5中text-align,text-align
  2. 知识星球!!!!!!
  3. JAVA中使用FTPClient实现文件上传下载
  4. IOS开发之coreData
  5. Android 隐藏底部三个虚拟按键
  6. 485不用双绞线可以吗_现在在上海,挡风玻璃可以一个标志都不用贴吗?
  7. ThinkPHP框架知识的注意点
  8. 使用ArcGIS Engine来实现地图的点击查询并闪烁
  9. 从入门到入土:[SEED-Lab]-SQL注入攻击|SQL Injection Attack Lab|详细说明|实验步骤|实验截图
  10. 以太坊概念知识入门篇
  11. 计算阶乘的两种实现方式(Java)
  12. C语言编程之学习putpixel画点
  13. matlab 呼吸灯,一种控制呼吸灯呼吸效果的方法与流程
  14. 【架构设计】简单设计原则(Kent Beck)
  15. 阿里云安全组设定(虚拟机端口打开)
  16. 深度学习·理论篇(2023版)·第001篇快速了解人工智能与Pytorch:机器/表示/深度学习定义+端到端的学习+神经网络在计算机视觉应用+深度学习的技术蓝图
  17. 树莓派4B从开箱到连接电脑(超级小白)
  18. 自我觉知和自我知觉(self-perception)
  19. 二分法查找(C语言)
  20. 由浅入深,66条JavaScript面试知识点

热门文章

  1. 苹果运行内存比较_都2020了,苹果依然比安卓手机更流畅?
  2. 【首发】根据壁纸修改App主题,它真的来了
  3. [题解]bzoj3884 上帝与集合的正确用法
  4. wordcloud红楼梦词云图出现单字怎么办?
  5. 2023西北工业大学计算机考研信息汇总
  6. windows启动nginx常用命令
  7. css布局属性与合成属性_如何使用CSS逻辑属性控制布局
  8. 东华大学2021计算机考研,东华大学2021考研考试大纲:计算机及软件工程专业基础综合...
  9. 2022软科中国最好学科排名——网络空间安全
  10. 大华2013届校园招聘 :联合体试题