临界区操作的原子性

2023-11-05

所谓的原子性就是操作在未执行完之前不会被打断,在多线程变成的时候,很多时候都会在线程函数中或者被线程调用的函数中使用临界区来实现函数操作的原子性。

临界区保证当前进入临界区的线程能够完整执行完临界区中保护的代码不被打断,但是当时我一直对临界区有一个疑问,即临界区自己的代码中如何实现这种特性,也就是一个线程调用调用进入临界区的函数,这个函数EnterCriticalSection如何保证自己的代码不被打断,因为只要存在线程调度,那么每个线程都可能随时被打断,保存,然后内核重新调度接下去要运行的线程,如果A,B两个线程都是进入函数Proc,Proc开头的EnterCriticalSection函数如何保证自己不会受到线程调度的影响。

例如线程A先执行了EnterCriticalSection函数的一部分,然后系统发生定时中断,接着内核被调起来调度下面运行哪一个线程,然后内核调度了线程B,线程B接着也执行了EnterCriticalSection函数的一部分,那么这种情况我觉得很有可能会导致A,B两个线程都通过了EnterCriticalSection函数,获得了临界区中代码的执行权限,这就肯定没有达到临界区互斥的效果。

然后我最近在《现代操作系统》这本书中找到了答案,原来是EnterCriticalSection中直接屏蔽了所有中断来保证自己的执行不被打断,好暴力的操作.....


===============(分割线)===============

jixugengxin,shuzhong说到了一点,直接屏蔽中断并不是一个好的手段,尤其是针对多处理器的情况下,只有一个处理器屏蔽了中断并不能方式别的处理器上运行的线程进入临界区。

更好操作应该是借助于硬件提供的特殊汇编指令,例如TSL指令,该指令访问并且设置个存储器地址上的值(读取后并且设置一个非0值,而且这两个操作不可被打断),并且在这个指令执行期间,其他CPU是不能对该存储器地址进行访问和操作,TSL中的两个操作具有原子性,不能够被打断,在该CPU执行TSL指令的时候会锁住地址总线,防止其他CPU对内存进行访问。

借助这个特性,应该就可以实现比较经典的PV操作了。

例如,利用TSL命令,借助一个标志变量,可以实现多线程多CPU的临界区访问

enter_region:

TSL REGISTER,LOCK   //LOCK在这里就是那个标志变量,使用TSL时读取并且设置了LOCK为非0

CMP REGISTER #0  //判断TSL读出来的LOCK是不是为0,如果不是0说明之前已经有别的CPU或者线程已经在LOCK为0的时候通过了TSL指令并且将LOCK设置为1了,且没有完成临界区中的工作。

JNE enter_region  如果读到的LOCK为非0,说明不能进入临界区,返回到enter_region重新读取这个LOCK

RET  //返回调用者


leave_region:

  MOVE LOCK,#0   //将LOCK设置为0,让其他的线程下次TSL读取到REGISTER中的LOCK为0,让其进入临界区。

  RET

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

