程序、进程、线程的基本概念、信号量的PV操作、前趋图的PV操作
程序、进程、线程的基本概念
进程控制块PCB的组织方式:顺序方式、链接方式、索引方式、Hash。
在JVM 中进程与线程关系
进程:
- 拥有资源的独立单位。
- 可以被独立调度。
- 可以分配资源。
线程:
- 可以被独立调度。
- 同一进程中的多个线程,共享一些资源:内存地址空间、代码、数据、数据、文件等。
- 同一进程中的多个线程,每个线程私有:程序计数器、寄存器栈等。
进程的状态
此处先不考虑进程抢占式CPU调度的情况
- 进程的状态模型根据不同的场景有多种,例如:三态模型、五态模型、七态模型…。
三态模型:
- 进程状态划分依据:将CPU和其他资源进行归类,将资源分为两大类(CPU、非CPU),进程状态根据资源被占用的情况进行划分;
- 当CPU和其他资源都都具备的情况下,进程被调度,状态:运行。
- 当CPU资源不足,而其他资源具备,(除CPU以外,其他资源都做好了准备),进程状态:就绪。
- 就绪状态等到CPU调度进程,状态转为运行。
- 一个进程无法长期占用多个CPU资源,把CPU资源划分为多个小的时间片段进行分发给多个进程,一个进程的时间片用完,就会从运行转为就绪,等待CPU的下一次调度。
- 当CPU资源和非CPU资源都不足时,进程状态:阻塞(等待)。
- 运行的进程等待某个事件,转为阻塞状态,等待事件发生,从阻塞转为就绪状态。
- 不考虑特殊情况,CPU资源准备好,非CPU资源不足。
- 阻塞态不能直接转为运行态。
- 就绪态不能直接转为阻塞态。
五态模型:
- 在原三态模型基础上加入了挂起,从而有了静止状态和活跃状态。
- 挂起:当内存中进程过多,内存不足,将某些条件不足的进程挂起,放入磁盘对换区里,暂时不参与调度。
- 挂起的过程:进程从内存放入磁盘的过程。
- 静止的状态必须进行恢复或者激活才能转为活跃状态。
- 活跃的状态挂起转为静止状态。
- 静止的状态存在磁盘对换区中,活跃的状态存在内存中。
- 静止的状态无法被CPU直接调度,必须进行激活成活跃状态才能被调度转为运行态。
- 运行态挂起转为静止就绪态。
运行中的进程等待某个事件的发生,从而转为活跃阻塞。
信号量的PV操作
进程间的同步关系与互斥关系
- 互斥模型(间接制约关系):由于临界资源的限制,进程间相互排斥,这种关系也叫:间接制约关系。
- 同步模型(直接制约关系):进程间存在互相依赖的关系,进程间存在顺序上的制约,这种关系也叫:直接制约关系。
- PV操作具有原子性。(原语)
- PV操作结合信号量进行操作。
- 信号量:资源数量(全局变量)。
- 对信号量-1(s-1)就是对资源数量-1,也就是对资源占据的过程。
- 对信号量+1 (s+1)就是对资源数量+1,也就是对资源释放的过程。
- P操作:申请并占用资源,加锁。
- V操作:释放占用的资源并通知排队进程,解锁。
- P操作,信号量<0(s<0),说明申请的资源没有占据到,资源不足。进程需要排队领资源,进入阻塞队列。
- V操作,信号量<=0(s+1),说明释放占用的资源,并通知排队进程进行下一个V操作,唤醒阻塞进程进入就绪态。无论信号量如何,进程继续进行后续动作。
- 信号量<0,可以表示资源数和排队的进程数。
- PV成对存在,只加锁不解锁(死锁),只解锁不加锁(无意义)。
前趋图的PV操作
- 前趋图是一种图的形式,一个图包含相应的节点,有向图中带有方向箭头连线各个节点,前趋图是有向图。
- 每一个节点代表一个进程。
- 箭头代表进程间的依赖关系。
- 如同所示:A是B的前趋,B是A的后继。
- 前趋图中,只有前趋完成,才能开始后继;后继开始前一定要确保前趋已完成。
- 存在多个进程并行的前趋图,进程间存在互相依赖的关系,是进程的同步关系,是直接制约关系。
- 前趋图体现的是:进程间存在互相依赖的关系,是进程的同步关系,是直接制约关系。
- A—>D可以表示为:(A,D)。
前趋图有时候可以不考虑信号量,主要关注节点间(进程间)的PV操作
死锁
系统有M个进程,每个进程都需要W个资源,系统需要多少个资源(N)才不可能发生死锁?
N>= M(W-1)+1*
相关文章:

程序、进程、线程的基本概念、信号量的PV操作、前趋图的PV操作
程序、进程、线程的基本概念 进程控制块PCB的组织方式:顺序方式、链接方式、索引方式、Hash。 在JVM 中进程与线程关系 进程: 拥有资源的独立单位。可以被独立调度。可以分配资源。 线程: 可以被独立调度。同一进程中的多个线程,…...
设计测试用例
目录 测试用例的基本要素 测试用例的设计方法 功能需求测试分析 非功能需求测试分析 设计测试用例的具体方法 测试用例的基本要素 测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境…...

