操作系统笔记(四)进程间通信,竞争条件与解决方案

进程间通信(IPC)

如何在进程间传递信息?

如何防止两个进程冲突?

如何实现进程执行的先后顺序?

竞争条件(Race conditions)

竞争条件(Race conditions)

多个进程访问一个共享数据,而数据最后的值由进程访问的先后顺序决定。

竞争条件的例子

输出: 指向下一个待打印的文件

输入: 指向下一个空位,in =7.

(1): 进程 A 读 in 且将值 7 保存在一个局部变量.   进程A 切换到进程B.

(2): 进程B读in, 将文件名保存在空位 7 且更新in 的值为 8.

(3): 进程 A 将文件名保存到空位 7且更新 in 的值为 8.

空位 7 所保存的文件名不确定,取决于谁最后完成,这导致竞争条件发生。

临界区

  1. 临界资源:互斥共享变量所代表的资源,即一次只能被一个进程使用的资源;
  2. 临界区指并发程序中与互斥共享变量相关的程序段;
  3. 防止竞争条件的思想:禁止多个进程同时读和写共享数据,即同时进入临界区。

防止竞争条件的解决方案

好的解决方案满足的四个条件:

  1. 没有进程同时在临界区;
  2. 不假设CPU的速度和数量;
  3. 临界区外运行的进程不得阻塞其他进程;
  4. 不会导致有进程永远在临界区外面等待。

使用临界区的互斥

实现互斥

实现互斥- 屏蔽中断

只有发生中断的时候,CPU 才会切换进程。因此,如果屏蔽中断,就不会发生切换了。

这个不太好,一个进程关了中断之后不开怎么办?

实现互斥- 锁变量

Problem?

如果一个进程执行完while条件判断后突然发生了切换,lock = 1尚未执行, 则两个进程都会进入临界区。

实现互斥– 严格轮换法

问题:效率不高,有限制。

互斥实现– Peterson’s 解法

几乎完美,但是有忙等待现象!

硬件方案:  测试并加锁 (TSL) 指令

该硬件支持一种特殊指令 TSL, 其能够不可分割地完成两个任务:

(a)将一个内存值保存到CPU寄存器;

(b)将该内存值设置为1。

忙等待

忙等待

  • 一个进程一直占用CPU测试循环的条件,直到测试条件为真。
  • 浪费CPU;
  • 导致优先级反转问题

睡眠与唤醒

  • 从忙等待到阻塞...
  • 睡眠是一个系统调用,使得调用者阻塞自己直到另外的进程唤醒该进程。
  • 唤醒调用唤醒指定的进程。

习题:

设与某资源相关联的信号量初值为3,当前值为2,若M表示该资源的可用个数,N表示等待该资源的进程数,则M、N分别为(D  )

下一个笔记的内容是信号量相关的,可以移步看一下~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/883940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jmeter的基本使用

Jmeter基本使用 一、变量 1.用户定义变量 2.用户参数 二、函数 1.计数器${__counter(,)} 2.时间函数 3.加密函数${__digest(,,,,)} 4. 整数相加${__intSum(,,)} 5.属性函数,${__P(,)}、${__property(,,)}、${__setProperty(,,)} 6.V函数 三、获取响应数据…

Go语言基础教程:指针

在 Go 中,函数参数默认是按值传递的。若要改变变量的原始值,可以使用指针。本教程将通过示例代码来演示如何使用值传递和指针传递。 package mainimport "fmt"// 传值方式 - 函数内改变 ival 的值不会影响原始变量 func zeroval(ival int) {i…

2024年优秀的天气预测API

准确、可操作的天气预报对于许多组织的成功至关重要。 事实上,在整个行业中,天气条件会直接影响日常运营,包括航运、按需、能源和供应链(仅举几例)。 以公用事业为例。根据麦肯锡的数据,在 1.4 年的时间里…

HCIP-HarmonyOS Application Developer V1.0 笔记(二)

类Web开发范式自定义组件基本用法 自定义组件通过element引入到宿主页面。 Props自定义属性 自定义属性支持类型 String,Number,Boolean,Array,Object。 命名规范: 命名时禁止以on、、on:、grab:等保留关键字为开头…

天润融通突破AI客服局限,三大关键提升文本机器人问答效果

近期,AI客服再次登上热搜,引发网友集体吐槽,比如AI客服虽然态度客气,但听不懂客户诉求,回答问题驴唇不对马嘴,解决不了问题...... 更有网友将这些问题升级到,企业就是不想解决问题才交给AI客服…

aarch64-opencv341交叉编译,并在arm上部署helloopencv

背景 当需要在jetson xavier nx或者rk 3562等平台上开发关于视觉检测的工程时,由于arm板子资源不足或者不能联网等原因,通常在虚拟机上利用交叉编译器编译得到可执行程序,然后部署到arm板上。 aarch64-opencv341交叉编译 ubuntu虚拟机中先…

mysql中redolog、binlog

