操作系统——进程同步

news2024/12/23 1:22:23

(一)简答题


1.什么是临界资源?什么是临界区?

答:临界资源是指每次仅允许一个进程访问的资源。属于临界资源有硬件打印机、磁带机等,软件在消息缓冲队列、变量、数组、缓冲区等。
(2)不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。每个进程中访问临界资源的那段代码称为临界区


2.同步机制应遵循的准则有哪些?

答:

同步机制应遵循的四个准则是:

(1) 空闲让进:当无进程处于临界区时,相应的临界资源处于空闲状态,因而应允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用资源。

(2) 忙则等待:当已有进程进入临界区时,表示相应的临界资源正被访问,因而所 有其它试图进入相关临界区的进程必须等待,以保证诸进程互斥访问临界资源。

(3) 有限等待:对要求访问临界资源的进程,应保证该进程能在有限的时间内进入 自己的临界区,以免陷入“永远等待”状态。

(4) 让权等待:当进程不能进入临界区时,应立即释放处理器,以免陷入“忙等”状态。


3.为什么各进程对临界资源的访问必须互斥?

答:  临界资源本身的特性决定了它们只能被诸进程互斥地访问,如果并发执行的多个进程同时访问临界资源,将会造成系统的混乱或程序执行结果的不确定性,这样,用户得到的便可能是不希望得到的、或者是不正确的处理结果。如多个用户同时使用同一台打印机,将使他们的输出结果交织在一起,而难于区分;又如两个用户使用程序段:
mov ax.(counter)
inc ax
mov (counter),ax
对初值为0的共享变量counter 进行计数(加1)操作,则最终counter的值可能是正确的结果2,也可能是错误的结果1,即计算结果出现了不确定性。所以,诸进程对临界资源的访问必须互斥地进行。


4.如何保证各进程互斥地访问临界资源?

答:

        为了互斥地访问临界资源,系统必须保证进程互斥地进入临界区。为此,必须在临界区前增加一段称作进入区的代码,以检查是否有其他进程已进入临界区使用临界资源。若有,则进程必须等待:否则,允许进程进入临界区,同时设置标志表示有进程正在临界区内。同样,在临界区后必须增加一段称作退出区的代码,用于将已有进程进入临界区访问临界资源的标志,改为无进程进入临界区使用临界资源。进入区、退出区具体可用多种同步机制实现,如锁、信号量机制等。


5.何谓“忙等”?它有什么缺点?

答:

        所谓“忙等”是指“不让权”的等待,即进程因某事件的发生而无法继续执行时,它仍占有 CPU,并通过不断地执行植环画试相令来等待该事件的完成.
        “忙等”的主要缺点是浪费 CPU的时间,另外,它还可能引起预料不到的后果。例如考虑某个采取高优先权优先调度原则的系统,目前有两个进程 A 和B共享某个临界资源,A的优先权较高,B的优先权较低,且B已处于临界区内,而A欲进入自己的临界区,则A、B都不可能继续向前推进,陷入“死等”状态。


6.试述采用Peterson算法实现临界区互斥的原理。

答:

        Peterson算法是两个进程间的经典解决方案,用于实现临界区的互斥。该算法基于两个进程之间的协同工作,确保每次只有一个进程可以进入临界区。

以下是Peterson算法的基本原理:

  1. 两个标志位:每个进程都有一个标志位,表示其是否希望进入临界区。例如,对于两个进程P0和P1,有标志位flag[0]和flag[1]。

  2. 轮到谁:一个公共的变量 turn 用于表示哪个进程的轮次进入临界区。

  3. 算法步骤

    • 当一个进程(例如P0)希望进入临界区时,它首先将其标志位设置为true,表示它希望进入临界区。
    • 同时,它将 turn 设置为另一个进程的标号(在这里是1,表示P1)。
    • 然后它会检查另一个进程是否也想进入临界区(即flag[1]是否为true),以及 turn 是否指向它自己。只有当另一个进程不希望进入临界区,或者虽然另一个进程也想进入但 turn 指向自己时,该进程才会进入临界区。
    • 完成临界区的操作后,该进程将其标志位设置为false,表示它已经退出了临界区。
  4. 互斥性:由于 turn 变量和 flag 数组,任何时候只能有一个进程进入其临界区。

  5. 空闲让权:如果一个进程不想进入临界区(其标志位为false),另一个进程可以自由地进入其临界区。

  6. 公平性:由于 turn 变量,算法确保没有进程会因连续进入临界区而饿死。

 