CSS 选择器以及CSS常用属性
目录 🐇今日良言:可以不光芒万丈,但不要停止发光 🐯一、写CSS的三种方法 🐯二、CSS选择器的常见用法 🐯三、CSS常用属性 🐇今日良言:可以不光芒万丈,但不要停止发光 🐯一、写CSS的三种方法 CSS的基本语…...
测试概念及模型
今日目标掌握测试用例包含的基本内容使用等价类方法设计出测试用例1. 软件测试分类(复习)1.1 按阶段划分单元测试测试:针对单个功能进行测试,如:登录、购物车等开发(更多的理解):针对…...

王道计算机组成原理课代表 - 考研计算机 第六章 总线 究极精华总结笔记
本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 计算机组成 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!! 关于对 “总线” 章节知识点总结的十分全面,涵括了《计算机组成原理》课程里的…...

【C++升级之路】第八篇:string类
🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【C学习与应用】 ✒️✒️本篇内容:简单介绍string类的概念、string类的常用接口、string类的模拟实现(各个常见接口的实现代码&…...
mysql性能优化_原理_课程大纲
1、MySQL在金融互联网行业的企业级安装部署 目录章节版本说明版本说明安装MySQL规范1 安装方式2 安装用户3 目录规范MySQL 5.7 安装部署1 操作系统配置2 创建用户3 创建目录4 安装5 配置文件6 安装依赖包7 配置环境变量8 初始化数据库9 重置密码MySQL8 安装MySQL8 安装源码安装…...

项目管理报告工具的功能
项目报告软件哪个好?Zoho Projects的项目管理报告工具为您提供整个组织的360可见性,获取所有项目的实时更新,使用强大的项目报告软件推动成功。Zoho Projects的项目报告软件允许团队整理和监控他们的资源和项目,以评估进度并避免对…...

centos8上安装hbase
【README】1.本文部分内容转自:https://computingforgeeks.com/how-to-install-apache-hadoop-hbase-on-centos-7/2.本文是在单机上安装hbase (仅用于学习交流); 【1】更新系统因为 hadoop和hbase是动态的,为便于hbase…...

linux 进程及调度基础知识
引用Linux进程管理专题Linux进程管理与调度-之-目录导航Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)蜗窝科技-进程管理郭健: Linux进程调度技术的前世今生之“前世”郭健: Linux进程调度技术…...

Python计算分类问题的评价指标(准确率、精确度、召回率和F1值,Kappa指标)
机器学习的分类问题常用评论指标有:准确率、精确度、召回率和F1值,还有kappa指标 。 每次调包去找他们的计算代码很麻烦,所以这里一次性定义一个函数,直接计算所有的评价指标。 每次输入预测值和真实值就可以得到上面的指标值&a…...

51单片机LCD1602的使用
文章目录前言一、LCD1602简单介绍二、LCD1602中各个引脚的作用四、LCD1602命令解析1.写命令2.写数据3.清屏指令4.光标归位指令5.进入模式设置指令6.显示开关控制指令7.设定显示屏或光标移动方向指令三、LCD1602代码编写四、代码测试总结前言 本篇文章将为大家讲解LCD1602的使用…...

[深入理解SSD系列综述 1.5] SSD固态硬盘参数图文解析_选购固态硬盘就像买衣服?
版权声明:付费作品,未经许可,不可转载前言SSD (Solid State Drive),即固态硬盘,通常是一种以半导体闪存(NAND Flash)作为介质的存储设备。SSD 以半导体作为介质存储数据&…...
zio1升级到zio2踩坑和总结
并不全,记录了一些流程和注意点。新项目建议直接用zio2! 首先,从1.0迁移到2.0,可以使用官方的scalefix规则完成一部分方法自动替换(迁移主要解决方法重命名,去掉Has)。 然后,添加依…...
【算法题】1834. 单线程 CPU
插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 题目: 给你一个二维数组 tasks ÿ…...
Vue学习[2023]
笔记 一、Vue基础: 1.模板语法有2大类: 插值语法: 功能:用于解析标签体内容。 写法:{{xxx}},xxx是js表达式,且可以直接读取到data中的所有属性。 指令语法: 功能:用于…...

【Redis】Redis分片集群
【Redis】Redis分片集群 文章目录【Redis】Redis分片集群1. 搭建分片集群1.1 分片集群结构1.2 搭建分片集群1.2.1 集群结构1.2.2 准备实例和配置1.2.3 启动1.2.4 创建集群1.2.5 测试2. 散列插槽2.1 总结3. 集群伸缩4. 故障转移4.1 数据迁移5. RedisTemplate访问分片集群1. 搭建…...
【Android笔记81】Android之RxJava的介绍及其使用
这篇文章,主要介绍Android之RxJava及其使用。 目录 一、RxJava响应式编程 1.1、RxJava介绍 1.2、RxJava常用方法 (1)引入RxJava依赖...

Pr 定格拍照动画
哈喽,各位小伙伴!今天我们来学习一下如何制作定格拍照动画? 新建序列 新建一个1920*1080的序列,将视频拖入序列中 选择定格画面右键—插入帧定格分段中间部分就会变成一张图片(图片时长可伸缩) 复制素…...

放弃node-sass,启用sass
在下载一个新项目时运行:npm run install 发现报错 npm uninstall 异常 Error: Could not find any Visual Studio installation to use 或是 ------------------------- You need to install the latest version of Visual Studio npm ERR! gyp ERR! find VS incl…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...