我们中说删库跑路,那么数据库删除后,里面的数据怎么恢复呢? 这里就涉及到了redolog和binlog了 一、什么是存储引擎和缓冲池 存储引擎是 MySQL 中直接与磁盘交互部分。也是存储引擎读写数据的最小单位,一个页里可以有一条或多条…

【分布式技术】分布式事务深入理解

文章目录 概述产生原因关键点 分布式事务解决方案3PC3PC的三个阶段:3PC相比于2PC的改进:3PC的缺点: TCCTCC事务的三个阶段:TCC事务的设计原则:TCC事务的适用场景:TCC事务的优缺点:如何解决TCC模…

字节青训-找出最长的神奇数列

问题描述 小F是一个好学的中学生,今天他学习了数列的概念。他在纸上写下了一个由 0 和 1 组成的正整数序列,长度为 n。这个序列中的 1 和 0 交替出现,且至少由 3 个连续的 0 和 1 组成的部分数列称为「神奇数列」。例如,10101 是一…

华为配置BFD状态与接口状态联动实验

组网图形 图1 配置BFD状态与接口状态联动组网图 BFD简介配置注意事项组网需求配置思路操作步骤配置文件 BFD简介 为了减小设备故障对业务的影响,提高网络的可靠性,网络设备需要能够尽快检测到与相邻设备间的通信故障,以便及时采取措施&…

解压缩工具详解:ZArchive对比解压专家

ZArchiver 和解压专家在手机版解压缩工具市场中都占据着重要地位,深受用户喜爱。 ZArchiver 是一款功能强大的解压缩文件应用程序。它支持创建多种格式的压缩文件,如 7z (7zip)、zip、bzip2 (bz2)、gzip (gz)、XZ、tar 等;同时支持解压众多格…

CPU算法分析LiteAIServer视频智能分析平台噪声检测功能在视频监控中的应用与优势

在视频监控系统中,噪声问题一直是影响视频画面清晰度和可用性的关键因素。这些噪声可能源于多种因素,如低光环境、摄像机传感器的高灵敏度或编码压缩过程中的失真等。为了应对这些挑战,CPU算法分析LiteAIServer引入了噪声检测功能&#xff0c…

MATLAB实现蝙蝠算法(BA)

MATLAB实现蝙蝠算法(BA) 1.算法介绍 蝙蝠算法(简称BA)是一种受微型蝙蝠回声定位机制启发的群体智能算法,由Xin-She Yang于2010年提出。这种算法模拟了微型蝙蝠通过向周围环境发出声音并监听回声来识别猎物、避开障碍物以及追踪巢穴的行为。…

git push到远程怎么回退

git push到远程服务器想继续修改,你必须要回退然后在此提交。而且需要保留本地的修改文件。 下面给你一些git命令,回退很简单。 按照下面的流程操作就行: 1.查看提交历史 首先,使用git log命令查看提交历史。可以使用以下命令显…

邮件系统SSL加密传输,保护你的电子邮件免受网络威胁

在互联网的浪潮中,企业数字化转型的步伐不断加快。企业邮箱作为数字化应用的重要组成部分,已成为员工沟通、协同工作和企业管理的关键工具。但是在公共网络安全性普遍较弱的背景下,黑客容易侵入企业网络,监控流量,截获…

跨平台开发支付组件,实现支付宝支付

效果图: custom-payment : 在生成预付订单之后页面中需要弹出一个弹层,弹层中展示的内容为支付方式(渠道),由用户选择一种支付方式进行支付。 该弹层组件是以扩展组件 uni-popup 为核心的,关于…

usb学习笔记

1 学习链接 https://zhuanlan.zhihu.com/p/683251257https://zhuanlan.zhihu.com/p/683251257控制传输固定使用端点0 ,枚举过程使用大量的控制传输,可参考后文中枚举过程的实际报文。控制传输为了保证配置数据的传输的有效性,使用了指令再确…

uniapp一键打包

1.先安装python环境, 2.复制这几个文件到uniapp项目里面 3.修改自己证书路径,配置文件路径什么的 4.在文件夹页面双击buildController.py或者cmd直接输入buildController.py 5.python报错,哪个依赖缺少安装哪个依赖 6.执行不动的话&…

基于Python的B站视频数据分析与可视化

基于Python的B站视频数据分析与可视化 爬取视频、UP主信息、视频评论 功能列表 关键词搜索指定帖子ID爬取指定UP主的主页爬取支持评论爬取生成评论词云图支持数据存在数据库支持可视化 部分效果演示 爬取的UP主信息 关键词搜索爬取 指定UP主的主页爬取 指定为黑马的了 爬取视…

图文并茂教你如何发布自己的NPM包(GitHub Packages npm 包发布)

前情提要 发布包到npm也好,到github packages仓库也好,都是一样的道理,只是仓库地址不一样而已,本文是将npm包发布到了GitHub Packages~ GitHub Packages 简介 GitHub Packages 是一种软件包托管服务,和npm类似&…