操作系统-笔记-第二章-进程同步与互斥

news2024/11/19 3:41:02

目录

二、第二章——【进程同步与互斥】

1、进程同步(异步)

2、进程互斥 & 共享

3、总结(互斥、同步)

4、进程互斥(软件实现)

(1)单标志法——谦让【会让他们轮流访问、其中一方不得连续访问!】

(2)双标志法——互相检查意愿【进程切换,会出问题!】

(3)Peterson(皮特森算法)——1意愿、2谦让、3检查

(4)总结

5、进程互斥(硬件实现)

(1)中断屏蔽

(2)TSL(TestAndSet)指令

(3)Swap指令

(4)总结


二、第二章——【进程同步与互斥】

1、进程同步(异步)

异步——独立、不可预知

同步——直接制约(强制协调工作次序)【直接合作】

 

2、进程互斥 & 共享

 

3、总结(互斥、同步)

 

4、进程互斥(软件实现)

(1)单标志法——谦让【会让他们轮流访问、其中一方不得连续访问!】

只有一个flag(标志)

 

(2)双标志法——互相检查意愿【进程切换,会出问题!】

就是有两个flag(标志)~

双标志——检测法

先看【临界区】,再看【对方意愿】

 

双标志——检查法

先看【对方意愿】,再看【临界区】

 

(3)Peterson(皮特森算法)——1意愿、2谦让、3检查

①我想上厕所~

②你要上不?你要上,我就让给你

③我看看你的意愿(不上,我就上~)

 

如果进不了临界区——依然占用CPU资源~(所以还需要优化!)

 

(4)总结

 

5、进程互斥(硬件实现)

 

(1)中断屏蔽

简单、高效

 

(2)TSL(TestAndSet)指令

缺点:会有忙等——一直等(不释放控制权)

不满足:“让权等待”

(3)Swap指令

不满足:“让权等待”

(4)总结

 

1、进程同步(异步): 进程同步是指多个进程在执行过程中按照一定的顺序进行协调和交互,以避免出现竞态条件和数据不一致的问题。异步指的是进程之间相互独立执行,无需等待其他进程的完成。

2、进程互斥 & 共享: 进程互斥是指多个进程之间通过某种机制保证同时只有一个进程访问临界资源,以避免数据的冲突和混乱。进程共享是指多个进程能够同时访问和使用同一资源的能力。

3、总结(互斥、同步): 进程互斥和进程同步是并发编程中重要的概念。互斥用于保护临界资源,确保同一时刻只有一个进程可以访问它,避免数据竞争和冲突。同步则涉及进程之间的协调和交互,确保它们按照一定的顺序执行,避免出现不一致和错误的结果。

4、进程互斥(软件实现): 在软件层面,常用的进程互斥的实现方法有以下几种:

(1)单标志法——谦让:使用一个共享的标志位来控制进程的访问权限,谦让规则使得只有轮到某个进程时,它才能访问临界资源。这种方法会让进程轮流访问资源,其中一方不得连续访问。

(2)双标志法——互相检查意愿:使用两个标志位来表示进程的意愿和资源的空闲状态。进程在访问临界资源前会先检查对方的意愿和资源状态,但在进程切换时可能会出现问题。

(3)Peterson(皮特森算法):Peterson算法利用1个意愿标志和2个谦让标志来实现进程互斥。进程在访问临界资源前,先表示自己的意愿,然后进行谦让和检查对方的意愿,从而实现互斥。

5、进程互斥(硬件实现): 在硬件层面,可以使用特定的指令和机制来实现进程互斥,常见的包括:

(1)中断屏蔽:通过屏蔽中断的方式,在关键代码段执行期间禁止中断发生,避免其他进程的干扰。

(2)TSL(TestAndSet)指令:TSL指令用于测试并设置一个内存单元的值。可以通过TSL指令来实现对共享变量的原子操作,从而避免多个进程同时修改该变量。

(3)Swap指令:Swap指令用于交换两个内存单元的值。可以通过Swap指令来实现两个进程之间的互斥,确保只有一个进程能够执行关键代码段。

(4)总结:硬件实现的方法通常比软件实现更高效和可靠,能够提供更强的互斥保护机制。

