<Linux>(极简关键、省时省力)《Linux操作系统原理分析之进程管理2》(4)

news2025/1/20 5:54:37

《Linux操作系统原理分析之进程管理2》》(4)

  • 3 进程管理
    • 3.5 P、V操作
      • 3.5.1 信号量
      • 3.5.2 信号量的应用
      • 3.5.3 进程同步机制
    • 3.6 进程通信
      • 3.6.1 消息通信
      • 3.6.2 信箱通信
    • 3.7 死锁
      • 3.7.1 死锁的定义
      • 3.7.2 死锁产生的必要条件
      • 3.7.3 死锁的预防
      • 3.7.4 死锁的避免
      • 3.7.5 死锁的检测
      • 3.7.6 死锁的解除

3 进程管理

3.5 P、V操作

PV操作必须是原子操作。

操作说明本质实现
P操作申请信号量申请获得临界资源中某块资源的使用权限临界资源数sv的值在P操作后,计数器1;sv的值为0,挂起进程的执行。
V操作释放信号量归还临界资源中某块资源的使用权限临界资源数sv的值在V操作后,计数器1;因sv为0被挂起的进程恢复执行。

3.5.1 信号量

1、信号量的定义: 信号量 S(Semaphore)是一个记录性变量。

2、S.value 的取值及意义:

取值含义
S.value >0表示系统当前可用的该类资源的数目
S.value <=0其绝对值表示系统中因请求该类资源而被阻塞的进程数目

3、信号量的操作:
除初始化之外,信号量仅能由 P、V 两条原语,即 P、V 两种操作来改变。

3.5.2 信号量的应用

1、实现进程互斥
用信号量解决几个进程互斥进入临界区的问题,几个进程共享一个公用信号量 mutex(互斥信号量)。
每个进程进入临界区必须先执行 P(mutex),退出临界区后执行 V(mutex)。对于 n 个进程同时共享一个临界资源,则 mutex 的取值为 1 ~ -(n-1)。
举例:有 1 台打印机 2 个进程,则 mutex 的取值为?

2、互斥:A和B两个进程无法同时执行。

3.5.3 进程同步机制

1、生产者-消费者问题
示例:父亲给盘子放苹果,母亲放橘子;儿子只吃苹果,女儿只吃橘子。父母是生产者,儿女是消费者,盘子是缓冲区。
映射:共享使用固定大小缓冲区的两个进程(生产者和消费者)在实际运行中存在的问题。
说明:生产者数量不限,消费者数量不限,缓冲区大小不限。
目标:分析进程与缓冲区之间的互斥关系。
注意:

在缓冲区为空时,消费者不能再进行消费
在缓冲区为满时,生产者不能再进行生产
消费者之间互斥,生产者之间互斥,但是生产者和消费者之间不影响
注意条件变量与互斥锁的顺序

2、读者-写者问题
描述:如购票系统,多人可同时查看,但是一个进程正在修改,其他进程则不能访问,否则可能同一个座位多次销售。
映射:多个进程同时访问共享数据时实际出现的问题。
目标:分析进程间读、读共享;写、写互斥;写、读互斥。

3、哲学家进餐问题
描述:有5个哲学家围坐在一个圆桌上,每两个哲学家之间都有一根筷子,哲学家平时进行思考,只有当他们饥饿时,才拿起筷子吃饭。规定每个哲学家只能先取其左边筷子,然后取其右边筷子,然后才可以吃饭。如果筷子已在他人手上,则需要等待。进餐完毕后,放下筷子继续思考。

在这里插入图片描述
要求:

只有当哲学家饥饿时才试图拿起左、右两根筷子。
如果筷子已在他人手上,则需等待。
只有同时拿起两根筷子才可以进餐。

目标:避免临界资源分配不当造成的死锁现象。
映射:进程间死锁问题。
解决:
1、最多允许四个哲学家同时就餐。2、奇数哲学家先拿左边筷子,偶数哲学家相反,先拿右边筷子;保证相邻的哲学家同时拿筷子时,有一个会被直接阻塞。

3.6 进程通信

类型说明
低级通信交换信息量小。常用变量、数组等方式。例进程同步和互斥 P、V 操作。
高级通信交换信息量大。采用缓冲、管道、信箱、共享区等方式。

根据通信实施方式和数据存取方式可分为三类:

  • 共享存储器系统:相互通信的进程共享某些数据结构和共享存储区(如寄存器、数组等)。
  • 消息传递系统
  • 管道通信系统(共享文件)基于文件系统,用一个打开的共享文件连结两个相互通信的进程 。(以自然字符流方式读写)

3.6.1 消息通信

把需要在进程间传递的一组信息看作一个消息。在系统中设置一个存放消息的存储区域,称为消息缓冲区,它可以同时存放一定数量的消息。

通信原语:1) send 原语2) receive 原语

3.6.2 信箱通信

信箱:是一种公共的存储区,是通信的一种中间实体。
组成:

