操作系统基础:进程同步【上】

news2024/11/24 2:29:02

在这里插入图片描述

在这里插入图片描述

🌈个人主页:godspeed_lucip
🔥 系列专栏:OS从基础到进阶


  • 1 进程同步(上)
    • 1.1 进程同步与互斥
      • 1.1.1 进程同步
        • 1.1.1.1 必要性
        • 1.1.1.2 什么是进程同步
      • 1.1.2 进程互斥
        • 1.1.2.1 必要性
        • 1.1.2.2 什么是进程互斥
        • 1.1.2.3 进程互斥的逻辑过程
        • 1.1.2.4 实现进程互斥的原则
      • 1.1.3 总结
    • 1.2 进程互斥的软件实现方法
      • 1.2.1 总览
      • 1.2.2 单标志法
        • 1.2.2.1 算法思想
        • 1.2.2.2 实例
        • 1.2.2.3 缺点
      • 1.2.3 双标志先检查法
        • 1.2.3.1 算法思想
        • 1.2.3.2 实例
        • 1.2.3.3 缺点
      • 1.2.4 双标志后检查法
        • 1.2.4.1 算法思想
        • 1.2.4.2 实例
        • 1.2.4.3 缺点
      • 1.2.5 Peterson算法
        • 1.2.5.1 算法思想
        • 1.2.5.2 实例
        • 1.2.5.3 缺点
      • 1.2.6 总结
    • 1.3 进程互斥的硬件实现方法
      • 1.3.1 总览
      • 1.3.2 中断屏蔽方法
        • 1.3.2.1 算法思想
        • 1.3.2.2 实例
        • 1.3.2.3 缺点
      • 1.3.3 Test and Set指令(TSL)
        • 1.3.3.1 算法思想
        • 1.3.3.2 解释
        • 1.3.3.3 优缺点
      • 1.3.4 Swap指令(或称为exchange、XCHG)
        • 1.3.4.1 算法逻辑
        • 1.3.4.2 解释
        • 1.3.4.3 优缺点
      • 1.3.5 总结
    • 1.4 互斥锁
      • 1.4.1 解释
      • 1.4.2 注意
      • 1.4.3 缺点
      • 1.4.4 特性
  • 🕮 2 总结


1 进程同步(上)

1.1 进程同步与互斥

1.1.1 进程同步

1.1.1.1 必要性

进程具有异步性的特征,异步性是指各并发执行的进程以各自独立的、不可预知的速度向前推进,可能导致我们的程序不按期望的顺序前进,进而产生错误的结果。由此,操作系统引入了进程同步

1.1.1.2 什么是进程同步

可以理解为进程之间必须按照一定的先后顺序执行
image1

1.1.2 进程互斥

1.1.2.1 必要性

image2

1.1.2.2 什么是进程互斥

image3

1.1.2.3 进程互斥的逻辑过程

image4
注意:
image5

1.1.2.4 实现进程互斥的原则

image6

1.1.3 总结

image7

1.2 进程互斥的软件实现方法

1.2.1 总览

image1
image2

1.2.2 单标志法

1.2.2.1 算法思想

image3
背后的逻辑是谦让

1.2.2.2 实例

对于P0、P1进程,假设有这样一对执行代码
image4
则它们的执行过程为
image5

1.2.2.3 缺点

image6

1.2.3 双标志先检查法

1.2.3.1 算法思想

image7
它背后逻辑是表达意愿

1.2.3.2 实例

image8
则进程P1、P2在访问临界资源之前,会首先检查其他进程是否在使用(表达自己想使用的意愿),只有没有人在访问的时候才进行访问。

1.2.3.3 缺点

试想,当P0在执行到②时,P0的时间片被用完,P1执行⑤,发现此时没有进程在访问,于是继续执行。这样,就会造成同时访问临界资源的情况。
image9

1.2.4 双标志后检查法

1.2.4.1 算法思想

image10

1.2.4.2 实例

image11
P0、P1在使用进程时,首先表达自己想使用的意愿(将自己赋为true),即首先进行上锁,接着再检查是否有别的进程希望使用,如果没有那么自己就可以使用了,如果有那么就等待其他进程结束。

1.2.4.3 缺点

试想,假如按照①⑤②⑥的顺序执行,则P0、P1都想访问资源,造成的结果就是全部都在等对方访问结束,于是发生死锁,谁都访问不了。
image12

1.2.5 Peterson算法

1.2.5.1 算法思想

image13
进程在使用资源前,先表达自己想要使用的意思,接着再表示可以优先让其他进程使用

1.2.5.2 实例

image14
重在理解算法的思想。
根据Turn的值就可以判断出到底是哪个进程最后表达了谦让的意思

1.2.5.3 缺点

image15
试想,P0始终没有去访问资源,但是在该算法中,P0始终占用着处理机,使处理机处于”忙等待“的状态。

1.2.6 总结

image16

1.3 进程互斥的硬件实现方法

1.3.1 总览

image1