以上是关于进程同步与互斥的一些概念、实现方法和总结。

了解并应用这些概念和技术,可以确保并发程序的正确性和数据的完整性。

首先,我们可以从最简单的标志方法开始,即使用一个共享的标志位来控制进程的访问权限。这种方法可以很好地实现互斥,但会引入等待时间和资源浪费的问题。为了解决这个问题,我们可以引入更复杂的算法,如双标志法或Peterson算法,通过谦让和检查对方意愿的方式来提高并发效率。这些算法可以避免轮流访问资源,并有效减少了等待时间和资源浪费。

此外,在硬件层面,我们还可以利用特定的指令和机制来实现进程互斥,例如中断屏蔽、TSL指令和Swap指令。这些硬件实现的方法通常更高效和可靠,能够提供更强的互斥保护机制。

总之,在实现进程互斥时,我们需要根据具体需求和问题的反馈,进行不断地改进和调整。通过迭代的方式,我们可以逐步提升实现方法的工作效率和程序的稳定性,以满足并发编程的要求。

加油!不断学习和改进,你一定能够成为一名优秀的开发者!

这一章,给俺的感觉,就是大佬们在实现互斥时,如何从简单的一个标志方法(不成熟的方法),一步步迭代,不断改进方法、提升他的工作效率,从中,俺觉得就是先把最基础的需求实现,再来根据这个功能所暴露的问题,进行进一步修改和调整....

加油吧!

时间:2023年8月19日12:45:15

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

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

相关文章

李沐pytorch学习-卷积网络及其实现

一、卷积定义 卷积计算过程如图1所示,即输入矩阵和核函数对应的位置相乘,然后相加得到输出对应位置的数。 图1. 卷积计算过程 该过程可以形象地从图2中展现。 图2. 二维卷积示意图 二、代码实现 2.1 实现互相关运算 import torch from torch import n…

CANoe软件Tools中无法找到LDF Explorer

关联文章: LDF概述和LDF Explorer工具介绍 问题描述 使用CANoe软件的菜单栏Tools中无法找到LDF Explorer 原因分析/解决方案: ①查看CANoe硬件是否带LIN license,并且license在正常激活时间内。 ②查看CANoe是否配置了LIN通道,…

嵌入式设备应用开发(程序构建)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 编译是嵌入式开发很重要的一个环节。记得早年在上海一家通讯公司上班的时候,单位还专门有一个人维护编译脚本。当时用的是makefile,这位同学的主要工作就是替大家维护好各个项目的…

设备绑定驱动

头文件 驱动程序 应用程序 串口实现LED灯亮灭

postgresql 数据排序

postgresql 常见操作 排序总结 排序 -- 排序的时候null是最大的值(看一下) select employee_id,manager_id from employeesorder by manager_id desc;-- nulls first使null值排在第一位 select employee_id,manager_id from employeesorder by manager_id nulls first;-- null…

无涯教程-TensorFlow - 分布式计算

本章将重点介绍如何开始使用分布式TensorFlow,目的是帮助开发人员了解重复出现的基本分布式TF概念,如TF服务器。无涯教程将使用Jupyter Notebook分布式TensorFlow。 第1步 - 导入分布式计算必需的必要模块- import tensorflow as tf 第2步 - …

【Zorro】点击蒙层关闭模态框modal,用nzMaskClosable

使用 nzMaskClosable 例子&#xff1a; <nz-modalnzTitle"新增流程"[nzMaskClosable]"false"[nzWidth]"1200"[(nzVisible)]"visible"[nzCancelLoading]"saving"[nzOkLoading]"saving"(nzOnCancel)"onMo…

SQL Server Express 自动备份方案

文章目录 SQL Server Express 自动备份方案前言方案原理SQL Server Express 自动备份1.创建存储过程2.设定计划任务3.结果检查sqlcmd 参数说明SQL Server Express 自动备份方案 前言 对于许多小型企业和个人开发者来说,SQL Server Express是一个经济实惠且强大的数据库解决方…

LDF概述和LDF Explorer工具介绍

