进程的互斥与同步

2023-10-29

一、进程,线程的背景

引入进程,为了描述和实现多个程序的并发执行,以改善资源利用率即提高系统的吞吐量

引入线程,减少程序并发执行时系统所付出的额外开销,使操作系统具有更好的并发性

二、进程的互斥与同步

注意:同步即协调

采用多道程序技术的操作系统,允许多个进程同时驻留内存并发执行,若干进程将不可避免的会竞争系统资源。如对处理器,内存空间,打印机等资源的竞争。

如何协调多个进程对系统资源(内存空间,外部设备等)的竞争和共享?

如果竞争某资源的进程太多,这些进程还必须等待在一个队列中。如就绪队列,阻塞队列。如果长期得不到资源,进程可能进入死锁。如何解决死锁?

进程竞争资源必须解决“互斥问题”,某些资源必须互斥使用,这些资源称为临界资源,访问临界资源的那段代码称为临界区。

进入临界区,需要判断是否可以进入临界区,如果可以,则必须设置临界区使用标志;如果不可以,则后来的进程查看临界区的使用标志,进入阻塞队列。

互斥条件总结为如下16个字:

忙则等待;优先等待;空闲让进;让全等待

三、进程的死锁

多进程,多线程的并发执行虽然提升了系统资源的利用率,提高了系统的性能,但是并发执行也带来了新的问题-----死锁。

死锁是指多个进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象(互相挂起等待),若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程

举一个生活中的简单例子:小明和小红都想买一块橡皮,这块橡皮价值一块钱,但是他们俩每个人都只有五毛钱,小明说:你把你的五毛钱给我,让我买橡皮。小红说:你把你的五毛钱给我,让我买橡皮。这样,两个人互相僵持着,谁也不愿意低头,谁都买不到橡皮。

3.1死锁产生的四个必要条件

  1. 互斥条件:进程(线程)申请的资源在一段时间中只能被一个进程(线程)使用。
  2. 请求与等待条件:进程(线程)已经拥有了一个资源,但是又申请新的资源,拥有的资源保持不变 。
  3. 不可剥夺条件:在一个进程(线程)没有用完,主动释放资源的时候,不能被抢占。
  4. 循环等待条件:多个进程(线程)之间存在资源循环链。

3.2处理死锁的方法

  1. 预防死锁:破坏死锁产生的四个条件之一,注意,互斥条件不能破坏。
  2. 避免死锁:合理的分配资源。
  3. 检查死锁:利用专门的死锁机构检查死锁的发生,然后采取相应的方法。
  4. 解除死锁:发生死锁时候,采取合理的方法解决死锁。一般是强行剥夺资源。

四、进程通信的方式

进程之间需要通信协作来协调

当进程进行通信协作时,各个进程之间需要建立连接,进程通信需要同步和协调。进程通信的方式很多,包括消息传递、管道、共享存储区等。

1、  软件方法

由进程自己,执行相应的程序指令,实现与别的进程的同步与互斥

2、  硬件方法

屏蔽中断或采取专门的机器指令控制同步与互斥,进程不会切换,实现互斥。可能出现饥饿现象,死锁现象

3、  信号量方法

控制进程同步与互斥的通用方法。信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

4、管道的方法

管道是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件(pipe文件)

5、消息队列MessageQueue方法

消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点

6、共享存储SharedMemory

共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。

7、套接字Socket

Socket也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同计算机之间的进程通信。

8、信号 ( sinal ) 。

信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

 

参考:

https://www.cnblogs.com/ryxiong-blog/p/10892010.html

https://blog.csdn.net/zhaohong_bo/article/details/89552188

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