1.3.2 中断屏蔽方法

1.3.2.1 算法思想

image2

1.3.2.2 实例

image3

1.3.2.3 缺点

事实上,中断屏蔽只可以屏蔽一个处理机,而并不能影响其他处理机,所以如果其他处理机上有进程在访问临界资源就会出错。
image4

1.3.3 Test and Set指令(TSL)

1.3.3.1 算法思想

image5

1.3.3.2 解释

假设P0要进行访问操作。当Lock原来为False时,则说明没有进程在访问,此时P0可以访问。而当Lock为True时,说明此时有其他进程在访问,P0一直执行while代码段,且Lock一直被置为True,直到其他进程访问完毕并将Lock置为False,P0才可以跳出while循环进行访问。
image6

1.3.3.3 优缺点

image7

1.3.4 Swap指令(或称为exchange、XCHG)

1.3.4.1 算法逻辑

image8

1.3.4.2 解释

基本上与TSL算法的逻辑是一样的
image9

1.3.4.3 优缺点

与TSL一致。
image10

1.3.5 总结

image11

1.4 互斥锁

1.4.1 解释

image1

1.4.2 注意

image2
例如我们之前学习的使用一个while循环来实现加锁功能的代码就是自旋锁

1.4.3 缺点

image3

1.4.4 特性

image4

🕮 2 总结

操作系统,如默默守护的守夜者,无声地管理硬件与软件的交流,为计算机创造和谐秩序。

它是无形的引导者,让复杂的任务变得井然有序,为用户提供无忧体验。

操作系统的巧妙设计,让计算机变得更加智能高效,让人与科技之间的交流更加顺畅。

在每一次启动中,它如信任的伙伴,带领我们进入数字世界的奇妙旅程。

渴望挑战操作系统的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多操作系统的奇迹吧。我们推出了引领趋势的💻OS专栏:《OS从基础到进阶》 ,旨在深度探索OS的实际应用和创新。🌐🔍

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

RTC 滴答计时器

1. RTC 滴答计时器 1.1 寄存器配置 RTCCON RTC控制寄存器 [7:4] 0000 设置频率 [8] 1 使能滴答计时器 TICNT 32位滴答时间计数值。 滴答计时器是一个上行计数器。如果当前的滴答数达到这个值,滴答时间中断发生。 备注:该值必须大于3 周期 (n 1)/滴答时钟…

文件制作二维码的图文教学,多种格式都可以使用

现在我们经常会发现在扫描二维码的时候,可能一个二维码中会存在多个文件或者多个二维码中会显示不同的文件的,那么这些文件存入二维码中是用什么方法制作的呢? 文件二维码的制作方法其实很简单,只需要通过文件二维码生成器工具的…

这都2024年了 你还要多久才能领悟 LinkedList 源码

这都2024年了 你还要多久才能领悟 LinkedList 源码 文章目录 这都2024年了 你还要多久才能领悟 LinkedList 源码LinkedList 简介LinkedList 插入和删除元素的时间复杂度?LinkedList 为什么不能实现 RandomAccess 接口? LinkedList 源码分析初始化插入元素…

【数据结构之二叉树的构建和遍历】

数据结构学习笔记---009 数据结构之二叉树1、二叉树的概念和结构1.1、回顾二叉树的重要性质1.2、回顾二叉树的主要分类1.1、如何实现二叉树? 2、二叉树的实现2.1、二叉树的BinaryTree.h2.2、二叉树的BinaryTree.c2.2.1、二叉树的构建2.2.2、二叉树销毁2.2.3、二叉树…

RabbitMQ入门概念

