TYUT太原理工大学2022操作系统大题之PV操作

2023-10-18 02:30

本文主要是介绍TYUT太原理工大学2022操作系统大题之PV操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题型一:PV操作

前言:该题题目中会给出我们一个任务(通常可以分几步完成,每一步为一个进程),要求我们用PV操作实现该任务的同步问题,类似于这样:

0ffe2de916c64b81a373eb60d11617f4.png

首先让我们用一个简单的例子(生产者-消费者问题)来理解PV操作:

一个生产者,一个消费者,公用一个缓冲区:

该任务可分为两个部分(也就是两个进程):进程1——生产者生产一个产品放入缓冲区;

进程2——消费者从缓冲区拿走产品进行消费。我们就是要用PV操作实现进程1、2的同步。

让我们来看一下完整的代码一:

begin                    //begin-end相当于{-}semaphore s1=1;      //表示缓冲区是否为空,初值为1semaphore s2=0;      //表示缓冲区中是否为满,初值为0cobegin              //cobegin与coend作用是确保P生产(进程)与P消费(进程)同步进行process P生产    //用process定义进程beginLs:              //Ls意味L生产,下文还有Lx表示L消费生产一个产品;     //此处中文必须写,用来解释pv操作p(s1);           //s1=s1-1=0,意味着放入了产品使缓冲区不为空产品送往缓冲区;   //此处中文必须写,用来解释pv操作v(s2);           //s2=s2+1=1,意味着取出了产品使缓冲区为空goto Ls;          //Ls和goto Ls并用相当与while(true){ },使用它是为了确保p、v两个操作成对存在,避免发生中断endprocess P消费beginLx:从缓冲区取出一个产品;p(s2);消费该产品;v(s1);goto Lx;  endcoend
end

我们还可以用代码二来代替代码一,如下:

semaphore s1=1;
semaphore s2=0;main()
{
cobegin
shengchan();
xiaofei();
coend
}shengchan()
{
while(true){             //while(true){ },使用它是为了确保p、v两个操作成对存在,避免发生中断生产一个产品;     //此处中文必须写,用来解释pv操作p(s1);           //s1=s1-1=0,意味着放入了产品使缓冲区不为空产品送往缓冲区;   //此处中文必须写,用来解释pv操作v(s2);     }
}xiaofei()
{
while(true){从缓冲区取出一个产品;p(s2);消费该产品;v(s1);}
}

考试时我们用代码一。

有了“生产者-消费者”的铺垫我们来看一下文章最开始的3道例题,加深理解

桌子上有一只盘子,每次只能放入一个水果。爸爸专向盘中放苹果,妈妈专向盘中放橘子,女儿专吃盘中的苹果,儿子专吃盘中的橘子。试用PV操作实现父、母、儿、女进程的同步。

begin semaphore S1=1;//(盘中是否为空)semaphore S2=0; //(盘中是否有苹果)semaphore S3=0; //(盘中是否有橘子)cobegin    process P父beginLf:取一个苹果;P(S1); 放入苹果;V(S2);goto Lf;end    process P母beginLm:取一个橘子;P(S1); 放入橘子;V(S3);goto Lm; endprocess P儿 beginLs:P(S3); 从盘中取橘子;V(S1);    吃橘子;goto Ls;endprocess P女beginLd:P(S2);从盘中取苹果;V(S1);吃苹果;goto Ld;endcoend
end

2eefac9aec744ef2a8ace011a8214756.png

 320522c0f62e429cb10a94e577fcabee.png

 软件2019届真题:

91a4c01c22e34f60853b5da18cbfc8d3.png

 谢谢“碧桃和露”5月22号打赏给我的8毛钱

谢谢“qq_52937762”5月23号打赏给我的1.6元

这篇关于TYUT太原理工大学2022操作系统大题之PV操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/229602

相关文章

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员