进程的互斥与同步 的相关文章

  • 【计算机系统】CPU是如何运行程序的

    一 CPU组成部分 寄存器 xff1a 存储CPU执行的指令的数据 xff0c CPU每次执行指令都会重新更新寄存器 程序计数器 PC xff1a 记录CPU即将执行的指令内存中的地址 逻辑控制单元 ALU xff1a CPU中负责逻辑计算
  • 假如让你来设计SSL/TLS协议

    前言 说起网络通信协议 相信大家对 TCP 和 HTTP 都很熟悉 它们可以说是当今互联网通信的基石 但是 在网络安全方面 它们却是有着很大安全风险 窃听风险 第三方攻击者可以随意窃听通信内容 比如获取支付账号密码 冒充风险 第三方攻击者可
  • 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.3-2.4)

    GitHub计算机系统CSAPP课程资源 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 1 2 2 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 3 2 4 计算机系统课程 笔记总结 CSAPP第三章
  • 汇编指令之MOV

    汇编指令之 MOV 传送字或字节 学习来自 汇编语言MOV指令 mov指令详解 Assembly Addressing Modes 汇编用户指南 MOV 简单格式 mov dst src 扩展格式1 MOV S cond Rd Operan
  • 【linux】内核组件 [不断补充中...]

    防火墙 netfilter iptables IP 信息包过滤系统 netfilter 内核空间 kernelspace 是内核的一部分 由一些信息包过滤表组成 这些表包含内核用来控制信息包过滤处理的规则集 即 存放内核过滤规则的防火墙 i
  • 进程的互斥与同步

    一 进程 线程的背景 引入进程 为了描述和实现多个程序的并发执行 以改善资源利用率即提高系统的吞吐量 引入线程 减少程序并发执行时系统所付出的额外开销 使操作系统具有更好的并发性 二 进程的互斥与同步 注意 同步即协调 采用多道程序技术的操
  • I/O控制方式——通道控制方式

    一 定义 通道是一个独立于 CPU的专管输入 输出控制的处理机 它控制设备与内存直接进行数据交换 它有自己的通道指令 这些通道指令受CPU启动 并在操作结束时向CPU发中断信号 二 原理 2 1 通道控制方式的引入 通道控制方式与DMA控制
  • 了解链接是什么?

    链接是将各种代码和数据片段收集并且组合成为一个单一文件的过程 这个文件可以被加载到内存并且执行 链接可以执行于编译时 也就是在程序被加载器加载到内存并且执行 甚至在执行于运行的时候 也就是由应用程序来执行 在早期的计算机系统中 链接是手动执
  • 文件的流

    一 文件名词解释 文件 是存贮在某种介质上的 如磁盘 磁带等 并具有文件名的一组有序信息的集合 流设备 大多数的字符设备 如键盘 打印机等 传输的信息均由 一组顺序出现的字符序列组成 文件系统 操作系统对系统的软件资源 不论是应用软件和系统
  • 深入理解计算机系统Lab3实验

    目录 实验准备 实验资源的准备 生成ctarget等文件的反汇编代码 确定实验环境是大端还是小端 实验进行 Phase1 简述 测试 分析 目标 找到touch1的代码并重写 并且 找到getbuf 函数中 为Get 函数所开辟的字符串最大
  • 【定点数运算】定点的乘法和加法

    目录 定点的介绍 定点的优势 定点数的乘法和加法 乘法 加法 定点的介绍 在之前的博客中介绍了定点数和浮点数 想要了解的可以前往以下链接 定点和浮点 定点数与浮点数的解释 定点的优势 使用定点表示有什么优势 为什么不简单地将所有值规范化为整
  • Window11下载安装jdk8-jdk11与环境变量的配置

    目录 1 下载jdk 1 1 jdk8下载链接 请点击网址 1 2 jdk11下载链接 请点击网址 2 安装jdk 3 配置环境变量 3 1 打开设置 3 2 点击系统信息 3 3 高级系统设置 3 4 点击环境变量 3 5 新建系统变量
  • L1,L2,L3 Cache缓存原理

    一 介绍 CPU缓存 Cache Memory 也被称为Cache 是存储器子系统的组成部分 存放着程序经常使用的指令和数据 从广义的角度上看 Cache是快设备为了缓解访问慢设备延时的预留的Buffer 从而可以在掩盖访问延时的同时 尽可
  • 计算机系统实验六:程序的链接

    参考教材 计算机系统基础 第二版 袁春风 机械工业出版社 参考慕课 计算机系统基础 四 编程与调试实践 https www icourse163 org learn NJU 1449521162 计算机系统实验导航 实验一 环境安装 htt
  • 计算机浮点数规格化表示

    说明 在IEEE标准中 浮点数在内存中的表示是将特定长度的连续字节的所有二进制位按特定长度划分为符号域 指数域和尾数域三个连续域 float float类型在内存中占用的位数为 1 8 23 32bits double 1 11 52 64
  • 计算机系统课程 笔记总结 CSAPP第五章 优化程序性能(5.1-5.14)

    GitHub计算机系统CSAPP课程资源 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 1 2 2 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 3 2 4 计算机系统课程 笔记总结 CSAPP第三章
  • 操作系统CPU调度

    概述 多道程序操作系统的基础 通过在进程之间切换CPU 操作系统可以提高计算机的吞吐率 对于单处理器系统 每次只允许一个进程运行 任何其他进程必须等待 直到CPU空闲能被调度为止 CPU按一定的调度算法从就绪队列中选择一个进程 把CPU的使
  • 保护模式的分段

    一 分段的背景 在8086处理器诞生之前 内存寻址方式就是直接访问物理地址 8086处理器为了寻址1M的内存空间 把地址总线扩展到了20位 但是 一个尴尬的问题出现了 ALU的宽度只有16位 也就是说 ALU不能计算20位的地址 为了解决这
  • HIT--ICS计算机系统大作业

    目录 摘要 第1章 概述 1 1 Hello简介 1 2 环境与工具 1 3 中间结果 1 4 本章小结 第2章 预处理 2 1 预处理的概念与作用 2 2在Ubuntu下预处理的命令 2 3 Hello的预处理结果解析 2 4 本章小结
  • 计算机系统课程 笔记总结 CSAPP第四章 处理器体系结构(4.1-4.3)

    GitHub计算机系统CSAPP课程资源 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 1 2 2 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 3 2 4 计算机系统课程 笔记总结 CSAPP第三章