临界区操作的原子性 的相关文章

  • WSL 2是什么

    Windows Subsystem for Linux WSL 适用于 Linux 的 Windows 子系统是微软在Windows 10上提供的一项供用户快速运行Linux命令和工具的功能 相比前一代的WSL WSL 2提供更全的兼容性
  • 虚拟化与网络存储技术

    虚拟化技术简介 一 常见的虚拟化技术分类 1 CPU虚拟化 CPU的虚拟化技术是一种硬件方案 支持虚拟化技术的CPU带有特别优化过的指令集来控制虚拟过程 通过这些指令集 VMM会很容易提高性能 2 服务器虚拟化 服务器虚拟化能够通过区分资源
  • 课程设计总结

    1 政府职能部门 望细分 具体 课程压缩所致 2 企业家 结构好 利于规划 参考 强烈希望协调与管理融合进来 3 工程师 技术人员 指导行强 望精化 深化 细化 4 学生 利于未来规划 创业 就业 发展 学习方向等等 老师总结课程缺陷 1
  • MQTT客户端应用编程及接口分析

    MQTT客户端应用编程及接口分析 MQTT协议简介 MQTT是一个基于客户端 服务器的消息发布 订阅传输协议 MQTT协议是轻量 简单 开放和易于实现的 这些特点使它适用范围非常广泛 客户端服务端安装 1 安装 sudo apt add r
  • 形象易懂讲解算法II——压缩感知

    形象易懂讲解算法II 压缩感知
  • 解决-画图程序无法读取-无效的位图文件

    辛苦画的图 今天一打开就看到这个 心情是呵呵的 搜了一下大概是图太大了 右击win10自带的图片 给裁剪小了就OK了
  • sentinel3数据批量下载——sentinelsat

    本文主要记录利用sentinelsat包批量下载sentinel2数据 转载 https blog csdn net mrzhy1 article details 107044828 方法一 直接利用sentinelsat包 1 senti
  • UG NX10.0软件安装教程

    软件下载 名称 UG NX 10 0 语言 简体中文 安装环境 Windows 下载链接 链接 https pan baidu com s 1SkskLU2CYLQznfGWM7O4HQ 提取码 ersv 安装中有问题请咨询管家微信 don
  • 合肥工业大学 汇编语言程序设计 高分实验代码

    感觉最困难的就是写汇编代码了 当时成功完美运行的时候兴奋的像当年第一次 Hello World 一样 且几乎所有关键之处都有注释 需要的朋友自取 链接 https pan baidu com s 1q4nVJ7aK4JEPQ F6PH45R
  • 查看apk签名,查看key签名,adb常用命令

    在使用第三方sdk时经常要求绑定签名 这里提供两种查看签名的方式 如果只是想查看一下手机上应用的签名 那么可以安装一个app直接输入包名即可查看该应用的签名 提供一个微信的签名查看apk 下载连接http download csdn net
  • Blender51个基本操作

    一 选择操作 编辑模式 1 右键 选择 2 A 全选 3 B 左键 矩形选择 4 B 中键点击 矩形移除选择 5 C 左键 圆形选择 6 C 中键点击 圆形移除选择 7 滚轮滑动 圆形选择框大小 8 Ctrl 左键 扇形选择 9 Ctrl
  • GitHub Actions自动化部署+定时百度链接推送

    前言 最近用VuePress搭建了一个静态网站 由于是纯静态的东西 每次修改完文章都要重新打包上传很是麻烦 虽然vuepress theme vdoing主题作者提供了GitHub Actions自动化部署的教程文章 但是过于简陋且是19年
  • TVS管电路原理图符号及选型举例

    TVS管的电路原理图符号与稳压二极管符号类似 结构也都差不多 了解TVS管的电路原理图符号是掌握TVS管符合选型的基础 一般常见的TVS管电路原理图符号有 VBR IPP IR VRWM VC PM CP VBR代表的是 击穿电压 IPP代
  • 【Android Studio】Design editor is unavailable until next gradle sync.如何解决?

    Design editor is unavailable until next gradle sync 如何解决 打开一个网上开源的下载文件 在查看安卓页面布局 也就是控件布局时 会出现一个bug Design editor is unav
  • 通过python程序调取摄像头画面

    目录 1 方法 2 演示代码 3 总结 1 方法 想要调取摄像头画面有这么几个前提 需要使用网络摄像头并且支持RTSP协议 摄像头要和你的电脑在同一个局域网下 需要知道摄像头的账号 密码 IP地址 RTSP协议是一种网络传输协议 不同的摄像
  • PTP/IP协议

    PTP IP PTP over IP 是一个通过IP连接 建立在 Picture Transfer Protocol PTP 上的传输层 我之所以在了解这个东西是因为有一台 Nikon 相机支持 WLAN 和手机传输相片 但是APP设计得极
  • 销售人员一定要知道的6种获取电话号码的方法

    对于销售来说 电话销售是必须要知道的销售方法 也是销售生涯中的必经之路 最开始我们并不清楚这么电话是从哪里来的 也不清楚是通过哪些方法渠道获取 那么今天就来分享给各位销售人员获取客户电话号码的方法 1 打印自己的名片 在工作当中少不了接触其
  • B2B公司如何寻找意向客户的联系方式?

    在B2B公司的营销过程中 少不了寻找意向客户的阶段 这也是销售过程中非常重要的一步 很多新人都是拿到客户联系方式 就直接打电话拜访 俗话说不打没有准备的仗 因此在拜访客户之前就应该做好功课 充分了解客户 这也是B2B业务场景下必做的一环 通
  • fl studio2024水果21.3免费汉化版

    fl studio2024全称Fruity Loops Studio2024 这款软件也被人们亲切的称之为水果 它是一款功能强大的音乐创作编辑软件 拥有全功能的录音室 大混音盘以及先进的音乐制作工具 用户通过使用该软件 就可以轻松制作出自己
  • FAM amine, 6-isomer,1313393-44-0,含有纯6-异构体的荧光团,6-FAM NH2

    产品名称 FAM amine 6 isomer 6 FAM NH2 中文名称 6 羧基荧光素 氨基 CAS 1313393 44 0 分子式 C27H26N2O6 分子量 474 51 纯度 95 结构式 产品描述 荧光素衍生物具有胺基 含

