程序、进程、线程的基本概念、信号量的PV操作、前趋图的PV操作

news2024/11/20 3:28:01

程序、进程、线程的基本概念

在这里插入图片描述
在这里插入图片描述

进程控制块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*

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

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

相关文章

Java高效率复习-SpringMVC[SpringMVC-2]

SpringMVC获取请求参数 SpringMVC获取请求参数的两种方式↓ 通过ServletAPI获取请求参数 将HttpServletRequest作为控制器方法的形参&#xff0c;此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象 通过request的API——getParameter(String s)方法来获取…

LQB,手打,PCF8591,ADDA转换,AD1是光敏电阻,AD3是电位器,DA输出

在上述at24c02de 基础上&#xff0c;添加三个函数 一个是读取通道1光敏电阻的数据&#xff1b; 一个是读取通道3的电压&#xff1b; 一个是输出DA的数据。。 5V的AD DA。 如果读入的电压是5V&#xff0c;输入AD&#xff0c;就是255&#xff1b; 如果是0V&#xff0c;就是00000…

05 比特币价格的含义

2009年1月&#xff0c;在赫尔辛基的一台小型服务器上&#xff0c;「中本聪」创建了一份简陋的开源代码&#xff0c;比特币的首个区块在这一天诞生。自此之后的十余年间&#xff0c;比特币和以其为代表作的区块链技术&#xff0c;踏上了波谲云诡的大航海征途。比特币的价格是指比…

Android---进程间通信机制3

1 服务如何注册到 SM 中 getIServiceManager().addService(name, service, false); getIServiceManger --- new ServiceManagerProxy(new BinderProxy()) BinderInternal.getContextObject --- 返回 BinderProxy 对象 ProcessState::self()->getContextObject: 创建一个 BpB…

k8s学习之路 | Day19 k8s 工作负载 Deployment(上)

文章目录1. Deployment 基础1.1 什么是 Deployment1.2 简单体验 Deployment1.3 Deployment 信息描述1.4 如何编写 Deployment2. Deployment 简单特性2.1 赋予 Pod 故障转移和自愈能力2.2 更新 Deployment2.3 回滚 Deployment2.4 暂停、恢复 Deployment 的上线过程2.5 Deploymen…

Gateway网关选型

网关一般分为流量网关和业务网关&#xff0c;流量网关负责接入所有的流量&#xff0c;并分发给不同的子系统&#xff0c;那在具体的业务接入之前&#xff0c;还有一层业务网关。流量网关提供全局性的、与后端业务应用无关的策略&#xff0c;例如 HTTPS证书卸载、Web防火墙、全局…

【教学典型案例】01.redis只管存不管删除让失效时间删除的问题

目录一&#xff1a;背景介绍二&#xff1a;redis1&#xff09;redis数据类型①String&#xff08;字符串&#xff09;②Hash&#xff08;哈希&#xff09;③List&#xff08;列表&#xff09;④Set&#xff08;集合&#xff09;2)缓存同步①设置有效期②同步双写③异步通知3&am…

java实现UDP及TCP通信

简介UDP(User Datagram Protocol)用户数据报协议&#xff0c;TCP(Transmission Control Protocol) 传输控制协议&#xff0c;是传输层的两个重要协议。UDP是一种无连接、不可靠传输的协议。其将数据源IP、目的地IP和端口封装成数据包&#xff0c;不需要建立连接&#xff0c;每个…

引用是否有地址的讨论的

说在前头&#xff0c;纯属个人理解&#xff0c;关于引用是否有地址&#xff0c;实际上并没有一个很统一的说法&#xff0c; C标准没有规定一个引用是否需要占用一块内存。 这里引用知乎“C 中引用是一块内存的标记&#xff0c;那引用本身有地址吗_百度知道 (baidu.com)”里面的…

Python爬虫之Js逆向案例(17)- Scrapy JD版店铺详情|问答

本案例是案例(16)的Scrapy版本 一次运行程序&#xff0c;同时获取内容&#xff1a;获取商店详情、商品问题、商品答案&#xff1b; 效果如下图&#xff1a; 一.Scrapy框架从安装到运行的过程 1.安装scrapy框架 控制台输入&#xff1a;pip3 install scrapy 2.验证安装结…

基于Flink CDC datastream mysql to mysql 序列化sql 数据同步

基于Flink CDC datastream mysql to mysql 序列化sql 数据同步 Flink CDC有两种方式同步数据库&#xff1a; 1. 一种是通过FlinkSQL直接输入两表数据库映射进行数据同步&#xff0c;缺点是只能单表进行同步&#xff1b; 2. 一种是通过DataStream开发一个maven项目&#xff0c…

华为机试题:HJ106 字符逆序(python)

文章目录&#xff08;1&#xff09;题目描述&#xff08;2&#xff09;Python3实现&#xff08;3&#xff09;知识点详解1、input()&#xff1a;获取控制台&#xff08;任意形式&#xff09;的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…

面试+算法:罗马数字及Excel列名与数字互相转换

概述 算法是一个程序员的核心竞争力&#xff0c;也是面试最重要的考查环节。 试题 判断一个罗马数字是否有效 罗马数字包含七种字符&#xff1a;I&#xff0c;V&#xff0c;X&#xff0c;L&#xff0c;C&#xff0c;D和M&#xff0c;如下 字符数值I1V5X10L50C100D500M1000…

libgdx导入blender模型

具体就是参考 官网 https://libgdx.com/wiki/graphics/3d/importing-blender-models-in-libgdx blender 教程可以看八个案例教程带你从0到1入门blender【已完结】 这里贴一下过程图。 1.初始环境搭建略过。 2.打开blender 选中摄像机和灯光&#xff0c;右键进行删除。 3.选中…

ES 7.7.0 数据迁移

本文使用 elasticdump 做数据迁移&#xff0c;支持在线和离线俩种方式&#xff0c;适用于数据量比较小的情况。 1、Node 安装 由于elasticdump 依赖于 node&#xff0c;首先需要安装下node。 1.1、 Linux 安装 $ wget https://nodejs.org/dist/v10.15.0/node-v10.15.0-linu…

[数据结构]:10-二叉排序树(无头结点)(C语言实现)

目录 前言 已完成内容 二叉排序树实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-BinarySearchTreeCommon.cpp 04-BinarySearchTreeFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容&#xff0c;除其中使用到C引用外&#xff0c;全为C语言…

基于支持向量机SVM的房价预测,基于支持向量机SVM的回归分析

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 SVM应用实例,基于SVM的房价预测 支持向量机SVM的详细原理 SVM的定义 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;…

【算法题】1958. 检查操作是否合法

插&#xff1a; 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家一起学习鸭~~~ 题目&#xff1a; 给你一个下标从 0 开始的 8 x 8 网…

Vue响应式原理————Object.defineProperty()和proxy的用法分享

Vue框架一个比较核心的功能就是我们的数据是响应式的&#xff0c;这样我们在修改数据的时候&#xff0c;页面会自动帮我们更新&#xff0c;那么想要实现这个功能就要实现对一个数据的劫持&#xff0c;即在取值和设置值的同时我们能够检测到即数据劫持。vue2响应式的实现原理所依…

用原生js手写分页功能

分页功能如下&#xff1a; 数据分页显示&#xff0c;每页显示若干条数据&#xff0c;默认当前页码为第一页。例如&#xff1a;每页5条数据&#xff0c;则第一页显示 1-5 条&#xff0c;第二页显示 6-10 条&#xff0c;依此类推。当页码为第一页时&#xff0c;上一页为禁用状态…