【一篇搞懂】操作系统期末大题:进程同步与互斥 PV操作

文章目录

  • 一、前言🚀🚀🚀
  • 二、正文:☀️☀️☀️
      • 题型一:利用信号量实现前驱关系
      • 题型二:利用信号量实现资源同步与互斥


一、前言🚀🚀🚀

在这里插入图片描述


本文简介:这是一篇基于b站up主chenchen的小马的一篇个人笔记,视频链接https://www.bilibili.com/video/BV1XG4y1V7M9/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=12384b61e0b367d92ce270fa4eb8fb68! 讲的真的很通俗易懂,所以我便做了如下的笔记。


二、正文:☀️☀️☀️

题型一:利用信号量实现前驱关系

  给出下图,让你利用信号量实现前驱关系

在这里插入图片描述

解题方法:
①有n个箭头,就设n个信号量
②从根节点开始
③有n个前驱节点,就写n个wait(),有n个后继节点,就写n个signal()

#代码块
Semaphore a,b,c,d,e,f,g = 0,0,0,0,0,0,0  # 声明信号量beginparbeginbegin S1;signal(a);signal(b);end;begin wait(a);S2;signal(c);signal(d);end;begin wait(b);S3;signal(e);end;begin wait(c);S4;signal(f);end;begin wait(d);S5;signal(g);end;begin wait(e);wait(f);wait(g);S6;end;parendend

  

题型二:利用信号量实现资源同步与互斥