目录 一、RabbitMQ入门 1.1 rabbitmq是啥? 1.2 应用场景 1.3 AMQP协议与RabbitMQ工作流程 1.4 Docker安装部署RabbitMQ 二、SpringBoot连接MQ配置 2.1 示例1 2.1 示例2 —— 发送实体 一、RabbitMQ入门 1.1 rabbitmq是啥? MQ(Message…

Hutool导入导出用法

整理了下Hutool导入导出的简单使用。 导入maven或jar包&#xff08;注意这里导入的poi只是为了优化样式&#xff09; <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --> <dependency><groupId>cn.hutool</groupId><artifactId&g…

Kube-Promethus配置Nacos监控

Kube-Promethus配置Nacos监控 前置&#xff1a;Kube-Promethus安装监控k8s集群 一.判断Nacos开启监控配置 首先通过集群内部任一节点访问Nacos的这个地址<NacosIP>:端口号/nacos/actuator/prometheus&#xff0c;查看是否能够获取监控数据。 如果没有数据则修改Nacos集群…

qt中使用mysql 数据库

QT 版本介绍 虽然版本是这个&#xff0c;但是工作目录确是&#xff1a; 下面陈述安装步骤 第一步&#xff1a; 就是安装MYSQL 数据库&#xff0c;在此不再赘述了&#xff0c;很多博主已经上传了。 第二步&#xff1a; 就是拷贝QT 对应mysql 的版本驱动到 QT 的编译器文件中…

基于人工智能的质量保证(QA)流程

AI模型质量保证需知 推出准确、可靠、公正的人工智能&#xff08;AI&#xff09;模型无疑是一项挑战。设法成功实施AI计划的企业很可能意识到&#xff0c;AI质量保证&#xff08;QA&#xff09;流程与传统QA流程迥然不同。 质量保证对于AI模型的准确性至关重要&#xff0c;不…

SD卡写保护无法格式化怎么办?

一般来说&#xff0c;写保护&#xff08;也称为只读&#xff09;是数据存储设备防止写入新数据或修改旧信息的能力。换句话说&#xff0c;您可以读取存储在磁盘上的信息&#xff0c;但是却不能删除、更改或复制它们&#xff0c;因为访问会被拒绝。那么SD卡有写保护怎么格式化呢…

【图像拼接 精读】Parallax-Tolerant Unsupervised Deep Image Stitching

【精读】Parallax-Tolerant Unsupervised Deep Image Stitching 在这篇论文中&#xff0c;"warp"&#xff08;变形&#xff09;和"composition"&#xff08;组合&#xff09;是两个关键的概念。"Warp"指的是图像变形的过程&#xff0c;用于调整…

【乳腺肿瘤诊断分类及预测】基于LVQNN学习向量量化神经网络

课题名称&#xff1a;基于LVQ神经网络的乳腺肿瘤诊断&#xff08;类型分类&#xff09; 版本日期&#xff1a;2023-03-10 运行方式: 直接运行0501_LVQ0501.m 文件即可 代码获取方式&#xff1a;私信博主或QQ&#xff1a;491052175 模型描述&#xff1a; 威斯康辛大学医学院…

NetCore实现输入用户名和密码后访问Swagger页面

1 原理说明 在后端编程时&#xff0c;通常使用swagger文档来呈现接口文档。为了接口的安全性&#xff0c;可通过输入用户名和密码的方式来进行验证。 这里用到了Basic认证方式。原理图如下&#xff1a; 步骤 1&#xff1a; 当请求的资源需要 B A S I C \textcolor{red}{BA…

力扣238. 除自身以外数组的乘积(前后缀和)

Problem: 238. 除自身以外数组的乘积 文章目录 题目描述思路复杂度Code 题目描述 思路 思路1&#xff1a; 1.先求取数组的包括当前下标值得前后缀乘积&#xff08;利用两个数组记录下来分别为leftProduct和rightProduct&#xff09; 2.当求取一个下标为i的数组中的元素&#x…

正则表达式补充以及sed

正则表达式&#xff1a; 下划线算 在单词里面 解释一下过程&#xff1a; 在第二行hello world当中&#xff0c;hello中的h 与后面第一个h相匹配&#xff0c;所以hello中的ello可以和abcde匹配 在world中&#xff0c;w先匹配h匹配不上&#xff0c;则在看0&#xff0c;r&#…

【Java 数据结构】LinkedList与链表

LinkedList与链表 1. ArrayList的缺陷2. 链表2.1 链表的概念及结构2.2 链表的实现 3. LinkedList的模拟实现4.LinkedList的使用4.1 什么是LinkedList4.2LinkedList的使用 5. ArrayList和LinkedList的区别 1. ArrayList的缺陷 上节课已经熟悉了ArrayList的使用&#xff0c;并且…

多头 eRCD(Multi-Headed eRCD)

&#x1f525;点击查看精选 CXL 系列文章&#x1f525; &#x1f525;点击进入【芯片设计验证】社区&#xff0c;查看更多精彩内容&#x1f525; &#x1f4e2; 声明&#xff1a; &#x1f96d; 作者主页&#xff1a;【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

在哪里申请SSL证书

其实只是单纯的申请SSL证书来说&#xff0c;渠道还是比较多的。只是需要格外注意在申请SSL证书的过程中&#xff0c;对于自身需求的认知。 首先最重要的是&#xff0c;该证书是否可信。就目前而言&#xff0c;非可信根的证书是无法与主流浏览器兼容的&#xff0c;会时常发生风险…

503 Service Temporarily Unavailable nginx 原因和解决办法

前言 HTTP 503 Service Temporarily Unavailable 错误通常表示服务器无法处理请求&#xff0c;可能是由于服务器过载、维护或其他临时性问题导致的。在 Nginx 中&#xff0c;这种错误通常与后端服务的可用性问题相关。以下是可能的原因和解决办法&#xff1a; 正文…

RTC实时时钟之读取时间

1. RTC 基本介绍 RTC(Real Time Clock) 即实时时钟&#xff0c;它是一个可以为系统提供精确的时间基准的元器件&#xff0c;RTC一般采用精度较高的晶振作为时钟源&#xff0c;有些RTC为了在主电源掉电时还可以工作&#xff0c;需要外加电池供电 2. RTC 控制器 2.1 RTC的特点是:…