【从零开始学习计算机科学】操作系统(三)进程的互斥、同步与通信

【从零开始学习计算机科学】操作系统(三)进程的互斥、同步与通信

    • 进程的互斥、同步与通信
      • 进程的互斥
      • 进程的同步
      • 进程的通信

进程的互斥、同步与通信

进程的互斥

两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象被称作进程互斥· 也就是说,一个进程正在访问临界资源,另一个要访问该资源的进程必须等待。我们可以看出,进程的互斥离不开临界资源和临界区,其可以定义为:在某段时间内只允许一个进程使用的资源称为临界资源,使用临界资源的那一部分程序称为程序的临界区。它存在的目的是有效的防止竞争条件又能保证最大化使用共享数据。而这些并发进程必须有好的解决方案,才能防止出现以下情况:多个进程同时处于临界区,临界区外的进程阻塞其他的进程,有些进程在临界区外无休止的等待。除此以外,这些方案还不能对CPU的速度和数目做出任何的假设。

为了提供对互斥的支持,系统必须满足以下条件:

  1. 互斥:一次最多一个进程能够进入临界区,当有进程在临界区执行时,其它进程若想要进入临界区,则需要等待。
  2. 有限等待:不能让一个进程无限制地在临界区内执行,即任意进入临界区的进程必须在有限时间内退出临界区。
  3. 空闲让进:如果某进程退出临界区,而有其它进程正在等待进入临界区时,应当让这个进程进入。

互斥机制可以在体系结构层次上实现,也可以在软件层次上实现。

  1. 通过禁止中断实现。即在进入临界区之间通过设置特殊的寄存器实现中断的屏蔽(禁止中断),然后在临界区执行完成后再恢复中断。其保证了临界区不会发生中断,所以可以保证进程在进入临界区后不会被打断执行,因此有效地实现了互斥。其也具有一些缺点:该方法的代价太高,由于禁止了中断,系统执行的效率会有明显的降低;该方法不能用于多处理器结构。

  2. 通过专用机器指令实现。此方法是通过一条或多条为互斥功能开发的专用指令实现的,比如compare_and_swap指令,这种方法的实现一般需要体系结构提供互斥锁或通过指令实现互斥锁或自旋锁机制。这种方法的优点表现为:适用范围广。适用于在单处理器或共享内存的多处理器上的任意数目进程;使用简单。指令设置简单,容易验证其正确性。
    可支持多个临界区。当然,其也有一些缺点:导致CPU空耗。当一个进程等待进入临界区时,会不断地持续检测,消耗处理器时间;导致饥饿进程。由于各种原因,当有多个进程都在等待进入临界区时࿰

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

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

相关文章

【一起学Rust | Tauri2.0框架】基于 Rust 与 Tauri 2.0 框架实现软件开机自启

文章目录 前言 一、准备工作1.1 环境搭建1.2 创建 Tauri 项目1.3 添加依赖 二、实现开机自启的基本原理2.1 开机自启的基本概念2.2 Tauri 应用的生命周期 三、Windows 平台实现3.1 Windows 注册表机制3.2 实现步骤3.3 注意事项 四、Linux 平台实现4.1 Linux systemd 服务4.2 实…

Windows10下docker desktop命令行操作指南(大部分也适用于Linux)

Windows系统最大的特点就是可视化操作,点点鼠标就能操作软件。但是在特殊的情况下,比如docker desktop图标点了之后没反应,但是看后台程序,它又已经运行了,这时候就要使用命令行来操作了。 针对这次情况,所…

静态时序分析:无法满足的生成时钟(TIM-255警告、UITE-461或PTE-075错误)

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在阅读本文前,强烈建议首先阅读介绍生成时钟的文章,尤其是其中关于时钟极性和反相的相关内容。 静态时序分析:SDC约束命令cr…

计算机网络--访问一个网页的全过程

文章目录 访问一个网页的全过程应用层在浏览器输入URL网址http://www.aspxfans.com:8080/news/index.aspboardID5&ID24618&page1#r_70732423通过DNS获取IP地址生成HTTP请求报文应用层最后 传输层传输层处理应用层报文建立TCP连接传输层最后 网络层网络层对TCP报文进行处…

从零开发Chrome广告拦截插件:开发、打包到发布全攻略

从零开发Chrome广告拦截插件:开发、打包到发布全攻略 想打造一个属于自己的Chrome插件,既能拦截烦人的广告,又能优雅地发布到Chrome Web Store?别担心,这篇教程将带你从零开始,动手开发一个功能强大且美观…

AI智能眼镜主控芯片:技术演进与产业生态的深度解析