信箱头:描述信箱(信箱名称、信箱大小、信箱方向以及拥有该信箱的进程名等。
信箱体:存放消息,由若干格子组成,每个格子放一信件。(格子数目及大小在创建信箱时确定)

分类说明
单向信箱只发不答
双向信箱即发也收
公用信箱与多个进程通信(按优先级处理)

3.7 死锁

3.7.1 死锁的定义

所谓死锁,是指多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程都无法向前推进,死锁是计算机系统和进程所处的一种状态。

3.7.2 死锁产生的必要条件

1、 互斥条件
2、 不剥夺条件
3、 请求与保持条件
4、 循环保持条件(进程资源图):存在一种进程资源的循环等待。

3.7.3 死锁的预防

死锁预防:设置某些条件,破坏产生死锁的必要条件中的一个或多个即可。
A. 破坏互斥条件:(应保证对临界资源的互斥访问,故不大可能实现)
B. 破坏不剥夺条件:当进程资源请求不能立即满足时,必须释放所有已获得的资源。
C. 破坏请求与保持条件:静态地一次性分配资源
D. 破坏循环等待条件:有序资源分配法。
1) 对资源进行编号;2)进程申请资源时,必须以编号递增方向申请。

3.7.4 死锁的避免

死锁的避免:在资源的动态分配过程中,用某种方法防止系统进入不安全状态。

系统状态说明
安全状态在某个时刻,系统能按某种顺序,如〈P1 , P2 ,┉ Pn 〉来为每个进程分配需要的资源,直至最大需求,是每个进程都能顺利地完成。则称此时的系统状态为安全状态。〈P1 , P2 ,┉ Pn 〉为安全序列。
不安全状态在某个时刻,系统不存在这样一个安全序列,则称此时的系统状态为不安全状态。

3.7.5 死锁的检测

死锁定理:S 为死锁状态的充分条件是,当且仅当 S 状态的资源分配表是不可完全简化的。

可完全简化 :不死锁
不可完全简化 ⇒ 死锁(死锁定理)

简化方法:寻找过程资源图中即不孤立又不阻塞的节点(进程节点)删去请求边和分配边。
具体如下:
1) 在资源分配表中,找一个即不阻塞也非独立的进程点 Pi,在顺利情况下,Pi 可获得所需资源而继续执行,直至运行完毕,再释放其占有的所有资源。(a)—(b)
2) P1 释放资源后,使 P2 获得资源而继续运行, P2 完成后又释放出所有的全部资源。(b)—(c)
3) 在进行一系列的简化后,若能消去图中所有边,使所有进程都成为孤立点。则称该图可完全简化,否则称该图为不可完全简化。

在这里插入图片描述

3.7.6 死锁的解除

将系统从死锁状态解脱出来,有两种方法:
1) 资源剥夺法(抢占):当发生死锁后,从其他进程剥夺足够数量的资源给死锁进程,以解除死锁状态。
2) 撤销进程法(终止):采用强制手段,从系统中撤销一个或部分死锁进程,并剥夺这些进程的资源,供其他死锁进程使用。

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

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

相关文章

系列二十六、idea安装javap -c

一、概述 javap -c是一个能够将.java文件反编译为.class文件的指令&#xff0c;例如我在idea中编写了一个Car.java文件&#xff0c;我想看看这个类被编译后长什么样的&#xff0c;就可以使用该指令进行查看。 二、配置 2.1、 Java Bytecode Decompiler File>Settings>Pl…

基于ssm的高校共享单车管理系统(有报告)。Javaee项目,ssm项目。

演示视频&#xff1a; 基于ssm的高校共享单车管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm项目。 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 项目介绍&…

ssd202d-logo-cmd_bootlogo分析

cmd_bootlogo.c运行过程 common/autoboot.c:593: disp_logo(0); sprintf(cmd_str, "bootlogo %d 1 0 0 0", logo_id); do_display函数 获取对应结构体,里面有各种参数

【Dolphinscheduler3.1.1】二次开发本地启动项目(前端+后端)

背景说明 由于业务的定制化开发&#xff0c;需要对Dolphinscheduler进行二次开发&#xff0c;现将项目的启动步骤记录如下。 一、 基础软件安装(必装项请自行安装) Maven: v3.5&#xff0c;配阿里云仓库地址即可 Node: v16. MySQL (5.7系列) : 两者任选其一即可 JDK (1.8)…

深入解析Vue中的keep-alive组件:优化组件切换与DOM渲染!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、K…

php连接sqlserver 安装sqlserver 驱动windows系统

第一步下载Windows 上的 Microsoft ODBC Driver for SQL Server ODBC 驱动程序 Microsoft ODBC Driver for SQL Server 直接下载安装即可&#xff0c;安装后可查看安装版本 第二步&#xff1a;下载php_sqlsrv 驱动 安装解压后&#xff0c;会有对应php版本的驱动文件&#xf…

单相浪涌保护器和三相浪涌保护器的区别

浪涌保护器&#xff0c;也称为防雷器&#xff0c;是一种为各种电子设备、仪器仪表、通讯线路提供安全防护的电子装置&#xff0c;主要用于限制过电压和泄放电涌电流。浪涌保护器的核心元件是内部的一个非线性元件。根据非线性元件的不同&#xff0c;浪涌保护器可以分为开关型&a…

