【操作系统】2.3 进程同步与互斥

news2025/7/22 11:16:06

 这一节大概是操作系统中最难的一节了。

2.3.1 进程的同步与互斥

2.3.1 进程的同步与互斥_StudyWinter的博客-CSDN博客_进程同步思维导图

在这里插入图片描述

进程同步:在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,如等待、传递信息等,引入了进程同步的概念。进程同步是为了解决进程的异步问题。

互斥:亦称间接制约关系。进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。

临界区是进程中访问临界资源的代码段。

为了禁止两个进程同时进入临界区,需遵循以下准则:

(1)空闲让进:临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区;

(2)忙则等待:当已有进程进入临界区时,其他试图进入临界区的进程必须等待;

(3)有限等待:对请求访问的过程,应保证能在有限时间内进入临界区;

(4)让权等待:当进程不能进入临界区时,应立即释放处理机,防止进程忙等待。

这四个原则,得有个印象。

2.3.2 操作系统之实现临界区进程互斥的软件实现方法

2.3.2 操作系统之实现临界区进程互斥的软件实现方法_StudyWinter的博客-CSDN博客

在这里插入图片描述

软件实现方法的思想:在进入区设置并检查一些标志 来标明是否有进程在临界区中,若已有进程在临界区,则在进入区通过循环检查进行等待,进程离开临界区后则在退出区修改标志。入区通过循环检查进行等待,进程离开临界区后则在退出区修改标志。

(1)单标志法:两个进程在访问临界区后会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进程赋予。

(2)双标志法:设置一个布尔型数组,数组中的各个元素用来标记进程想进入临界区的意愿;每个进程在进入临界区之前先检查当前有没有别的进程想进入临界区,如果没有,则把自身对应的标志设置true。

(3)双标志后检查法:是双标志先检查法的改进,加锁。

2.3.3 操作系统之实现临界区进程互斥的硬件实现方法

2.3.3 操作系统之实现临界区进程互斥的硬件实现方法_StudyWinter的博客-CSDN博客

在这里插入图片描述

 2.3.4 操作系统之信号量机制(整型信号量、记录型信号量P、V)

2.3.4 操作系统之信号量机制(整型信号量、记录型信号量P、V)_StudyWinter的博客-CSDN博客_记录型信号量

PV操作是重点和难点

PV两个字母是荷兰文 P asseren(通过),V rijgeven(释放)的简称。

P是申请资源;V是释放资源;

在这里插入图片描述

在这里插入图片描述

  • 整型信号量

在这里插入图片描述

(1)用一个整型型变量作为信号量,数值表示某种资源数;

(2)整型信号量与普通整型变量的区别:对信号量只能执行初始化、P、V三种操作;

(3)整型信号量存在的问题:不满足让权等待原则

P是申请资源;V是释放资源
  • 记录型信号量

因为整型信号量存在忙则等待的问题,所以提出记录型信号量。

在这里插入图片描述

(1)P操作中,一定是先value--,之后可能执行block原语;

(2)V操作中,一定是先value++,之后可能执行wakeup原语;

(3)能够判断在什么条件下需要执行block或者wakeup。

2.3.5 操作系统之信号量机制实现进程的互斥、同步与前驱关系

2.3.5 操作系统之信号量机制实现进程的互斥、同步与前驱关系_StudyWinter的博客-CSDN博客

在这里插入图片描述

实现进程互斥:

(1)信号量初值设为1;(2)临界区之前对信号执行P操作;(3)临界区之后对信号执行V操作

实现进程同步:

(1)信号量初始值为0;(2)在“前操作”之后执行V操作;(3)在“后操作”之前执行P操作;

实现进程的前驱关系:

(1)每一对前驱关系初值问为0;(2)在每个“前操作”之后执行V操作;(3)在每个”后操作“之前执行P操作。

2.3.6 操作系统之进程同步与互斥经典问题

2.3.6 操作系统之进程同步与互斥经典问题(生产者-消费者问题、多生产者-多消费者问题、吸烟者问题、读者-写者问题、哲学家进餐问题)_StudyWinter的博客-CSDN博客_生产者消费者进程同步互斥

【这一节得再看看】

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

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

相关文章

C#界面里Form.Language 属性的使用

C#界面里Form.Language 属性的使用 现在面向全球化的应用软件、应用系统越来越多。 比如游戏正在走向全球化时代,很多游戏的服务器也会安装到各个国家去,也会请当地人来管理游戏的服务器。 这时开发的软件,就需要面向各种语言,比如英语、日语、阿拉佰语等等。 如果你正在…

什么叫共同富裕,刘强东给老板们打了个样

这两天,热搜上最火的男人,除了汪小菲,就是刘强东无疑了。 11月22日,刘强东发出了一封京东内部员工信,引发热议。 信里主要说了4点: 1、自明年1月1日起,为所有德邦员工缴齐五险一金&#xff1…

YOLOv5识别图像内苹果和香蕉

YOLOv5为目标检测带来了极大的方便。通过简单地训练YOLOv5,即可以实现一个速度快、性能高的目标检测系统。 下面介绍如何从头开始构造一个简单的目标检测系统,用来识别图像内的苹果和香蕉,并标注他们所在的位置。 特别强调的是,…

HTML5学习笔记(三)

离线应用 HTML5新增了一个离线存储的API,用于实现本地数据的缓存,从而使得开发离线应用成为可能。 所谓“离线存储”,指的是建立一个URL列表,该列表可以包含HTML文件、CSS文件、JavaScript文件和图片等。当与服务器建立连接时&am…

dragTabs(vue)