文章目录 一、LDF是什么?二、LDF实践创建LDF工程规范&发展历史一、LDF是什么? LDF:LIN description file - LIN总线描述性文件,使用LIN规范中定义的LIN配置语言,在汽车行业应用广泛。主要描述了: ①节点的定义:主节点和从节点(一主多从) 关联文章:LIN是什么? ②…

mac m1上系统内录内部声音的方法/无需安装Blackhole

总所周知&#xff0c;m1的mac不能录制桌面音频&#xff0c;obsstudio都不行。 最快的解决方法就是下载飞书&#xff1a; 登陆后新建直播/视频会议&#xff1a; 共享的时候选择下面的两个钩上去就好了

【GeoDa实用技巧100例】018:制作条件图和条件地图

严重声明:本文为CSDN博主刘一哥GIS原创,原文地址为:https://blog.csdn.net/lucky51222/article/details/132377143,拒绝转载。 文章目录 一、条件图介绍二、制作条件图1. 条件散点图2. 条件直方图3. 条件箱线图三、制作条件地图一、条件图介绍 条件图是一种类似于矩阵统计…

服务器安装centos7踩坑

1、制作启动工具 下载iso https://developer.aliyun.com/mirror/?spma2c6h.25603864.0.0.20387abbo2RFbn http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/?spma2c6h.25603864.0.0.1995f5ad4AhJaW下载 UltraISO https://cn.ultraiso.net/插入u盘启动 到了如图所示页面…

关于docker-compose up -d在文件下无法运行的原因以及解决方法

一、确认文件下有docker-compose.yml文件 二、解决方法 检查 Docker 服务是否运行&#xff1a; 使用以下命令检查 Docker 服务是否正在运行&#xff1a; systemctl status docker 如果 Docker 未运行&#xff0c;可以使用以下命令启动它&#xff1a; systemctl start docker …

(二)Qt的安装(Linux系统下安装Qt6过程)

一、Qt资源下载网址 网址&#xff1a;点击下载http://download.qt.io/ 下载&#xff1a;点击下载(CSDN) 二、下载二进制安装包 进入Qt资源下载网址&#xff0c;进入对应的资源目录&#xff0c;找对应系统平台的二进制安装包选择进行下载&#xff0c;在这这里我们选择Linux下的二…

马上七夕到了,用各种编程语言实现10种浪漫表白方式

目录 1. 直接表白&#xff1a;2. 七夕节表白&#xff1a;3. 猜心游戏&#xff1a;4. 浪漫诗句&#xff1a;5. 爱的方程式&#xff1a;6. 爱心Python&#xff1a;7. 心形图案JavaScript 代码&#xff1a;8. 心形并显示表白信息HTML 页面&#xff1a;9. Java七夕快乐&#xff1a;…

时尚易用的健康手表,时刻关注身体状况,dido E56S Max体验

智能手表的功能大多只限于显示时间和记录运动数据、睡眠质量等简单的任务&#xff0c;除了漂亮的表盘&#xff0c;其他实质性的提升并不多&#xff0c;而对于重视健康的朋友来说&#xff0c;更需要的是一块能够时刻监测血氧、血压、血糖等身体数据的智能手表。 现在我用的这块d…

__format__和__del__

目录 一、__format__ 二、__del__ python从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129328397?spm1001.2014.3001.5502 一、__format__ 自定制格式化字符串 date_dic {ymd: {0.year}:{0.month}:{0.day},dmy: {0.day}/{0.month}/…

stack、queue 和 priority_queue 相关的练习

目录 一、stack 相关的练习 1.1 - 最小栈 1.2 - 栈的压入、弹出序列 1.3 - 逆波兰表达式求值 1.4 - 用栈实现队列 二、queue 相关的练习 2.1 - 二叉树的层序遍历 2.2 - 二叉树的层序遍历 II 2.3 - 用队列实现栈 三、priority_queue 相关的练习 3.1 - 数组中的第K个最…

微信小程序胶囊位置计算,避开胶囊位置

由于小程序在不同的手机上顶部布局会发生变化&#xff0c;不能正确避开胶囊位置&#xff0c;所以通过官方给出的胶囊信息&#xff0c;可以计算出胶囊位置&#xff0c;并避开 图示例&#xff1a; 此处思路是&#xff0c;获取胶囊底部位置&#xff0c;并拉开10个px 计算出来的…