操作系统(Operating System)专题篇——同步与互斥1

news2025/5/23 4:12:00

目录

0.前言

1.同步与互斥问题总览

2.生产者-消费者问题

2.1 单生产者-单消费者-多资源

2.2 多生产者-多消费者-单资源

2.3 吸烟者问题(单生产者-多消费者-单资源)

2.4 和尚打水问题(多生产者-多消费者-多资源)

3.读写者问题

3.1 读者优先

3.2 写者优先

3.3 过桥问题(双读者)


0.前言

本系列文章旨在记录操作系统的知识点,可用于期末复习,笔者理解尚浅,文中不正之处静待批正。专题篇为大题常考题型,必须要重点把握。

1.同步与互斥问题总览

我们主要讨论通过信号量的PV操作来实现同步与互斥,本篇主要关注生产者-消费者问题及变体读写者问题等。

对于互斥:

  • 主要通过互斥锁mutex来实现,初值为1
  • 不同的临界区资源要用不同的信号量
  • 临界区之前进行P操作,临界区之后进行V操作,必须成对出现

对于同步:

  • 主要通过同步信号量来实现,初值为0
  • 按照顺序来执行进程,先V后P
  • 同步一定在互斥之前

2.生产者-消费者问题

2.1 单生产者-单消费者-多资源

互斥:由于缓冲区为n,所以需要用互斥锁来实现同一进程对缓冲区的互斥访问,先P后V

同步:生产者生成完后发出已满的信号,然后再由消费者消费;同时消费者消费完后,发出已空的信号,再由生产者生产。因此先V后P

2.2 多生产者-多消费者-单资源

分析:由于有多个生产者和消费者,因此每一个生产者消费者都有自己的信号量。生产者接收盘子为空的信号,然后争夺使用权,并生产自己的水果。而消费者接收自己需要的水果信号,消费完后发出盘子为空的信号。因为缓冲区大小为1,已经实现了互斥,所以也可以不需要互斥锁

2.3 吸烟者问题(单生产者-多消费者-单资源)

分析:与2.2类似,吸烟者只需要等待自己所需的才材料的信号,而供应者需要轮流地提供材料。由于只有缓冲区可以视为1,因此也不需要互斥锁来维护缓冲区。

2.4 和尚打水问题(多生产者-多消费者-多资源)

初始化时:

sem empty = 10; //缓冲区大小,水缸还剩多少
sem full = 0; //实现同步
sem mutex1 = 1; //表示对井的互斥
sem mutex2 = 1; //表示对缸的互斥
sem count = 3; //桶的数量

分析:对于这种涉及变量较多的问题需要先理清执行过程,按照过程来书写。对于小和尚来说,先接收到水缸空了的信号,然后去拿桶,再去井中取水,取出水后需要将水倒入缸中,最后还桶并告诉老和尚水缸已满。对于老和尚来说,先接收到水缸已满的信号,然后去拿桶,再去缸中取水,最后还桶并告诉小和尚水缸空了。在整个过程中,需要对井、缸、桶实现互斥,保证只有一个进程在使用,然后通过空和满的信号来实现同步。要注意的是初始化时empty信号就等于缓冲区的大小。

3.读写者问题

问题分析:①写与读需要互斥;②写与写需要互斥;③读与读不需要互斥

3.1 读者优先

目前正在读,新的读会持续进入,写会饥饿

分析:如果有多个读进程,则第一个读进行上锁,后续的读可以连续进入,同时最后一个读进行解锁,保证了读者优先于写者。

3.2 写者优先

当有新的写存在,新的读不能进行读

分析:mutex1和mutex2实现读写进程对于自身的互斥。如果目前正在写,并且新的读和写同时到达,读写都会在semWait(writemutex)上等待,因此需要竞争进入,没有保证写优先

分析:仿照读者优先,在第一个写进程到达时拿到读的互斥锁,则后续的写会阻塞在外面,当最后一个写执行完后再释放锁。但是如果当前正在读,并且同时来一个写和读,第一个写和所有新的读都会在semwait(readmutex)上等待,需要竞争,依然没有保证写优先

(正解)分析:为了解决正在读情况下,新写和新读中新写无法优先的问题,让读先在z上排队,而写在readmutex排队,由于z的释放晚于readmutex,因此可以保证写优先。

有可能部分读者会认为z的引入是多余的,因此可以让readmutex位于mutex1里面,而mutex1就充当了z的作用,因此会写出下面的程序:

分析:如果进程的到达顺序是读-写-读,且第一个读正在readdata(),那么写进程会阻塞于semWait(writemutex),而第二个读会阻塞于semWait(readmutex)。此时就会发生死锁,因为第二个读已经拿到了mutex1,导致第一个读readdata()完成后会阻塞于semWait(mutex1)。