vue实现tabs拖拽 效果图 dragTab.vue <template><div class"yh-tabs"><draggable :list"tabList" :group"groupName" animation"300" item-key"id" end"dragEnd"><template #item"{ …

CANoe-vTESTstudio之Test Diagram编辑器(功能介绍)

1. 阶段 Test Diagram从测试设计到测试执行,分为5个阶段: Test Design 在测试设计阶段,测试设计人员使用图形元素和分配的测试代码对测试用例进行建模。这个阶段的结果是生成一个测试图表 Evaluation 生成的测试图表,需要评估其正确性。在评估期间,将验证各个元素及其…

3.7 学会这2招,让你的笔记分分钟上热门 【玩赚小红书】

什么是上热门&#xff1f; 上热门之前&#xff0c;我们先了解一下什么是上热门。上热门就是笔记被系统主动推荐&#xff0c;并在很长一段时间里&#xff0c;有源源不断的粉丝点赞、收藏&#xff0c;相当于平台给你的笔记开了专属流量口&#xff0c;推送给那些平常关注该笔记类型…

vue实战项目之vue-cli脚手架搭建过程详解

目录 1.可以参考vue-cli的中文文档进行下载安装 2.查看node和npm版本 3.安装依赖包 4.依赖包以前版本太老&#xff0c;如何更新&#xff1f; 5.创建一个项目 6.图形化界面 1.可以参考vue-cli的中文文档进行下载安装 vue-cli中文文档 2.查看node和npm版本 在cmd或者编译…

【数据库原理及应用】——关系数据库的规范化理论(学习笔记)

&#x1f4d6; 前言&#xff1a;关系数据库的规范化理论是数据库设计的一个理论指南&#xff0c;提供了判断一个关系模式优劣的理论依据。本章讨论的关系数据库的规范化理论主要包含三方面内容&#xff1a;函数依赖、范式和模式分解准则。函数依赖起着核心作用&#xff0c;是模…

易基因|TSD物种全基因组DNA甲基化模式对孵育性别和过去孵育温度的响应 | 性别决定

易基因&#xff5c;TSD物种全基因组DNA甲基化模式对孵育性别和过去孵育温度的响应 | 性别决定 大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 2022年8月23日&#xff0c;《MOLECULAR ECOLOGY》杂志发表题为“Genome-wide DNA methyla…

[附源码]java毕业设计幼儿园管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]Python计算机毕业设计二手书交易软件设计与实现

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

嵌入式驱动初级-字符设备驱动基础

文章目录前言一、驱动学习预备知识1.什么是设备驱动程序2.向内核添加新功能方法2.1新功能源码与Linux内核源码不在同目录下2.2在Ubuntu下加载和删除ko文件步骤2.3在开发板下加载和删除ko文件步骤2.4内核模块基础代码解析二、字符设备驱动框架2.1Linux内核对设备的分类2.2字符设…

css点击文字(非按钮) 能自动改变颜色。

实现功能说明&#xff1a; 如下图&#xff0c;点击不同的文字能够切换不同的页面&#xff0c;同时这个tab的文字能够相应的变色&#xff0c;其他未选中的状态默认为灰色。 方案一&#xff1a; 使用css的伪类。 :active&#xff0c;元素被点击时变色&#xff0c;但颜色在点击后…

为什么 NGINX 的 reload 命令不是热加载?

这段时间在 Reddit 看到一个讨论&#xff0c;为什么 NGINX 不支持热加载&#xff1f;乍看之下很反常识&#xff0c;作为世界第一大 Web 服务器&#xff0c;不支持热加载&#xff1f;难道大家都在使用的 nginx -s reload 命令都用错了&#xff1f;带着这个疑问&#xff0c;让我们…

DiffusionDet: Diffusion Model for Object Detection

paper: https://arxiv.org/abs/2211.09788 code&#xff1a;https://github.com/ShoufaChen/DiffusionDet 探索了扩散模型在非生成类任务&#xff08;目标检测&#xff09;中的应用。相较于传统Coarse-to-fine方法&#xff0c;基于扩散思路训练有两个特点&#xff1a;1&…

网络编程/计算机网络

目录 一、网络基本概念 1.网络 2.互联网 3.ip地址 4.MAC地址 5.端口号Port 6.网络协议 二.网络分层模型 1.数据链路层 2.网络层 3.传输层 4.应用层 三、网络应用程序通信流程 四、socket 网络编程 1.主机字节序列和网络字节序列 2.套接字地址结构 &#xff08…

离群点检测和新颖性检测

引言 在异常检测领域中&#xff0c;我们常常需要决定新观测点是否属于与现有观测点相同的分布&#xff0c; &#xff08;则称它们为inlier),或被认为是不同的(outlier). 在这里&#xff0c;必须做出两个重要的区别&#xff1a; 异常值检测&#xff1a;outlier detection 训练…

List接口与实现类

目录 一、List接口 1.特点&#xff1a; 2.方法&#xff1a; 二、List接口的使用 三、List实现类 1.ArrayList&#xff08;重点&#xff09; &#xff08;1&#xff09;特点 &#xff08;2&#xff09;示例 &#xff08;3&#xff09;源码分析 2.Vector &#xff08;1…

Python列表推导式——List

目录 遍历列表 range函数 列表推导式(★★★★★)五星技能点 五万次【列表推导式】与【for】遍历计算消耗时间对照表&#xff1a; 列表推导式逻辑判断 遍历列表 通过for in循环来遍历集合列表 range函数 我们基础range函数是参数范围是range(start,stop)&#xff0c;在下…