操作系统第二章——进程与线程(圆满)

news2024/12/23 1:44:19

欲渡黄河冰塞川,将登太行雪满山

文章目录

  • 2.3.7 生产者消费者问题
    • 能否改变相邻的PV操作的顺序
    • 知识回顾
  • 2.3.8 多生产者多消费者问题
    • 问题描述
    • 关系分析
    • 各个进程之间的PV操作
    • 设置信号量
    • 若是不设置互斥信号量
    • 缓冲区大于一
    • 知识回顾
  • 2.3.9 吸烟者问题
    • 知识回顾
    • 2.3.10读者写者问题
    • 实现
    • 实现2
    • 实现3
    • 知识回顾
  • 2.3.11哲学家进餐问题
    • 解决方式
    • 方案三
    • 知识回顾
  • 2.3.12 管程
    • 知识总览
    • 为什么引入管程?
    • 管程的定义和基本特征
    • 管程解决生产者消费者问题
    • Java中类似管程的机制
    • 知识回顾
  • 2.4.1 死锁的概念
    • 知识总览
    • 什么是死锁
    • 饥饿,死循环的区别
    • 死锁产生的必要条件
    • 什么时候会发生死锁
    • 死锁的处理策略
    • 知识回顾
  • 2.4.2预防死锁
    • 破坏互斥条件
    • 破坏不剥夺条件
    • 破坏请求和保持条件
    • 破坏循环等待条件
    • 知识回顾
  • 2.4.3 避免死锁(银行家算法)
    • 知识总览
    • 什么是安全序列
    • 银行家算法
    • 安全状态
    • 不安全状态
    • 知识回顾
  • 2.4.4死锁的检测和解除
    • 死锁的检测
    • 死锁的解除
    • 知识回顾


2.3.7 生产者消费者问题

请添加图片描述

PV操作题目分析步骤:
1.关系分析。找出题目中描述的各个进程,分析它们之间的同步、互斥关系。
2.整理思路。根据各进程的操作流程确定P、V操作的大致顺序。
3.设置信号量。并根据题目条件确定信号量初值.(互斥信号量初值一般为1,同步信号量的初始值要看对应资源的初始值是多少)
请添加图片描述

能否改变相邻的PV操作的顺序

请添加图片描述
这里没有将使用产品放入到PV之间是因为放入之后,原则上是可以的,但是对临界资源锁的时间也会变长,对系统的效率造成影响

知识回顾

请添加图片描述

2.3.8 多生产者多消费者问题

前V后P:同步关系中,前面时间发生之后发生V操作,后面事件发生之前发生P操作

问题描述

请添加图片描述

关系分析

请添加图片描述

各个进程之间的PV操作

互斥关系很简单:就是在访问临界资源之后分别对临界变量实行一个P操作 一个V操作,
同步关系:前面事件发生之后我们实行一个V操作,后面事件发生之前执行一个P操作

设置信号量

对于实现互斥关系来说,我们当然需要设置一个初值为1的互斥信号量
对于同步关系我们需要根据具体的情况设置同步变量的值,这里由于刚开始的时候盘中是没苹果的,所以设置apple 设置为0,同样的srange也设置为0 ,刚开始的时候盘子本来就是空的所以设置为1
请添加图片描述

若是不设置互斥信号量

请添加图片描述
通过分析我们发现即使不设置专门的互斥变量mutex,也不会出现多个进程同时访问盘中的现象,原因在于,本题中的缓冲区大小为1,在任何时刻,apple,orange,plate 三个同步信号量最多只有一个是1 ,因此在任何时刻,最多只有一个进程的P操作不会被阻塞,并顺利的进入临界区

缓冲区大于一

请添加图片描述
这个盘子并不是是一个人一个盘子,有可能两个进程申请的是一个盘子,所以有可能会数据覆盖,

知识回顾

请添加图片描述

请添加图片描述

2.3.9 吸烟者问题

请添加图片描述
请添加图片描述

知识回顾

请添加图片描述

2.3.10读者写者问题

请添加图片描述

实现

请添加图片描述

实现2

这里说一下为什么要加mutex。
比如:当count=0时,第一个读者进程执行到p(rw),rw=0,假设此时时间片到了,切换到第二个读者进程,第二个进程发现count=0,则执行p(rw),但是此时rw=0,于是第二个进程被堵在p(rw)这里,同理,后面的可能会有多个进程堵在p(rw),只有当第一个进程再次获得时间片,执行count++,让count不为0,然后其他进程就可以直接绕过if直接进行count++来访问文件,但是第三个读者进程和后面的几个可能堵在p(rw)的多个读者进程则必须得等count–为0后才可以再次和写进程竞争来访问文件,对count的访问没有做到一气呵成,会导致本来一些进程一直堵在p(rw)。
请添加图片描述

实现3