3.3 过桥问题(双读者)

问题一:有一座桥,东西走向,汽车可以从东往西走,也可以西往东走,桥上每次只允许朝一个方向走,请用信号量描述下列过程: 如果某一个方向的车占有桥,让这个方向的车优先过桥

分析:由于只有有一方的车占有桥就让这个方向的车优先通过,两个方向都不存在读与读的互斥,所以本题只存在读者,并且都在争夺对桥的使用权。其中mutex维护对于桥的互斥。

问题修改:让两个方向的车公平的过桥,即东西方向的车在同一个队列(信号量)上排队

分析:公平的过桥意思就是没有优先级,不存在某一方要让某一方,则只需要让两个方向的来车进行公平竞争即可。初始化queue=1

问题修改:在上述修改的基础上同时要满足如果east方向的车正在通行,又来一辆east方向的车,而第三辆是west方向的车,那么第二辆车可以在第一辆通行过程中加入

分析:与上一问稍微不同的是,上一问是一次只能通过一个车,且公平竞争,而这一问要求第一个竞争到桥的所有权的方向可以一直通车,而如果是1e,2w,3e的到达顺序,则会公平执行。因此只需要将释放queue信号的位置提前就可以实现。

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

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

相关文章

【SpringBoot:详解Bean装配】

&#x1f3e1;Java码农探花&#xff1a; &#x1f525; 推荐专栏&#xff1a;<springboot学习> &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、IoC容器的简介BeanFactory接口源码二、Bean装配扫描装配探索启动类条件装配自定义Bean总…

springboot 人大金仓 kingbase-备份还原,命令中带密码

命令带密码参考 Java代码实现国产人大金仓数据库备份还原需求-CSDN博客文章浏览阅读818次&#xff0c;点赞16次&#xff0c;收藏12次。本人在一次项目中&#xff0c;遇到了需要在系统管理中提供给用户备份还原系统数据的功能&#xff0c;由于项目特殊性&#xff0c;项目底层数…

如何使用电商接口获取商品信息,价格,主图?

1、什么是电商接口&#xff1f; 电商接口是指用于实现电商平台与其他系统之间进行数据交互和功能调的一组规范和方法。通过电商接口&#xff0c;可以实现商品信息的获取、订单管理、支付处理、物流跟踪等功能。 常见的电商接口包括&#xff1a; 商品接口&#xff1a;用于获取…

BLDC的机械角度、电角度与换相时间

6步换相梯形控制&#xff0c;6步一个周期定义为电角度360 总电角度 极对数 * 机械角度 机械角度是指360&#xff0c;一个圆周角&#xff1b; 电角度度指转子转动的角度&#xff0c;从一个N极到下一个N极是360。从N极只到 S极&#xff0c;则转子只运行了180。由于一个电机中通…

Python数据分析案例40——电商直播间成交金额预测

承接上一篇案例电商直播间提取的特征&#xff0c;进而做一篇机器学习的案例&#xff0c;来预测直播间的成交金额。 Python数据分析案例39——电商直播间评论可视化分析&#xff08;LDA&#xff09; 1. 引言 1.1 直播电商与传统电商的比较 直播电商作为一种新兴的电子商务模式…

本地web项目启起来后,无法在浏览器(chrome)看到源码,从而无法打断点;Framework Ignore list

问题描述 本地web项目启起来后&#xff0c;无法在浏览器(chrome)看到源码&#xff0c;从而无法打断点 其他浏览器没看&#xff0c;开发环境一致专注于chrome&#xff08;其余浏览器有测试同事提缺陷了&#xff0c;才会去看&#xff09;&#xff0c;其余浏览器有没有这个问题&…

B端:拖拽功能有哪些框架扩展,用起来爽歪歪。

B端系统拖拽交互功能是指在企业级系统中&#xff0c;用户可以通过拖拽元素来实现交互操作的功能。这种交互方式可以提高用户的操作效率和用户体验&#xff0c;常见的应用场景包括拖拽排序、拖拽调整大小、拖拽改变位置等。 在实现拖拽交互功能时&#xff0c;可以使用多种技术和…

必备工具!16.8k star 的项目!帮助你快速清理重复文件

大家的笔记本是不是都使用了好多年&#xff1f;是不是硬盘里的文件越来越多&#xff0c;尤其是经常有一些重复的文件散落在系统的各个角落&#xff0c;不好找&#xff0c;也很占据空间。今天就给大家介绍一款好用的开源工具&#xff0c;帮助你简单快速的清理电脑里的重复文件—…

Vue3+.NET6前后端分离式管理后台实战(十三)

1&#xff0c;Vue3.NET6前后端分离式管理后台实战&#xff08;十三&#xff09;已经在公众号发布有兴趣的可以关注一下&#xff01; 有兴趣的可以扫码关注&#xff01;