随机推荐

  • Embedded Mono: Invoking a C# generic method (Part 2)

    Embedded Mono Invoking a C generic method Part 2 A while ago I wrote about how to invoke a C generic method by using a h
  • Java项目,内存泄漏问题排查与总结,拓展容器相关知识Dockerfile

    问题场景 现象 有一次发现容器里面启动的java项目探活每过一段时间 大概半小时 就失败 导致项目在容器中重复的重启 服务时好时断 问题描述 在容器中排查问题的时候发现了两个问题 进入容器查看启动日志发现 项目启动之初是能够正常运行并且访问
  • WIFI学习第二天

    Wi Fi 6 802 11ax Wi Fi 6是下一代802 11ax标准的简称 随着Wi Fi标准的演进 WFA为了便于WiFi用户和设备厂商轻松了解其设备连接或支持的Wi Fi型号 选择使用数字序号来对WiFi重新命名 另一方面 选择
  • 参考文献对齐方法

    参考文献对齐方法 首先把符号和文本之间的空格都删掉 复制粘贴到记事本中 把每一条参考文献的 符号和文本之间以及文本最后加上Tab键 复制粘贴回word中 全选后右键 段落 两端对齐 悬挂缩进2字符 完成
  • ffmpeg常用音频处理

    使用ffmpeg分析修改音频 ffmpeg layouts查看音频的布局情况 1 双声道合并单声道 ffmpeg i music mp3 ac 1 music aac 2 双声道的提取 map channel input file id s
  • 大数据业务模型和技术架构简图

    大数据业务模型和技术架构简图 1 背景 大数据技术随着互联网的发展而兴起于21世纪初 最早遇到海量数据技术问题的是搜索引擎公司 如谷歌 数据量级别的暴增是由于2010年之后的互联网兴起 网络用户数量暴涨带来的海量用户数据暴增 对大数据处理的
  • firefox火狐能打开http网址,针对所有https网址无法打开

    1 常规的做法 遇到https无法打开时 最常用的做法就是各种百度 然后找到的解决方案就是像下面链接处理的这种 https blog csdn net u011650143 article details 70303894 utm sour
  • linux 网络编程易错点

    1 网络字节序 l 网络字节序存在的意义是实现不同主机字节序的兼容 2 accept l 生成一个新的套接字 这个是所有socket通讯模型的基础 3 sendto l 该函数一定要指定dest len的大小 否则接收端接收不到数据 4 广
  • CMAKE 中add_definitions的用法

    If you are in China please add this CMake flag DTHIRD PARTY MIRROR aliyun to speed up the downloading procedure for some
  • Linux压缩解压命令

    1 tar 解包 tar xvf FileName tar 打包 tar cvf FileName tar DirName 注 tar是打包 不是压缩 2 gz 解压1 gunzip FileName gz 解压2 gzip d FileN
  • mysql 批量 update 多个条件_MySQL更新表数据(八)

    更新数据是使用数据库时最重要的任务之一 在本教程中 您将学习如何使用MySQL UPDATE语句来更新表中的数据 1 MySQL UPDATE语句简介 我们使用UPDATE语句来更新表中的现有数据 也可以使用UPDATE语句来更改表中单个行
  • 15 行代码在 wangEditor v5 使用数学公式

    前言 wangEditor v5 正式版发布在即 为了验证它的扩展性 我开发了几个常用的第三方插件 本文介绍一下 formula 插件的设计和使用 插入数学公式要使用 LateX 语法 渲染公式需要依赖工具 KateX 如 c pm sqr
  • ctf-攻防世界-web:disabled_button

    wp 一 提示是前端知识 有一个不能按的按钮 我们F12开发者工具来看看这个按钮 咦 有一个disabled 只要把这个disabled 删掉 按钮就可以按下了 点一下按钮 flag出现 完美 二 或者审计代码 hackbar用post方式
  • Android 获取USB设备的类型

    Version info Linux 3 10 Android 4 2 一 问题 现在有USB设备插入Android系统 那么如何得知插入的设备类型 是USB打印机 U盘 还是USB鼠标 二 USB类型规定 对于USB类型 USB组织是有规
  • 数据监控与报警:将Scrapyd与监控工具集成,实现爬虫异常时的自动警报通知

    目录 1 数据监控与报警的重要性 2 集成监控工具 3 监控爬虫运行状态 4 监控网站结构变化
  • 什么是NoSQL,为什么要使用NoSQL?

    详见 什么是NoSQL 为什么要使用NoSQL 曲健磊的个人博客的博客 CSDN博客 nosql https baike so com doc 5569749 5784951 html 1 为什么用 NoSQL 1 1 单机 MySQL 的
  • HCIP第七天

    OSPF的不规则区域 OSPF区域划分的要求 1 区域之间必须存在ABR 2 区域划分必须按照星型拓扑结构来进行划分 常见的不规则区域 1 远离骨干的非骨干区域 2 不连续骨干区域 远离骨干的非骨干区域 1 使用VPN隧道 直接在非法的AB
  • 2023Testing Expo

    8月9日 11日 2023汽车测试及质量监控博览会将于上海世博展览馆1号馆举行 本次展会将展示测试和验证技术在整车 零部件和系统开发领域中的新发展 新产品和新解决方案 怿星科技将携最新的ETH测试 智驾测试 PPS测试等方案亮相测试展 届时
  • 如何学习好数学

    数学大咖单墫总结数学解题的12条原则 1 要享受到解题的乐趣 对解题有浓厚的兴趣 能有几分痴迷更好 2 要有充足的信心 3 要有百折不回的决心与坚韧不拔的毅力 4 要做100道有质量的题目 5 反复探索 大胆地跟着感觉走 6 从简单的做起
  • 临界区操作的原子性

    所谓的原子性就是操作在未执行完之前不会被打断 在多线程变成的时候 很多时候都会在线程函数中或者被线程调用的函数中使用临界区来实现函数操作的原子性 临界区保证当前进入临界区的线程能够完整执行完临界区中保护的代码不被打断 但是当时我一直对临界区