准「AI 时代」下,如何衡量程序员的工作效率和生产力?

近 20 家科技、金融和制药公司实施了新的研发效能管理方法&#xff0c;并取得了令人鼓舞的初步结果。 客户报告的产品缺陷减少 20%-30%&#xff1b;员工体验分数提高 20%&#xff1b;客户满意度评分提高 60 个百分点。 大模型和 AIGC 技术催生了软件研发的新范式&#xff0c;也…

使用Postman进行压力测试

1.打开Postman新建测试接口 2.点击右边保存&#xff0c;选择一个文件集合&#xff0c;如果没有就创建&#xff0c;然后保存 就是这个东西&#xff0c;这里不便展示出来&#xff0c;压力测试需要在文件夹里面进行 3.选择要测试的接口&#xff0c;iterations 表示请求发起次数&a…

条条大路通罗马!打开CMD的方法不少,有常用的,也有意想不到的

许多人可能不知道这一点,但有几种方法可以在Windows 11/10中打开或启动命令提示符(CMD)。我们将重点关注Windows 11/10,因此由于新的“开始”菜单和其他功能,打开命令提示符的某些方面可能会略有不同。 在Windows 11/10中启动命令提示符 从应用程序菜单中启动CMD 点击开…

vue-数据双向绑定原理

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue-数据双向绑定原理 目录 虚拟DOM与Diff算法 1. 对虚拟DOM的理解&#xff1f; 2. 虚拟DOM的解…

python 基础语法学习 (二)

多变量赋值 当你在Python中进行多变量赋值时&#xff0c;你可以在一行代码中同时为多个变量分配值。这种方法可以简化代码并提高可读性。下面是一些关于Python多变量赋值的基本知识&#xff1a; 基本赋值&#xff1a;你可以使用等号&#xff08;&#xff09;将一个值分配给一…

Spring 6 提前编译:AOT

1、AOT概述 1.1、JIT与AOT的区别 JIT和AOT 这个名词是指两种不同的编译方式&#xff0c;这两种编译方式的主要区别在于是否在“运行时”进行编译 &#xff08;1&#xff09;JIT&#xff0c; Just-in-time,动态(即时)编译&#xff0c;边运行边编译&#xff1b; 在程序运行时…

数字孪生赋能实景三维中国建设分论坛成功举办

数字孪生赋能实景三维中国建设分论坛成功举办 11月10日&#xff0c;第一届中国测绘地理信息大会“数字孪生赋能实景三维中国建设分论坛”在浙江德清成功举办。 &#xff08;图片来源于网络&#xff09; 会议上&#xff0c;中国地理信息产业协会会长李维森出席并发表致辞&#x…

Linux_安装docker

安装包管理工具yum-utils&#xff0c;并设置docker储存库&#xff08;如果已有&#xff0c;不用安装&#xff09; # 安装包管理工具 sudo yum install -y yum-utils # 安装docker储存库 sudo yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/cen…

计算机毕设 深度学习 机器学习 酒店评价情感分析算法实现

文章目录 0 前言概述项目所需模块数据数据说明字段说明 数据处理分词处理停用词处理样本均衡建立多层感知机分类模型训练模型网络检测率以及检测结果 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&a…

【giszz笔记】产品设计标准流程【4】

&#xff08;续上回&#xff09; 我们继续把扩展考虑UX环节的产品打造标准流程&#xff0c;来进行梳理。 一千个人心中有一千个哈姆雷特&#xff0c;本文将日常大家耳熟能详&#xff0c;但是又未必人人心中成体系的产品打造标准流程&#xff0c;进行总结。 考虑了两种项目&a…

阿里云2核2G3M服务器e实例、40G ESSD Entry系统盘性能测评

阿里云99元服务器新老用户同享2核2G经济型e实例、3M固定带宽和40G ESSD Entry系统盘&#xff0c;老用户也可以买&#xff0c;续费不涨价依旧是99元一年&#xff0c;阿里云百科aliyunbaike.com分享阿里云3M带宽服务器40G ESSD Entry云盘性能说明&#xff1a; 阿里云99元服务器配…

科研学习|研究方法——Python计量Logit模型

一、离散选择模型 莎士比亚曾经说过&#xff1a;To be, or not to be, that is the question&#xff0c;这就是典型的离散选择模型。如果被解释变量时离散的&#xff0c;而非连续的&#xff0c;称为“离散选择模型”。例如&#xff0c;消费者在购买汽车的时候通常会比较几个不…

一个22届被裁前端思想上得转变

距离上篇文章已经过去了三个多月&#xff0c;这个三个月&#xff0c;经历了技术攻坚&#xff0c;然后裁员&#xff0c;退房&#xff0c;回老家&#xff0c;找工作。短短的几个月&#xff0c;就经历社会的一次次毒打&#xff0c;特别是找工作&#xff0c;虽然算上实习我也有两年…