一、AI智能眼镜的技术挑战与主控芯片核心诉求 AI智能眼镜作为XR(扩展现实)技术的代表产品,其核心矛盾在于性能、功耗与体积的三角平衡。主控芯片作为设备的“大脑”,需在有限空间内实现复杂计算、多模态交互与全天候续航&#xf…

elasticsearch 8.17.3部署文档

elasticsearch 8.17.3部署文档 一、架构拓扑 ip主机名角色192.168.241.151slave1master192.168.241.152slave2node1192.168.241.153slave3node2 二、安装包下载——分别下载上传至所有的节点 下载地址https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-…

PySide(PyQT),QGraphicsItem的pos()和scenePos()区别

在QGraphicsItem中,pos()和scenePos()是两个重要的方法,用于描述图形项的位置,但它们的含义和用途有所不同。理解它们的区别对于正确操作和管理QGraphicsItem的位置至关重要。 1. pos()方法 • 定义:pos()返回的是QGraphicsItem在…

Linux 进程控制:创建、终止、等待与程序替换全解析

亲爱的读者朋友们😃,此文开启知识盛宴与思想碰撞🎉。 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 目录 1.进程创建 1-1 fork函数初识​ 1-2 fork函数返回值​ 1-3…

GStreamer —— 2.18、Windows下Qt加载GStreamer库后运行 - “播放教程 6:音频可视化“(附:完整源码)

运行效果 介绍 GStreamer 带有一组将音频转换为视频的元素。他们 可用于科学可视化或为您的音乐增添趣味 player 的本教程展示了: • 如何启用音频可视化 • 如何选择可视化元素 启用音频可视化实际上非常简单。设置相应的标志,当纯音频流为 found&#…

Excel多级联动下拉菜单设置

1.问题描述 现有数据表如下图所示: 该表中包括省、市、县三级目录。 现要将其整理成数据表模板,如下图所示: 要求制作成下拉菜单的形式,且每一级目录的下拉菜单列表要根据上一级目录的内容来确定。 如上图所示,只有…

Web基础:HTML快速入门

HTML基础语法 HTML(超文本标记语言) 是用于创建网页内容的 标记语言,通过定义页面的 结构和内容 来告诉浏览器如何呈现网页。 超文本(Hypertext) 是一种通过 链接(Hyperlinks) 将不同文本、图像…

VSTO(C#)Excel开发2:Excel对象模型和基本操作

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

PostgreSQL学习笔记:PostgreSQL vs MySQL

PostgreSQL 和 MySQL 都是广泛使用的关系型数据库管理系统,它们有以下一些对比: 一、功能特性 1. 数据类型支持 PostgreSQL:支持丰富的数据类型,包括数组、JSON、JSONB、范围类型、几何类型等。对于复杂数据结构的存储和处理非…

Matlab:矩阵运算篇——矩阵

目录 1.定义 实例——创建矩阵 实例——创建复数矩阵 2.矩阵的生成 实例——M文件矩阵 2.利用文本创建 实例——创建生活用品矩阵 3.创建特殊矩阵 实例——生成特殊矩阵 4.矩阵元素的运算 1.矩阵元素的修改 实例——新矩阵的生成 2.矩阵的变维 实例——矩阵维度修…

从0到1入门Docker

一、快速入门 Docker run命令中的常见参数 -d:让容器后台运行--name:给容器命名(唯一)-e:环境变量-p:宿主机端口映射到容器内端口镜像名称结构:Repository :TAG(镜像名&…

Python的浮点数

在 Python 中,有四种内置数值类型,分别是整型整数类型(int)、布尔类型(bool)、浮点数类型(float)和复数类型(complex)。浮点数默认是双精度类型,占…

从零开始 | C语言基础刷题DAY1

❤个人主页:折枝寄北的博客 DAY1[2025.3.11] 1. 求两个数的较大值2.从键盘输入的两个数的大小关系3.一个整数的奇偶性,请判断4. 考试分数是否通过5.考试成绩是否完美,请判断 1. 求两个数的较大值 题目: 写一个函数求两个整数的较…

[pytest] 配置

这里写目录标题 PytestInitRun3. 根据命令行选项将不同的值传递给测试函数 Report1. 向测试报告标题添加信息2. 分析测试持续时间 pytest --durations33. 增量测试 - 测试步骤--junitxml{report}.xml1. testsuite1.1 在测试套件级别添加属性节点 record_testsuite_property 2. …

物联网商业模式

物联网商业模式是一种战略规划,它融合了物联网技术来创造价值并获取收入。它与传统商业模式的不同之处在于,它利用互联设备来改善运营、提升客户体验以及优化服务项目。在当今由科技驱动的世界中,这种商业模式通过利用实时数据来提供创新服务…