7.哪些硬件方法可以解决进程互斥问题?简述它们的用法。

答:

1)关中断:访问临界区时关闭中断。
2)TS(Test-and-Set):TS指令为每个临界区加一个布尔变量,每次进入临界区都必须使用TS指令测试变量。
3)swap指令:使用swap指令为每个进程设置一个局部变量key,使用swap指令交换key的值与临界资源锁的值,判断是否有进程正在访问。

8.如果用于进程同步的信号量的P、V操作不用原语实现,则会产生什么结果?举例说明。

答:如果用于进程同步的信号量的P(Proberen,尝试)和V(Verhogen,增加)操作不用原语(即原子操作)实现,它们就可能会被中断,从而导致竞态条件(Race Condition)。这可能会导致多个进程在不应该的时候同时进入临界区,从而破坏数据的一致性和完整性。


9.AND信号量机制的基本思想是什么?它能解决什么问题?

答:AND同步机制的基本思想是,将进程在整个运行过程中所需要的所有临界资源一次性全部分配给进程,待该进程使用完后再一起释放。只要尚有一个资源未能分配给该进程,其他所有可能为之分配的资源也不分配给它。亦即,对若干个临界资源的分配采取原子操作方式,要么全部分配到进程,要么一个也不分配。它能解决的问题:避免死锁的发生。


10.利用信号量机制实现进程互斥时,针对互斥信号量的wait()和signal()操作为什么要成出现?

答:

        利用信号量机制实现进程互斥时,针对互斥信号量的wait()signal()操作需要成对出现是为了确保每当一个进程进入临界区时,其他进程不能同时进入。这对于保护临界资源和维护数据的一致性至关重要。

11.什么是管程?它有哪些特性?

答:

        管程,是由局部于自己的若干公共变量及其说明和所有访问这些公共变量的过程所组成的软件模块。

具有以下特性:

•共享性

•安全性

•互斥性

12.试简述管程中条件变量的含义与作用。

答:

管程(Monitor)是一种同步原语,用于提供对临界资源的受控访问,并保证同一时刻只有一个进程或线程可以执行管程中的某一过程。而在管程中,条件变量是一个特别重要的组件,用于在某些条件下挂起和恢复进程的执行。

条件变量的含义:

  1. 条件:条件变量代表了一种或多种特定条件。例如,一个表示“缓冲区已满”的条件或“队列为空”的条件。

  2. 变量:这并不是传统意义上的变量。它不存储数据,而是提供了两个操作:wait()signal()(有时也有 broadcast() 或其他操作,具体取决于实现)。

条件变量的作用:

  1. 挂起进程:当进程发现某个条件不满足时(例如,消费者进程发现缓冲区为空),它可以使用条件变量的 wait() 操作来将自己挂起。

  2. 唤醒进程:当某个条件从不满足变为满足时(例如,生产者进程在空的缓冲区中添加了一个项目),使用条件变量的 signal() 操作可以唤醒等待该条件的进程。

  3. 避免忙等:而不是让进程持续检查某个条件是否满足(这会浪费CPU时间),进程可以简单地等待直到条件变得满足。这可以提高效率并减少资源浪费。

  4. 提供更细粒度的同步:与使用互斥量或信号量进行粗粒度同步相比,条件变量允许进程在更具体、更细粒度的条件下同步。这提供了更多的灵活性和效率


(二)计算题


13.若信号量的初值为2,当前值为-1,则表示有多少个等待进程?请分析。


14.有m个进程共享同一临界资源,若使用信号量机制实现对某个临界资源的互斥访间请求出信号量的变化范围。


15.若有4个进程共享同一程序段,而且每次最多允许3个进程进入该程序段,则信号量的变化范围是什么?


(三)综合应用题


16.3个进程P、P2、P3互斥地使用一个包含N(N>0)个单元的缓冲区。P1每次用produce()生成一个正整数,并用put()将其送入缓冲区的某一空单元中;P2每次用gem从该缓冲区中取出一个奇数,并用countodd()统计奇数的个数;P3每次用geteven()从该缓冲区取出一个偶数,并用counteven()统计偶数的个数。请用信号量机制实现这3个进程的同步轮活动,并说明所定义的信号量的含义。要求用伪代码描述。

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

cobegin{
process顾客i{
从取号机上获得一个号码;
等待叫号;

获得服务;

}

process 营业员{

while(TRUE){

叫号;

为顾客服务;

       }

  }

}coend

