王道操作系统考研笔记——2.3.2 进程互斥的软件实现方法

文章目录

      • 2.3.2 进程互斥的软件实现方法
        • 2.3.2.1 单标志法
        • 2.3.2.2 双标志先检查法
        • 2.3.2.3 双标志后检查法
        • 2.3.2.4 Peterson算法
        • 2.3.2.5 小结

2.3.2 进程互斥的软件实现方法

知识总览

image-20220208171128877

2.3.2.1 单标志法

单标志法的算法思想是:两个进程在访问完临界区后会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进程赋予。具体实现过程如下:

image-20220216175101867

对于turn表示当前允许进入临界区的进程号,而只有当前允许进入临界区的进程在访问了临界区之后,才会修改turn的值。也就是说,对于临界区的访问,一定是按p0→p1→p0→p1…这样轮流访问

这种必须轮流访问带来的问题是,如果此时允许进入临界区的进程是P0,而P0一直不访问临界区,那么虽然此时临界区空闲,但是并不允许P1访问。因此对于单标志法,其违背了空闲让进的原则。

2.3.2.2 双标志先检查法

双标志先检查法的算法思想是:设置一个布尔型数组flag[],数组中各个元素用来标记各进程想进入临界区的意愿,比如flag[0] = true意味着0号进程p0现在想要进入临界区。每个进程在进入临界区之前先检查当前有没有别的进程想进入临界区,如果没有,则把自身对应的标志flag[i]设为true,之后开始访问临界区。

image-20220216180541941

需要注意的是,如果按照152637的顺序执行,p0和p1将会同时访问临界区。因此对于双标志先检查法,其违背了忙则等待的原则。

之所以造成这种问题,就是因为进入区的检查上锁不是原子操作,在检查完的下一步还没上锁很有可能发生其他事件。

2.3.2.3 双标志后检查法

既然在前一个算法中,原因出在先检查后上锁,那我们调换一下顺序能否改变情况呢?

双标志后检查法的思想是:既然先检查后上锁不行,那我就先上锁,然后在检查。

image-20220216183243339

需要注意的是,如果按照1526的顺序执行,p0和p1将都无法进入临界区。

因此双标志后检查法虽然解决了忙则等待的问题,但是又违背了空闲让进有限等待原则,因为如果各进程都长期无法访问临界资源会产生饥饿现象。

2.3.2.4 Peterson算法

在双标志后检查法中,两个进程都争着想进入临界区,但是谁也不让谁,既然这样,那只需要有人礼让即可解决问题。

image-20220216184039531

如果按照123678的顺序,则相当于串行执行,这种方式肯定可以执行。

如果按照162378的顺序,那么进程0表明自己想进入临界区,进程1表明自己想进入临界区,回到2步骤,0进程表示愿意先让给1进程执行,然后在检查1也有意愿进入临界区和自己已经让位的情况下,自己处于等待状态。这时候回到7步骤,1号进程也表示自己愿意先让给0进程执行,然后在检查0也有意愿进入临界区和自己已经让位的情况下,自己也处于等待状态。此时回到步骤3,0号进程发现turn被修改为0了,说明自己可以不用等待让位了,先行一步作为后回到步骤8,进程P1也顺利做完了。

尽管Peterson算法用软件方法解决了进程互斥问题,遵循了空闲让进、忙则等待、有限等待三个原则,但是依然未遵循让权等待原则。但是相较于前面三种算法,其本身已然是最好。

2.3.2.5 小结

image-20220216185223288

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

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

相关文章

QTP基础学习(二)启动与设置

1、启动QTP选择要求的Add-in 默认带有3个Add-in,之后可以安装其他的Add-in,如.net的Add-in 2、设置QTP的选项 点击Tools-Options,弹出如下框: 3、建立记录和运行设置 点击Automatic-Record and Run Settings,如下图&am…

王道操作系统考研笔记——2.3.3 进程互斥的硬件实现方法

文章目录2.3.3 进程互斥的硬件实现方法2.3.3.1 中断屏蔽方法2.3.3.2 TestAndSet指令2.3.3.3 Swap指令2.3.3.4 小结2.3.3 进程互斥的硬件实现方法 知识总览 2.3.3.1 中断屏蔽方法 利用开/关中断指令实现中断屏蔽方法,可以使得某进程开始访问临界区到结束期间不允许…

Linux基础--MBR/GPT与parted

关于MBR和GPT这两种分区表,wiki上讲的很清楚。不过有些同学可能看不了,你需要先了解科学上网。这里我就只把它们的结构图贴上,简要说明了。https://zh.wikipedia.org/wiki/%E4%B8%BB%E5%BC%95%E5%AF%BC%E8%AE%B0%E5%BD%95https://zh.wikipedi…

css斜角覆盖阴影

Demo下载 效果如图: css: #box { width: 280px; height: 150px; background: #ff6565; padding: 20px; position: relative; overflow: hidden; } #content { width: 280px; height: 15…

王道操作系统考研笔记——2.3.4 信号量机制

文章目录2.3.4 信号量机制2.3.4.1 引入2.3.4.2 整型信号量2.3.4.3 记录型信号量2.3.4.4 小结2.3.4 信号量机制 知识总览 在1965年,荷兰学着Dijkstra提出了一种卓有成效的实现进程互斥、同步的方法——信号量机制。 2.3.4.1 引入 用户进程可以通过使用操作系统提供…