题:输入进程Input和计算进程Compute共享大小为n的缓冲区,输入进程负责读入数据,并把输入数据放到缓冲区中,计算进程负责从缓冲区中取出数据进行计算,请用信号量机制描述上述进程间的同步关系。
解题步骤:
①有几类进程?(1类:竞争关系;多类:竞争和协作关系)
②确定临界资源
互斥信号量mutex初值为1,资源信号量初值看题目(大小为n的缓冲区)
④打框架,每个进程做什么事
⑤补充P、V操作(先申请资源信号量,再申请互斥信号量。

解:①2类进程:输入Input、计算compute
②缓冲区  ③mutex=1;empty=n;full=0;
# 代码块
Semaphore mutex=1;empty=n;full=0;parbeginInput(){while(true){wait(empty);     # 先申请资源信号量wait(mutex);     # 后申请互斥信号量读数据放缓冲区     # 访问临界资源signal(mutex);signal(full);}}compute(){while(true){wait(full); wait(mutex);取数据进行计算     # 访问临界资源signal(mutex);signal(empty);}}parend

注意: 上面代码中,Input()函数中:刚开始wait(empty); 先申请空的缓冲区后会变成满的,所以释放的时候是释放signal(full);
第二个函数compute()同理,先申请full(这里已经是满的缓冲区),然后完了再释放signal(empty)。

  
  
  
Alt

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

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

相关文章

无人机远程控制:北斗短报文技术详解

无人机(UAV)技术的快速发展和应用,使得远程控制成为了一项关键技术。无人机远程控制涉及无线通信、数据处理等多个方面,其中北斗短报文技术以其独特的优势,在无人机远程控制领域发挥着重要作用。本文将详细解析无人机远…

2024-06-26 base SAS programming 学习笔记6(proc report)

proc report可以生成报表,基本格式: proc report data options; (options 可以是windows/WD表示将结果输出至单独的报表窗口,或者nowindows/nowd将结果输出至HTML结果窗口) column variables ;(筛选待输出的变量,变量名与变量名之…

09_计算机网络模型

目录 OSI/RM七层模型 OSI/RM七层模型 各层介绍及硬件设备 传输介质 TCP/IP协议簇 网络层协议 传输层协议 应用层协议 完整URL的组成 IP地址表示与计算 分类地址格式 子网划分和超网聚合 无分类编址 特殊含义的IP地址 IPv6协议 过渡技术 OSI/RM七层模型 OSI/RM七…

区间动态规划——最长回文子序列长度(C++)

把夜熬成粥,然后喝了它。 ——2024年7月1日 书接上回:区间动态规划——最长回文子串(C)-CSDN博客,大家有想到解决办法吗? 题目描述 给定一个字符串s(s仅由数字和英文大小写字母组成&#xff0…

微积分-导数3(微分法则)

常见函数的导数 常量函数的导数 d d x ( c ) 0 \frac{d}{dx}(c) 0 dxd​(c)0 常量函数的图像是一条水平线 y c y c yc,它的斜率为0,所以我们必须有 f ′ ( x ) 0 f(x) 0 f′(x)0。从导数的定义来看,证明也很简单: f ′ …

QT拖放事件之三:自定义拖放操作-利用QDrag来拖动完成数据的传输

1、运行效果 1)Qt::MoveAction 2)Qt::CopyAction 2、源码 #include "Widget.h" #include "ui_Widget.h" #include "common.h"

二级建造师(建筑工程专业)考试题库,高效备考!!!

16.在施工合同履行期间发生的变更事项中,属于工程变更的是()。 A.质量要求变更 B.分包单位变更 C.合同价款变更 D.相关法规变更 答案:A 解析:工程变更一般是指在工程施工过程中,根据合同约定对施工的…

恭贺甘露海首届道教南宗养生论坛暨天台山第十届道医大会圆满成功

6月13日,首届中国道教南宗养生论坛暨天台山第十届道医学术交流大会在浙江新昌重阳宫千人会场隆重开幕。 本次大会主办单位:天台山桐柏宫 中国民间中医医药研究开发协会道医学分会, 承办单位:新昌县重阳宫 ,协办单位&…

网络基础:静态路由

静态路由是一种由网络管理员手动配置的路由方式,用于在网络设备(如路由器或交换机)之间传递数据包。与动态路由不同,静态路由不会根据网络状态的变化自动调整。 不同厂商的网络设备在静态路由的配置上有些许差异;下面…

网络构建关键技术_2.IPv4与IPv6融合组网技术

互联网数字分配机构(IANA)在2016年已向国际互联网工程任务组(IETF)提出建议,要求新制定的国际互联网标准只支持IPv6,不再兼容IPv4。目前,IPv6已经成为唯一公认的下一代互联网商用解决方案&#…

安卓开发app-基础的java项目构建补充知识

安卓开发app-基础的java项目构建补充知识!上一次分享了基础的项目构建,但是还遗漏了一些基础的内容。今天补充完整。 首先,是关于项目的一些配置文件的信息。 第一个配置文件:{setting.gradle} 国内阿里云仓库地址信息&#xff1…

定制型汽车传感器在汽车中的应用

定制型汽车霍尔传感器在汽车中的应用及功能 曲轴和凸轮轴位置传感器: 这些传感器用于监测发动机的曲轴和凸轮轴的位置,帮助发动机管理系统精确控制点火时机和燃油喷射,提高发动机效率。 变速器控制系统: 在自动变速器中&#xf…

Linux虚拟串口设置

VSPD虚拟串口软件安装及使用 一、软件安装 1、Configure Virtual Serial Port Driver(VSPD) 1.1 首先下载 Configure Virtual Serial Port Driver(VSPD) 软件 链接:https://pan.baidu.com/s/11aGc2aHGUew5QZ0XhaWXJw 提取码:rmd7 1.2 安装时注意将…

局域网必备文件传输神器,吾爱再出精品,支持电脑、手机无缝对接!

今天给大家带来的不是一般的干货,而是一款让阿星我爱不释手的局域网文件传输神器,而且是吾爱大佬出品。无论是工作还是生活,它都能给你带来极大的便利。这年头,谁还没个跨设备传输文件的需求呢? 手机、电脑、平板&…

江大白 | 何凯明入职 MIT,首次带队提出Diffusion Loss,扩散模型思想提升生成速度和效果 !

本文来源公众号“江大白”,仅用于学术分享,侵权删,干货满满。 原文链接:何凯明入职 MIT,首次带队提出Diffusion Loss,扩散模型思想提升生成速度和效果 ! 导读 在图像生成领域中,作…

使用 PyQt5 创建一个数字时钟

使用 PyQt5 创建一个数字时钟 效果代码解析定义时钟类初始化界面显示时间 完整代码 在这篇博客中,我们将使用 PyQt5 创建一个简单的数字时钟。 效果 代码解析 定义时钟类 class ClockWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTit…

对数函数转换公式

对数函数换底公式. 1. 2. 3. 以上公式可以由以下公式推导而来, 1. 2. 3. 4.

zabbix监控进阶:如何分时段设置不同告警阈值(多阈值告警)

作者 乐维社区(forum.lwops.cn)乐乐 在生产环境中,企业的业务系统状态并不是一成不变的。在业务高峰时段,如节假日、促销活动或特定时间段,系统负载和用户访问量会大幅增加,此时可能需要设置更高的告警阈值…

Spark学习3.0

目录 10.3.4 Spark运行原理 1.设计背景 2.RDD概念 3.RDD特性 4.RDD之间的依赖关系 窄依赖和宽依赖 5.Stage的划分 Stage的类型包括两种:ShuffleMapStage和ResultStage 6.RDD运行过程 10.3.4 Spark运行原理 1.设计背景 许多 迭代式算法(比如机器学习、图…

mybatis#号和$区别

在MyBatis中,#{}和${}都是用于实现动态SQL的占位符,但它们在使用场景和安全性上有明显的区别: 用途区别: #{}主要用于传递接口传输过来的具体数据,如参数值,它可以防止SQL注入,因为MyBatis会…