请添加必要的信号量和P、V操作或wait()/signal()操作,实现上述过程中互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。

18.如图4-3所示,有1个计算进程和1个打印进程,它们共享一个单缓冲区,计算进程不断计算出一个整型结果,并将它放入单缓冲区中;打印进程则负责从单缓冲区中取出每个结果并进行打印。请用信号量机制来实现它们的同步关系。
 
图4-3共享单缓冲区的计算进程和打印进程
 



19.有3个进程P1、P2、P协作解决文件打印问题。P,将文件记录从磁盘读人内存的缓冲区1,每执行一次读一个记录;P将缓冲区1中的内容复制到缓冲区2中,每执行一次复制一个记录;P将缓冲区2中的内容打印出来,每执行一次打印一个记录。缓冲区的大小与记录大小一样。请用信号量来保证文件的正确打印。


20.桌上有一个能盛得下5个水果的空盘子。爸爸不停地向盘中放苹果和橘子,儿子不停地从盘中取出橘子享用,女儿不停地从盘中取出苹果享用。规定3人不能同时向(从)盘子中放(取)水果。试用信号量机制来实现爸爸、儿子和女儿这3个“循环进程”之间的同步。

21.试用记录型信号量写出一个不会死锁的哲学家进餐问题的算法。
 

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

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

相关文章

CEC2013(MATLAB):狐猴优化算法(Lemurs Optimizer,LO)求解CEC2013(提供MATLAB代码及参考文献)

一、狐猴优化算法 狐猴优化算法(Lemurs Optimizer,LO)由Ammar Kamal Abasi等人于2022年提出,该算法模拟狐猴的跳跃和跳舞行为,具有结构简单,思路新颖,搜索速度快等优势。狐猴优化算法&#xff…

Java身份证OCR识别 - 阿里云API【识别准确率超过99%】

1. 阿里云API市场 https://market.aliyun.com/products/57124001/cmapi00063618.html?spm5176.28261954.J_7341193060.41.60e52f3drduOTh&scm20140722.S_market%40%40API%E5%B8%82%E5%9C%BA%40%40cmapi00063618._.ID_market%40%40API%E5%B8%82%E5%9C%BA%40%40cmapi0006361…

AI向量数据库

矢量数据库是一种将数据存储为高维向量的数据库,高维向量是特征或属性的数学表示。 每个向量都有一定数量的维度,范围从几十到几千不等,具体取决于数据的复杂性和粒度。 矢量数据库(Vector Database)和矢量开发库&…

《视觉 SLAM 十四讲》V2 第 10 讲 后端优化2 简化BA 【位姿图】

文章目录 第10讲 后端210.1 滑动窗口滤波 和 优化10.1.2 滑动窗口法 10.2 位姿图10.3 实践: 位姿图优化本讲 CMakeLists.txt 10.3.1 g2o 原生位姿图 【Code】10.3.2 李代数上的位姿优化 【Code】 习题10题1 【没推完】 LaTex 第10讲 后端2 滑动窗口优化 位姿图优化…

【iOS】使用单例封装通过AFNetworking实现的网络请求

这里写目录标题 前言单例封装网络请求1. 首先创建一个继承于NSObject的单例类,笔者这里以Manager对单例类进行命名,然后声明并实现单例类的初始化方法2.实现完单例的创建方法后我们即可通过AFNetworking中的GET方法进行网络请求3.在Controller文件中创建…

音频录制和处理软件 Audio Hijack mac中文版说明

Audio Hijack mac是一款功能强大的音频录制和处理软件,它可以帮助用户从各种来源捕获和处理音频。 首先,Audio Hijack具有灵活的音频捕获功能。它支持从多个来源录制音频,包括麦克风、应用程序、网络流媒体、硬件设备等等。你可以选择捕获整个…

2022最新版-李宏毅机器学习深度学习课程-P26 Recurrent Neural Network

RNN 应用场景:填满信息 把每个单词表示成一个向量的方法:独热向量 还有其他方法,比如:Word hashing 单词哈希 输入:单词输出:该单词属于哪一类的概率分布 由于输入是文字序列,这就产生了一个问…

云表|低代码开发崛起:重新定义企业级应用开发

低代码开发这个概念在近年来越来越受到人们的关注,市场对于低代码的需求也日益增长。据Gartner预测,到2025年,75%的大型企业将使用至少四种低代码/无代码开发工具,用于IT应用开发和公民开发计划。 那么,为什…

新的 Work Node 如何加入 K8s 集群 - Kubeadm ?