在上面的算法中,读进程是优先的,即当存在读进程时,写操作将被延迟,且只要有 一个读进程活跃,随后而来的读进程都将被允许访问文件。这样的方式会导致写进程可能长时间等待,且存在写进程“饿死”的情况。
若希望写进程优先,即当有读进程正在读共享文件时,有写进程请求访问,这时应禁止后续读进程的请求,等到已在共享文件的读进程执行完毕,立即让写进程执行,只有在无写进程执行的情况下才允许读进程再次运行。为此,增加一个信号量并在上面程序的writer()和 reader()函数中各增加一对PV操作,就可以得到写进程优先的解决程序
请添加图片描述
加了之后依然是可以实现多个读进程并行的,若是此时有读进程申请w释放w之后,此时count不为零,下一个读不会p(rw),所以依然进入读文件,若是此时是读过写,最后一个读文件未完成的时候rw未释放所以是不支持写的,但是写进程也申请了P(w),所以下一个读进程需要等这个写进程释放才能继续读

知识回顾

请添加图片描述

2.3.11哲学家进餐问题

请添加图片描述

解决方式

请添加图片描述

方案三

增加一个互斥信号量,使得只有左右筷子都存在的时候才会取,并且取筷子操作一气呵成,若是先进行第一个哲学家,然后进行4号哲学家,则依然可能会拿到一个筷子

知识回顾

请添加图片描述

2.3.12 管程

知识总览

请添加图片描述

为什么引入管程?

请添加图片描述

管程的定义和基本特征

请添加图片描述

管程解决生产者消费者问题

请添加图片描述
请添加图片描述

Java中类似管程的机制

请添加图片描述

知识回顾

请添加图片描述

2.4.1 死锁的概念

知识总览

请添加图片描述

什么是死锁

请添加图片描述
请添加图片描述

饥饿,死循环的区别

请添加图片描述

死锁产生的必要条件

请添加图片描述

什么时候会发生死锁

请添加图片描述

死锁的处理策略

请添加图片描述

知识回顾

请添加图片描述

2.4.2预防死锁

请添加图片描述

破坏互斥条件

请添加图片描述

破坏不剥夺条件

请添加图片描述

破坏请求和保持条件

请添加图片描述

破坏循环等待条件

请添加图片描述
(那如果说P3进程需要使用到1不是就要一直堵塞了?)

知识回顾

请添加图片描述

2.4.3 避免死锁(银行家算法)

知识总览

请添加图片描述

什么是安全序列

请添加图片描述

银行家算法

请添加图片描述

安全状态

请添加图片描述
请添加图片描述

不安全状态

请添加图片描述
请添加图片描述

知识回顾

请添加图片描述

2.4.4死锁的检测和解除

请添加图片描述

死锁的检测

请添加图片描述
请添加图片描述
请添加图片描述

死锁的解除

请添加图片描述

知识回顾

请添加图片描述

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

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

相关文章

leetcod——62不同路径 (动态规划讲解)

62. 不同路径 中等 1.8K 相关企业 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有…

五、JVM-垃圾回收算法