QT分析之WebKit

该文章整理自 网易博客 http://blog.163.com/net_worm/blog/static/12770241920101831312381/ 转载请注明出处 WebKit是QT4新整合的第三方构件。按照惯例动手分析之前,先了解大概 WebKit由三个模块组成:JavaScriptCore、WebCore 和 WebKit WebKit作为了整…

ViewPager循环

android.support.v4.view.ViewPager ViewPager的使用跟AbsListView,AbsSpinner类似,需要用一个adapter填充数据,同时实现了onPagerChangeListener接口。 ViewPager需要的adapter继承自android.support.v4.view.PageAdapter,getCount返回adapt…

MIT算法导论(一)——算法分析和引论

文章目录1 算法分析及引论1.1 算法1.2 排序1.2.1 插入排序1.2.1.1 插入排序原理1.2.1.2 时间复杂度1.2.1.3 渐进时间复杂度1.2.1.4 回到算法1.2.2 归并排序1.2.2.1 归并排序原理1.2.2.2 归并排序时间复杂度1 算法分析及引论 1.1 算法 算法是一门关注性能的学科,也…

使用Apache Tomcat Maven插件部署运行 Web 项目

2019独角兽企业重金招聘Python工程师标准>>> 什么是Apache Tomcat Maven Plugin? Maven Plugin 是Apache Tomcat 提供的一个Maven插件,它可以在你没有tomcat容器时将任何一个war项目文件部署在该插件上提供访问。 为什么要用Apache Tomcat Ma…

POJ2104 (平方分割)二分查找理解。

题意:任意区间求第k大数 思路: 预处理:利用平方分割(分桶法)把区间切割成B sqrt(n)大小的一块块,然后每个各自排序。 二分第k大数x,接着就需要求[l,r]区间中x的排名,与k比较&#x…

每日一题——leetcode237 删除链表中的结点

1 题目 237. 删除链表中的节点 难度简单 请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。 题目数据保证需要删除的节点 不是末尾节点 。 示例 1&am…

机器学习的练功心法(一)——机器学习概述

1 机器学习概述 文章目录1 机器学习概述1.1 学习方法1.2 什么是机器学习1.3 监督学习1.4 无监督学习1.5 强化学习1.6 机器学习的开发流程1.1 学习方法 引入:对于机器学习来说,我们需要有一个大局观,什么是大局观?你站的比别人高&…

项目管理规范

从鼬加入的那一周开始,四代就开始着手准备起草代码规范了。代码规范不可少很多人理直气壮的认为,创业团队,或者说人数少的团队根本不需要代码规范。他们的口头禅经常是:“没办法啊!我们需要快速的完成客户的需求啊&…

每日一题——王道考研2.2.4.1

1 题目 从顺序表中删除具有最小值的元素(假设唯一),并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。 ——出自王道书2023版2.2.4的第二大题第一小题 2 思路 既然…

批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务...

windows(win10)批处理脚本 打开vm虚拟机的服务,并且开启无界面虚拟机 echo off net start "vds" net start "VMAuthdService" net start "VMnetDHCP" net start "VMware NAT Service" net start "VMUSBArbService" net star…

机器学习的练功心法(二)——概述

2 概述 文章目录2 概述2.1 模型概述2.1.1 预测房价问题2.1.2 符号2.2 代价函数2.3 代价函数的用处2.4 回到问题2.5 梯度下降2.6 梯度下降知识点总结2.7 线性回归模型的梯度下降2.1 模型概述 2.1.1 预测房价问题 在我们要开始下面的问题前,我们先来看一些关于房价预…

Jquery对象和DOM对象---Jquery API (1)

文/饥人谷_韩宝亿(简书作者)原文链接:http://www.jianshu.com/p/98a0c82c47e4著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。一、为什么要用Jquery? DOM API 1.难用 要想拿到一个对象&…

机器学习的练功心法(三)——特征工程

文章目录致谢3 特征工程3.1 Sklearn工具及数据集3.2 数据集3.3 数据集的划分3.4 特征工程介绍3.4.1 为什么需要特征工程3.4.2 什么是特征工程3.4.3 特征提取3.4.3.1 字典特征提取3.4.3.2 文本特征提取3.4.3.3 中文文本特征提取3.4.3.4 TF-IDF算法3.5 特征预处理3.5.1 特征预处理…

数据库杂谈(六)——数据库管理系统

文章目录6 数据库管理系统6.1 数据库管理系统结构简介6.2 进程结构6.2.1 进程的分类6.2.2 线程的由来6.2.3 建立进程的过程6.3 数据目录6 数据库管理系统 6.1 数据库管理系统结构简介 数据库管理系统DBMS是数据库系统的核心。而目前市场上我们接触到的商品化DBMS大多数是关系…

booth算法实现乘法器

booth算法充分的利用到了补码的重要性,使得我们在利用补码进行计算时减少了很多时序。下面的表格是我们假设2 作为乘数所进行的分析。接下来,我将用代码向大家阐述。 1、开始的时候在乘数2的‘负一位’加上一个默认0值00100 2、先判断[0:-1],结果是2‘b0…