操作系统期末复习题

进程同步(P、V操作)

  1. 桌上有一空盘,允许存放一只水果。爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步。

答:爸爸、儿子、女儿共用一个盘子,盘中一次只能放一个水果。当盘子为空时,爸爸可将一个水果放入果盘中。若放入果盘中的是桔子,则允许儿子吃,女儿必须等待;若放入果盘中的是苹果,则允许女儿吃,儿子必须等待。本题实际上是生产者-消费者问题的一种变形。这里,生产者放入缓冲区的产品有两类,消费者也有两类,每类消费者只消费其中固定的一类产品。

father()

{

while(1)

{

P(S);

将水果放入盘中;

if(放入的是桔子)V(So);

elseV(Sa);

}

}

son(){

while(1)

{

P(So);

从盘中取出桔子;

V(S);

吃桔子;

}

daughter()

{

while(1)

{

P(Sa);

从盘中取出苹果;

V(S);

 吃苹果;

} 

  1. PV操作题。一批生产者生产特定结构的产品,并将其放入具有n个缓冲区的环状缓冲池,即若当前使用的是n-1号缓冲区,下一个可用的就是0号缓冲区。生产者一次只能生产并放入一个产品,消费者一次只能取出并消费一个产品,且生产者和消费者、消费者之间、生产者之间均对缓冲池互斥访问。请使用P、V原语实现生产者与消费者之间的协调操作,说明每个信号量的含义、初值和值的范围。

答:在这个问题中,生产者和消费者使用固定的有限数目的n个缓冲区来进行任意数目消息的传递,依据题意设置如下信号量,

semaphore mutex =   1   , // 互斥信号量

semaphore  full = 0, // 可用的满资源信号量

semaphore  empty = n, // 可用的空资源信号量

buffType buffer[n];

生产者进程: 消费者进程:

Producer(){ Consumer( ) {

       bufType *next, *in; bufType *next, *out;

      while(TRUE) { while (TRUE) {

      produceItem(next); P(full)    ;

      P(empty);              P(mutex);

      P(mutex);                copyBuffer(out, next);

      copyBuffer(next, in);     out=(out+1) mod n;

      in=(in +1) mod n;          V(mutex);    

      V(mutex);              V(empty);    

      V(full);                    consumeItem(next);

   } }

}

  1. 有一座东西方向的独木桥,同一方向的行人可连续过桥。当某一方向有行人过桥时,另一方向行人必须等待。桥上没有行人过桥时,任何一端的行人均可上桥。请用P、V操作来实现东西两端人过桥问题。    

答:依据题意设置如下信号量

int countA = 0, countB = 0;

semaphore mutex =  1  , xA = 1, xB = 1;

east_west: west_east:

    Repeat Repeat

        P(xA) P(xB);

        countA++; countB++;

        if (countA==1) P(mutex); if (countB==1) P(mutex);

        V(xA); V(xB);

        //过桥 //过桥

        P(xA); P(xB);

        countA--;  countB--;

        if (countA==0) V(mutex); if (countB==0) V(mutex);

        V(xA); V(xB)

  1. 银行提供一个服务窗口和10个供顾客等待的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾客,并为其服务

答:依据题意设置如下信号量

semaphore mutex = 1;              //互斥使用取号机的信号量

semaphore empty =   10  ;         //空座位的数量信号量

semaphore full = 0;                //已占座位的数量信号量

semaphore service = 0;             //等待叫号信号量

void customer_i(){ void server(){

    P(empty); while(1){

    P(mutex); P(full)

    //取号 V(serveice)

    V(mutex); //服务

    V(full); }

    P(service); }

    V(empty);

    //获取服务

}

  1. 在4x100米接力赛中,4个运动员之间存在如下关系,运动员1跑到终点把接力棒交给运动员2;运动员2一开始处于等待状态,在接到运动员1的棒后才往前跑,跑到终点把接力棒交给运动员3;同理,运动员3跑到终点把接力棒交给运动员4;运动员4跑完最后100米。试用信号量机制进行描述这个过程。

答:根据题意,设P1、P2、P3和P4分别为4个运动员的进程,他们对应的信号量分别为S1、S2、S3和S4,初值为S1= 1 ,S2=S3=S4=0

P1: P2: P3: P4

P(S1) P(S2) P(S3) P(S4)

起跑,前进100米 起跑,前进100米 起跑,前进100米 起跑,前进100米

V(S2) V(S3) V(S4) 到达终点

  1. 桌子上有一只盘子,盘子只能放一个水果。爸爸专门向盘子里放香蕉,妈妈专门向盘子放苹果,一个儿子专等吃盘中的香蕉,女儿专等吃盘中的苹果。请用PV操作实现他们之间的同步机制。

解:信号量S1表示盘子临界资源,初值为1;信号量S2和S3分别表示香蕉和苹果的信号量,初值均为0;

爸爸: 妈妈: 儿子: 女儿

Repeat repeat repeat repeat

取一个香蕉 取一个苹果 P(S2) P(S3)

P(S1) P(S1) 从盘中取香蕉 从盘中取苹果

香蕉放进盘子 苹果放进盘子 V(S1) V(S1)

V(S2) V(S3) 吃香蕉 吃苹果

Until false Until false Until false Until false

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

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

相关文章

nginx源码分析-1

使用gdb查看函数上下文: gdb attach nginx的work线程 监听端口状态时: 断点打在ngx_http_process_request 并通过浏览器触发请求时:

剑指offer题解合集——Week2day2

文章目录 剑指offerWeek2周二:剪绳子AC代码思路: 剑指offerWeek2 周二:剪绳子 题目链接:剪绳子 给你一根长度为 n绳子,请把绳子剪成 m段(m、n都是整数,2≤n≤58 并且 m≥2)。每段…

Unity-序列化和反序列化

序列化是指把对象转换为字节序列的过程,而反序列化是指把字节序列恢复为对象的过程。序列化最主要的用途就是传递对象和保存对象。 在Unity中保存和加载、prefab、scene、Inspector窗口、实例化预制体等都使用了序列化与反序列化。 1 可序列化类型 1> 自定义的具有Serial…

简易考试系统第1关:简易考试系统之用户注册

任务描述 本关任务:实现简易考试系统中新用户注册的功能。 编程要求 仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中实现简易考试系统中新用户注册的功能,具体要求如下: User.java 提供了用户的基本信息&#xff0…

在linux下添加中文输入

一共三个步骤,过程中有参考Linux最详细且好用的安装中文输入法教程 - 知乎 1. 打开左侧的software下载安装Fcitx 2. 点击左下侧搜索language support,把keyboard input method system改成Fcitx 4 3. input source把中文放在最前面 成功&#xff0…

基于openGauss5.0.0全密态数据库等值查询小案例

基于openGauss5.0.0全密态数据库等值查询小案例 一、全密态数据库简介二、环境说明三、测试步骤四、使用约束 一、全密态数据库简介 价值体现: 密态数据库意在解决数据全生命周期的隐私保护问题,使得系统无论在何种业务场景和环境下,数据在传…

Web 3.0 是什么

第 1 章 明晰Web 3.0 从本章开始,就进入了本书的第一篇章,入门Web3.0,在第一篇章中将会让读者对Web3.0有一个整体的认知,为学习后面的章节打下基础。 在本章中,主要介绍的是Web的发展历史,包涵Web1.0、Web2.0、Web3.0的发展过程,以及资本为什么需要入场Web3.0、Web3.0…

遗传算法的应用——求解一元函数的极值

遗传算法的应用——求解一元函数的极值 1 基本概念2 预备知识3.1 模拟二进制转化为十进制的方法3.2 轮盘赌选择算法 3 问题4 Matlab代码5 运行效果6 总结 1 基本概念 遗传算法(Genetic Algorithm,GA)是模拟生物在自然环境中遗传和进化过程从而形成的随机全局搜索和优化方法&am…

1. pytorch mnist 手写数字识别

文章目录 一、数据集介绍1.1、简介1.2 详细介绍1、数据量2、标注量3. 标注类别4.数据下载5.数据集解读 二、读取、加载数据集1、pytorch 自带库函数2、通过重构Dataset类读取特定的MNIST数据或者制作自己的MNIST数据集 三、模型构建四、 runtraintest评估模型的性能检查点的持续…

java面试题19

什么是Java中的内存管理(Memory Management)?它有什么作用? 答案:内存管理是操作系统或虚拟机对计算机内存进行管理的机制,用于分配、释放和回收内存资源。在Java中,内存管理可以通过Java虚拟机…

Postman接口测试(附教程)

前言 之前还没实际做过接口测试的时候呢,对接口测试这个概念比较渺茫,只能靠百度,查看各种接口实例,然后在工作中也没用上,现在呢是各种各样的接口都丢过来…

MAC 安装nginx

使用Homebrew方式进行安装 步骤: 1、更新 Homebrew brew update 2、下载并安装 Nginx brew install nginx 3、查看 nginx 配置信息 brew info nginx zhanghuaBreeze ~ % brew info nginx // 版本信息 > nginx: stable 1.25.1 (bottled), HEAD HTTP(S) se…

2024,智能汽车走出独立曲线

文|刘俊宏 新能源汽车正在带领中国车市走向新的高峰。 在2023年,新能源汽车的增速显著超越整体车市。据中汽协预测,2023年,汽车总销量有望突破3000万辆,同比增长11.7%。其中,乘用车预计达到2600万辆&…

Web(10)XSS漏洞

XSS跨站脚本攻击 XSS是什么 XSS(cross-site-scripting) 即是跨站脚本攻击,是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了 HTML 以及用户端…

TypeScript进阶:一文讲清 TypeScript 的 Omit 和 Exclude 使用方式与功能对比

背景 TypeScript 为了开发者提供了基础数据类型, 同时也允许开发者使用 interface、type 等指令自定义复杂结构类型。与编程变量类似,开发者不能无节制的新增类型,类型的整体集中管理是降低维护成本的重要手段。 对于更多复杂的类型&#x…

一条查询SQL是如何执行的?更新、新增、删除呢?

你好,我是田哥 本文共14629字,读完预计需要37分钟,建议先收藏。 大部分朋友估计都只知道写sql然后执行,但是并不知道MySQL背后到底是怎么实现的。 八股文中也有这么一道题:在MySQL中,一条SQL到底是如何执行…

YCSB 测试表预分区

最近使用 YCSB 测试时&#xff0c;一直使用如下方法创建预分区&#xff1a; TABLE_NAME"usertable" REGIN_SPLITS$((510-1)) cat << EOF | sudo -u hbase hbase shell create ${TABLE_NAME}, cf, {SPLITS > (1..${REGIN_SPLITS}).map {|i| "user#{100…

uniapp中使用axios、uniapp中封装axios

根据官方文档&#xff0c;我们知道axios支持nodejs、浏览器环境&#xff0c;但不支持uniapp、小程序&#xff0c;所以要想在uniapp中使用axios就要自定义实现。axios文档对自定义实现&#xff0c;作了说明。 // adapter allows custom handling of requests which makes testi…

AutoSAR(基础入门篇)2.1Autosar架构中的AppL

目录 一、Autosar中APPL概述 1、AppL的内容 2、汽车顶灯示例 3、SWC的通信

【记录问题排查系列】记录CPU飙高问题排查过程篇(1)

CPU飙高问题排查 ✔️问题排查与解决✔️总结与思考 &#x1f341;前段时间我们新上了一个新的应用&#xff0c;因为流量一直不大&#xff0c;集群OPS大概只有5左右&#xff0c;写接口的t在30ms左右。 因为最近接入了新的业务&#xff0c;业务方给出的数据是日常QPS可以达到20…