随机推荐

  • 华为OD机试 - 消消乐游戏(Java)

    题目描述 游戏规则 输入一个只包含英文字母的字符串 字符串中的两个字母如果相邻且相同 就可以消除 在字符串上反复执行消除的动作 直到无法继续消除为止 此时游戏结束 输出最终得到的字符串长度 输入描述 输入原始字符串 str 只能包含大小写英
  • 2022西山居seed游戏开发训练营笔试复盘

    1 c基础 char arr1 a b c b char arr2 abcd int arr3 10 0 arr1和arr2的区别 cout lt lt sizeof arr1 lt lt endl cout lt lt sizeof ar
  • gcc 选项

    1 c选项 gcc命令后直接跟源文件会对源文件进行预处理 编译 链接生成默认名为a out的可执行文件 而 c选项会处理到编译环节终止 生成一个目标文件 默认名为filename o 它必须再经过链接才最终生成可执行文件 2 g选项 创建符
  • scss、less

    SCSS 是 Sass 3 引入新的语法 是Sassy CSS的简写 是CSS3语法的超集 其语法完全兼容 CSS3 并且继承了 Sass 的强大功能 可以简单理解为scss是sass的一个升级版本 完全兼容sass之前的功能 又有了些新增
  • 吃鸡服务器维护7月5号,绝地求生7月5日更新到几点好?更新进不去怎么办?

    绝地求生7月5日更新内容 绝地求生7月5日更新到几点好 更新进不去怎么办 在绝地求生大逃杀中 为了让大家有个更好的游戏体验环境 绝地求生将于7月5日对游戏进行停机更新 本次更新到几点 很多玩家都不知道 下面就和小编一起去看看 绝地求生正式版
  • SpringBoot 用户登录(二)登录增加验证码

    一 需求分析 SpringBoot 用户登录 一 基础登录 在登录的基础上加上验证码验证 验证码过期时间为一分钟 二 解决思路 在后台生成UUID和验证码返回到前台 并将UUID作为key 验证码内容作为value存入redis 设置过期时
  • ajax获取后台图片数据流如何处理?

    当我们利用ajax从后台获取图片的时候 一般有两种方法 一种是获取后台传递过来的图片的url 一种是获取后台传递过来的图片数据流 当我们获取图片数据流的时候 应该这样处理这些数据流 让它在前台展示出图片 HTML img src alt J
  • 用apache james做简单的垃圾邮件过滤网关(转)

    网络环境如下 三台服务器 1 网关 公网IP 2 domino邮件服务器 3 另一台服务器 通过把网关的端口25 映射到domino服务器上 让domino服务器可以收发邮件 同时domino服务器还要把部分邮件转发到服务器3上 大家的发邮
  • 801冠号大全及桃花荧光

    第一 存量少是801升值的基本依据 801共158个冠号 天蓝 荧光 冠号去除一部分 桃花荧光油墨的占到801的总量的80 以上 有荧光满版网格的又分为 1 满版红桃花荧光 满版底纹网格荧光 2 满版金桃花荧光 满版底纹网格荧光 3 满版桃
  • JavaWeb——SSJDBC(struts2,spring,jdbc)框架,正向工程

    原文地址 http blog csdn net sapce fish article details 52900750 本文采用struts2 spring jdbc搭建web框架 使用正向工程 IDE用myeclipse 数据库用Mysq
  • 实时汇率转换小程序(c++爬虫)

    实时汇率转换小程序 c 爬虫 利用c 网络爬虫爬取网页的实时汇率进行汇率的转换 其中也利用了QT进行了页面设计 define SILENCE STDEXT HASH DEPRECATION WARNINGS include
  • Linux下安装过程中编译PHP时报错:configure: error: jpeglib.h not found.

    今天在搭建LNMP编译PHP时 报错 configure error jpeglib h not found root cac3 php 5 6 22 configure gt prefix usr local php5 gt enable
  • Java Thread Join

    join方法的作用 在A线程中调用了B线程的join 方法时 表示只有当B线程执行完毕时 A线程才能继续执行
  • Opencv之答题卡识别判卷

    项目要求 提供一张答题卡图像 通过图像处理识别出答题卡上每个题的选项 与正确答案对比 得出分数并写在答题卡上 代码实现过程 1 引入需要的库 import numpy as np import cv2 as cv 2 定义绘图函数 def
  • 下代码下代码下代码

    https modelzoo co
  • linux c语言编译成exe,C/C++程序从编译到最终生成可执行文件的过程分析

    C C 程序编译步骤 如何生成可执行文件 电子计算机所使用的是由 0 和 1 组成的二进制数 二进制是计算机的语言的 基础 计算机发明之初 人们只能降贵纡尊 用计算机的语言去命令计算机干这干那 一 句话 就是写出一串串由 0 和 1 组成的
  • QT事件--阐述的比较系统

    转载 http www qtcn org bbs simple t31383 html Another Look at Events 再谈Events 最近在学习Qt事件处理的时候发现一篇很不错的文章 是2004年季刊的一篇文章 网上有这篇
  • 迷宫 蓝桥杯 641

    题目描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 X 星球的一处迷宫游乐场建在某个小山坡上 它是由 10 1010 10 相互连通的小房间组成的 房间的地板上写着一个很大的字母 我们假设玩家是面朝上坡的方向站
  • 单链表的应用(多项式相加)

    目录 题目内容 算法分析 概要设计 流程图 代码块 运行结果 题目内容 完成两个多项式的相加操作 已知有两个多项式Pm x Qm x 设计算法实现Pm x Qm x 运算 而且对加法运算不重新开辟存储空间 要求用链式存储结构实现 例如 Pm
  • 进程的互斥与同步

    一 进程 线程的背景 引入进程 为了描述和实现多个程序的并发执行 以改善资源利用率即提高系统的吞吐量 引入线程 减少程序并发执行时系统所付出的额外开销 使操作系统具有更好的并发性 二 进程的互斥与同步 注意 同步即协调 采用多道程序技术的操