Author&#xff1a;rab 1、新的 work node 节点安装 kubelet、kubeadm 添加 k8s 镜像源 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] nameKubernetes baseurlhttps://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled1 gpgch…

基于FPGA的SPI读写M25P16 Flash芯片

文章目录 一、SPI协议简介1.1 SPI引脚1.2 时钟极性和时钟相位1.3 主从模式 二、Flash&#xff08;M25P16&#xff09;2.1 Flash简介2.2 M25P16芯片分析2.3 项目所用指令时序2.3.1 WREN&#xff08;06h&#xff09;2.3.2 RDID&#xff08;9Fh&#xff09;2.3.3 READ&#xff08;…

什么是著作权?对此你了解多少?(二)

上一篇&#xff0c;已经为大家介绍了著作权的概念、著作权的分类以及著作权的内容等相关基础性认识。那么著作权如何取得呢&#xff1f; 我国采取的自动取得原则&#xff0c;当作品创作完成后&#xff0c;只要符合法律上作品的条件&#xff0c;著作权就产生了。著作权人可以申请…

百分点科技受邀参加“一带一路”国际合作高峰论坛

10月17-18日&#xff0c;第三届“一带一路”国际合作高峰论坛在北京成功举行。作为新一代信息技术出海企业代表&#xff0c;百分点科技董事长兼CEO苏萌受邀出席高峰论坛开场活动——“一带一路”企业家大会&#xff0c;与来自82个国家和地区的企业或机构、有关国际组织、经济机…

ArmSoM-W3之RK3588 MPP环境配置

1. 简介 瑞芯微提供的媒体处理软件平台&#xff08;Media Process Platform&#xff0c;简称 MPP&#xff09;是适用于瑞芯微芯片系列的 通用媒体处理软件平台。该平台对应用软件屏蔽了芯片相关的复杂底层处理&#xff0c;其目的是为了屏蔽不 同芯片的差异&#xff0c;为使用者…

el-input: 把不符合正则校验的值动态清空,只保留符合的值

<el-input v-model"form.profit" placeholder"请输入授权专利新增利润" input"handleInput" clearable />/*** 不符合正则校验,清空*/const handleInput () > {if (form.value.profit) {if (!/^\d*\.?\d*$/.test(form.value.profit))…

Error- Loaded runtime CuDNN library: 8.0.4 but source was compiled with: 8.1.0.

运行tensorflow2.5训练代码之后会出现如下报错&#xff1a; Loaded runtime CuDNN library: 8.0.4 but source was compiled with: 8.1.0. CuDNN library needs to have matching major version and equal or higher minor version. If using a binary install, upgrade your…

es6(三)——常用es6(函数、数组、对象的扩展)

ES6的系列文章目录 第一章 Python 机器学习入门之pandas的使用 文章目录 ES6的系列文章目录0、数值的扩展一、函数的扩展1、函数的默认值2、函数的reset参数 二、数组的扩展1. 将对象转成数组的Array.from()2. 将对象转成数组的Array.from()3. 实例方法 find()&#xff0c;fin…

24.项目开发之量化交易抓取数据QuantTradeData(三)

后端业务&#xff1a;分页查询股票列表基础信息 需求说明 将来股票列表基础信息会在前端页面进行展示&#xff0c;成千上万条数据是不会一次性展示在页面的&#xff0c;而是分页展示。 环境搭建 pom.xml导入依赖 <dependency><groupId>com.github.pagehelper<…

文心大模型4.0开启测试申请,百度智能云为大模型落地五大需求提供最优解

写在前面 面向企业客户启动文心大模型4.0 API调用服务测试申请&#xff0c;服务超过17000家客户&#xff0c;在各行各业的近500个场景中进行大模型应用落地探索……自今年3月面世以来&#xff0c;百度智能云千帆大模型平台作为全球首个一站式企业级大模型平台&#xff0c;为业…

PS修改背景色,线框底图

1、打开图片&#xff0c;ctrlj复制一层 2、图像-调整-反相 3、ctrll调整色阶&#xff0c;将中间的色块向右移&#xff0c;灰色线和字体的会变黑

移动端签名组件封装 借用插件 vue-esign

目录 需求实现讲解工具 - 图片旋转、base64 转换为 file 对象组件封装组件全局注册组件使用效果展示 需求 移动端需要实现手机横屏手写签名并上传签名图片功能。 实现讲解 vue-esign 插件文档地址 https://www.npmjs.com/package/vue-esign SignCanvas 组件封装原理&#xff1a…