常见的回收算法:标记清除算法、复制算法、标记-整理算法、分代收集算法 1、标记清除算法 第一步:标记(找出内存中需要回收的对象,并且把它们标记出来) 第二步:清除 (清除掉被标记需要回收的对…

【算法提高:动态规划】1.5 状态压缩DP TODO

文章目录 状态压缩DP例题列表棋盘式1064. 小国王⭐🐂(好题!)做题套路总结 327. 玉米田(好题!🐂 和1064. 小国王差不多的题目)292. 炮兵阵地(和上面两道题差不多&#xff…

股票量化系统QTYX选股框架实战案例集|地产看前排承接做后排补涨,砸涨停板吃8点小肉-230801...

前言 “实战案例个股画像”系列和大家分享我基于QTYX选股框架,在实战中选股的案例,和大家一起见证QTYX选股框架逐步完善的过程,帮助大家理解QTYX的精髓。 关于QTYX的使用攻略可以查看链接:QTYX使用攻略 关于QTYX初衷和精髓可以查看…

CSS图片放到<div>里面,自适应宽高全部显示,点击图片跳到新页面预览,点击旋转按钮图片可旋转

有一个需求是图片放到一个固定宽高的<div>里面&#xff0c;不管是横图还是竖图&#xff0c;都要全部显示出来并且保持图片的长宽比例不变形&#xff0c;点击图片可以跳到一个新页面预览&#xff0c;代码如下&#xff1a; <!DOCTYPE html> <html> <head>…

图解系列 DNS查找过程和DNS缓存

DNS 充当地址簿。它将人类可读的域名 (google.com) 转换为机器可读的 IP 地址 (142.251.46.238)。 开局一张图 来自&#xff1a;https://xiaolishen.medium.com/the-dns-lookup-journey-240e9a5d345c 寻址流程 查询浏览器缓存&#xff1a;当你输入一个域名后&#xff0c;浏览…

VS创建QT项目的几个注意点

前提是已经安装好了VS、QT和Qt VS Tool。 一、创建项目无法找到头文件&#xff0c;点击编译运行又可以执行。虽然可以编译运行&#xff0c;但是无法找不到头文件显示是红色并且在开发时无法出现相关代码提示&#xff0c;并且无法导入QT相关头文件。 解决方法&#xff1a; 1、…

Android多线程编程、异步消息处理机制以及new Handler()被标记为过时的解决办法,解决Handler内存泄漏问题和AsyncTask的基本用法

一、Android多线程编程 1、异步消息处理机制 1.1 弱引用 WeakReference&#xff08;弱引用&#xff09;是一种在Java中用于管理对象的引用的特殊引用类型。它的作用是在垃圾回收过程中&#xff0c;允许对象在没有强引用指向它时被回收&#xff08;当一个对象只有弱引用指向它…

如何防止亚马逊买家号关联?

防止亚马逊买家号关联是指避免在同一家亚马逊账户下使用多个买家号。有时&#xff0c;卖家或买家会创建多个买家号来规避亚马逊的规则和限制。然而&#xff0c;这样的行为违反了亚马逊的政策&#xff0c;并可能导致账户被封禁或其他严重的后果。 而想要防关联&#xff0c;可以从…

【Linux】IO 篇:文件调用原理,文件描述符,FILE的内涵,解析重定向,理解缓冲区

文章目录 一、系统调用接口二、文件调用1. 文件描述符 fd2. 文件调用原理3. FILE 三、重定向dup2 四、缓冲区简易 FILE 的代码实现 文件被加载之前&#xff0c;被存在磁盘上&#xff0c;操作文件&#xff0c;文件的部分内容则会被调度到 内存中。 要分析文件&#xff0c;我们也…

问道管理:沪指震荡跌0.84%,银行、医药等板块走弱,地产板块逆市拉升

2日早盘&#xff0c;沪指盘中震动下探&#xff0c;深成指、创业板指亦走低&#xff1b;两市半日成交约5400亿元&#xff0c;北向资金净卖出约35亿元。 到午间收盘&#xff0c;沪指跌0.84%报3263.2点&#xff0c;深成指跌0.42%&#xff0c;创业板指跌0.27%&#xff0c;上证50指数…

UPnP是什么?有什么更好的连接方案?快解析内网穿透

一、UPnP是什么 有些小伙伴对于UPnP并不了解&#xff0c;其实UPnP只是一种网络协议&#xff0c;主要作用就是简化家庭和企业网络中设备之间的连接和通信过程&#xff0c;它的主要目标是实现网络的无缝连接&#xff0c;并简化相关网络操作。 二、UPnP有什么主要作用&#xff1…

激光切割机好不好?激光切割与线切割应该怎么选择对比

在选择激光切割机与线切割机进行比较时&#xff0c;我们首先需要理解两者的特性与特点。 激光切割机&#xff1a;现阶段主流的激光切割设备主要包括光纤激光切割机和CO2激光切割机。其中CO2激光切割机主要用于切割厚板&#xff0c;但也可完成非金属材料的切割。光纤激光切割机则…

面试题:JS中的String常见方法有哪些?

面试题&#xff1a;说不出五个就尴尬了&#xff01;我目前只写了几个方法&#xff0c;待更新中。。。 1、length2、slice()3、substr()4、substring()5、split()6、indexOf() 1、length 作用&#xff1a;检测字符串的长度。 let str abcde console.log(str.length) // 52、sl…

深入解读Gartner 2023中国数据、分析与AI技术成熟度曲线报告

近日&#xff0c;国际权威研究机构Gartner发布了《Hype Cycle for Data, Analytics and AI in China, 2023》&#xff08;2023中国数据、分析与AI技术成熟度曲线报告&#xff09;。作为业内的权威报告&#xff0c; Gartner 每年针对技术、应用和行业创建的技术成熟度曲线&#…

【WebRTC---源码篇】(二:一)PeerConnection详解

Track的添加 上图是整体流程图 RTCErrorOr<rtc::scoped_refptr<RtpSenderInterface>> PeerConnection::AddTrack(rtc::scoped_refptr<MediaStreamTrackInterface> track,const std::vector<std::string>& stream_ids) {RTC_DCHECK_RUN_ON(signal…

Linux(三)---------网络路由命令(route路由命令)

一.route路由命令 1.什么是route路由&#xff1f; 计算机之间的数据传输必须经过网络&#xff0c;网络可以直接两台计算机&#xff0c;也可以通过一个一个的节点去连接。路由可以理解为互联网的中转站&#xff0c;网络中的数据包就是通过一个一个的路由器转发到目的地的。 路…

【枚举边+树的直径】CF14D

Problem - 14D - Codeforces 题意&#xff1a; 思路&#xff1a; 两条链不相交&#xff0c;说明是在不同连通分量中&#xff0c;我们可以枚举边来把树分为两个连通分量&#xff0c;然后分别计算直径即可 Code&#xff1a; #include <bits/stdc.h>#define int long lo…

目标检测与跟踪 (1)- 机器人视觉与YOLO V8

目录 1、研究背景 2. 算法原理及对比 2.1 点对特征&#xff08;Point Pairs&#xff09; 2.2 模板匹配 2.3 霍夫森林 2.4 深度学习 3、YOLO家族模型演变 4、YOLO V8 1、研究背景 机器人视觉识别技术是移动机器人平台十分关键的技术&#xff0c;代表着机器人智能化、自动化…