探索网络爬虫:技术演进与学习之路

网络爬虫及IP代理池 前言爬虫技术的演进最新的爬虫技术爬虫技术学习路线 前言 在信息时代&#xff0c;网络爬虫技术作为获取和处理网络数据的重要手段&#xff0c;已经成为数据科学、机器学习和许多商业应用的基石。从简单的HTML页面抓取到复杂的动态内容采集&#xff0c;爬虫…

Flex弹性布局详解

详解Flex弹性布局 1. 什么是Flex布局2. Flex布局核心概念1&#xff09;容器和属性定义2&#xff09;主轴和交叉轴定义3&#xff09;容器属性4&#xff09;项目属性 3. 优缺点 1. 什么是Flex布局 Flex全称为 “Flexible Box Layout”&#xff0c;即 “弹性盒布局”&#xff0c;旨…

Java应用CPU飙升和死锁排查实战教程

引言 在日常开发中&#xff0c;我们可能会遇到Java应用CPU飙升和死锁的问题。本文将通过实际案例&#xff0c;为大家介绍如何排查这些问题 Java应用CPU飙升和死锁排查步骤 先执行top命令&#xff0c;找到CPU占用比较高的进程再执行jstack 进程id > dump.txt找到进程中CPU…

软考127-上午题-【软件工程】-McCabe度量法

一、McCabe度量法 1-1、定义 McCabe 度量法是通过定义环路复杂度&#xff0c;建立程序复杂性的度量。 它基于一个程序模块的程序图中环路的个数。计算有向图G的环路复杂性的公式为&#xff1a; V(G) m - n 2 闭合区域 1 其中V(G)是有向图 G 中的环路个数&#xff0c;m 是…

[全网最全]2024MathorCup妈妈杯ABCD题成品论文33页+配套完整代码数据汇总

所有题目的每一小问解答&#xff08;含配套代码和数据&#xff09;都已经更新完毕&#xff0c;其中C题成品论文33页更新&#xff0c;B题论文更新&#xff0c;A题半成品论文21页完整解答代码数据。 &#xff08;完整版的资料放在文末了&#xff09; A题 移动通信网络中PCI规划问…

蓝桥杯嵌入式(G431)备赛笔记——第十一届第二场真题

关键代码&#xff1a;、 user.c: u32 adc_tick 0; // 定义一个无符号32位整型变量 adc_tick&#xff0c;用于记录上次ADC处理的时间戳 u32 r37_value 0; // 定义一个无符号32位整型变量 r37_value&#xff0c;用于存储ADC通道2的采样值 u32 r38_value 0; // 定义一个无符号…

AI常见关键术语

哈喽&#xff0c;大家好&#xff0c;我是小码哥&#xff0c;人工智能技术的快速发展带来了许多专业术语&#xff0c;这些词汇对于理解AI的工作原理和应用至关重要。以下是一些关键的AI术语&#xff0c;以及它们的专业解释和通俗总结。 一、核心概念 人工智能 (AI) 专业解释&am…

轻量带屏解决方案之恒玄芯片移植案例

本文章基于恒玄科技BES2600W芯片的欧智通 Multi-modal V200Z-R开发板 &#xff0c;进行轻量带屏开发板的标准移植&#xff0c;开发了智能开关面板样例&#xff0c;同时实现了ace_engine_lite、arkui_ui_lite、aafwk_lite、appexecfwk_lite、HDF等部件基于OpenHarmony LiteOS-M内…

AI预测体彩排3第3弹【2024年4月14日预测--第1套算法开始计算第3次测试】

今天咱们继续测试第1套算法和模型&#xff0c;今天是第3次测试&#xff0c;目前的测试只是为了记录和验证&#xff0c;不建议大家盲目跟买。我的目标仍旧是10次命中3-4次!~废话不多说了&#xff0c;直接上结果&#xff01; 2024年4月14日排3的七码预测结果如下 第一套&…

mybatis的一对多

业务&#xff1a;通常主表从表 查询&#xff0c;一对多关系&#xff0c;通常是先查主表&#xff0c;然后拿主表的 关联字段与从表关联。在代码中 通常用for 循环等方法给 从表的数据赋值&#xff0c;很麻烦&#xff0c;&#xff0c;&#xff0c;很麻烦。。。。 用mybatis的…

软考中级--网络工程师-计算机基础与理论第二节无线基础知识

IEEE802.11 规定了多种 WLAN 通信标准&#xff0c;其中&#xff08; &#xff09;与其他标准采用的频段不同&#xff0c;因而不能兼容。 A IEEE802.11a B IEEE802.11b C IEEE802.11g D IEEE802.11n 试题答案 正确答案&#xff1a; A 答案解析 IEEE 802.11a规定采用5GHz的 ISM频…