进程的基本概念解读

news2024/11/24 14:59:32

目录

什么是进程

PCB

OS中用于管理控制的数据结构

进程控制块PCB的作用

进程控制块中的信息

前趋图

背景 

作用 

表示

示例

 程序的顺序执行

程序顺序执行的特征 

程序的并发执行

 程序的并发执行的特征

例题解读 

 进程的三种基本状态

进程的三种状态之间的转换

进程的创建状态

进程的终止状态

挂起操作与进程状态的转换 


什么是进程

对于进程的定义,从不同的角度可以有不同的定义,其中较典型的定义有:
(1) 进程是程序的一次执行。
(2) 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
(3) 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
 

PCB

系统利用PCB来描述进程的基本情况和活动过程

注意:PCB是进程在计算机中的唯一标识(含有标识信息),计算机通过查看PCB来感知进程的存在。

进程的组成
程序+数据集合+进程控制块(PCB)

OS中用于管理控制的数据结构

在计算机系统中,对于每个资源和每个进程都设置了一个数据结构,用于表征其实体,我们称之为资源信息表或进程信息表,其中包含了资源或进程的标识、描述、状态等信息以及一批指针。通过这些指针,可以将同类资源或进程的信息表,或者同一进程所占用的资源信息表分类链接成不同的队列,便于操作系统进行查找。
OS管理的这些数据结构一般分为以下四类:内存表、设备表、文件表和用于进程管理的进程表,通常进程表又被称为进程控制块PCB。

进程控制块PCB的作用

(1) 作为独立运行基本单位的标志。
(2) 能实现间断性运行方式。
(3) 提供进程管理所需要的信息。
(4) 提供进程调度所需要的信息。
(5) 实现与其它进程的同步与通信。

进程控制块中的信息

在进程控制块中主要包括四部分的信息:
1)进程标识符
进程标识符用于唯一地标识一个进程。一个进程通常有两种标识符:

 a) 外部标识符(相当于是可执行程序的文件名,由创建者提供,通常是由字母、数字组成,往往是用户访问该进程使用)。
 b) 内部标识符(方便系统使用而设置,每一个进程赋予一个唯一的整数,作为内部标识符,PID)。

2) 处理机状态
处理机状态信息也称为处理机的上下文,主要是由处理机的各种寄存器中的内容组成的。

3)进程调度信息
在OS进行调度时,必须了解进程的状态及有关进程调度的信息,这些信息包括:
① 进程状态,指明进程的当前状态,它是作为进程调度和对换时的依据;
② 进程优先级,是用于描述进程使用处理机的优先级别的一个整数,优先级高的进程应优先获得处理机;
③ 进程调度所需的其它信息,它们与所采用的进程调度算法有关,比如,进程已等待CPU的时间总和、进程已执行的时间总和等;
④ 事件,是指进程由执行状态转变为阻塞状态所等待发生的事件,即阻塞原因。

4)进程控制信息
是指用于进程控制所必须的信息,它包括:
① 程序和数据的地址,进程实体中的程序和数据的内存或外存地(首)址,以便再调度到该进程执行时,能从PCB中找到其程序和数据;
② 进程同步和通信机制,这是实现进程同步和进程通信时必需的机制,如消息队列指针、信号量等,它们可能全部或部分地放在PCB中;
③ 资源清单,在该清单中列出了进程在运行期间所需的全部资源(除CPU以外),另外还有一张已分配到该进程的资源的清单;
④ 链接指针,它给出了本进程(PCB)所在队列中的下一个进程的PCB的首地址。

前趋图

背景 

在早期未配置OS的系统和单道批处理系统中,程序的执行方式是顺序执行,即在内存中仅装入一道用户程序,由它独占系统中的所有资源,只有在一个用户程序执行完成后,才允许装入另一个程序并执行。可见,这种方式浪费资源、系统运行效率低等缺点。

单道批处理系统:程序的执行方式是顺序执行即在内存中仅装入一道用户程序,由它独占系统中的所有资源,只有在一个用户程序执行完成后,才允许装入另一个程序并执行。
缺点:这种方式浪费资源、系统运行效率低等缺点 

作用 

 为了能更好地描述程序的顺序和并发执行情况,我们先介绍用于描述程序执行先后顺序的前趋图。所谓前趋图(Precedence Graph),是指一个有向无循环图,可记为DAG(Directed Acyclic Graph),它用于描述进程之间执行的先后顺序。图中的每个结点可用来表示一个进程或程序段,乃至一条语句,结点间的有向边则表示两个结点之间存在的偏序(Partial Order)或前趋关系(Precedence Relation)。

表示

进程(或程序)之间的前趋关系可用“→”来表示,如果进程Pi和Pj存在着前趋关系,可表
示为(Pi,Pj)∈→,也可写成Pi→Pj,表示在Pj开始执行之前Pi 必须完成。此时称Pi是Pj的直接前趋,而称Pj是Pi的直接后继。在前趋图中,把没有前趋的结点称为初始结点(Initial Node),把没有后继的结点称为终止结点(Final Node)。此外,每个结点还具有一个重量(Weight),用于表示该结点所含有的程序量或程序的执行时间。

示例

 图(a)存在着如下前趋关系:
P1→P2,P1→P3,P1→P4,P2→P5,P3→P5,P4→P6,P4→P7,P5→P8,P6→P8,
P7→P9,P8→P9
或表示为:
P={P1, P2, P3, P4, P5, P6, P7, P8, P9}
={(P1, P2), (P1, P3), (P1, P4), (P2, P5), (P3, P5), (P4, P6), (P4, P7), (P5, P8), (P6, P8), (P7,P9), (P8, P9)}

 前趋图中是不允许有循环的,否则必然会产生不可能实现的前趋关系。图(b)所示的前趋
关系中就存在着循环。它一方面要求在S3开始执行之前,S2必须完成,另一方面又要求在S2
开始执行之前,S3必须完成。显然,这种关系是不可能实现的。

S2→S3,S3→S2

 程序的顺序执行

通常,一个应用程序由若干个程序段组成,每一个程序段完成特定的功能,它们在执行时,都需要按照某种先后次序顺序执行,仅当前一程序段执行完后,才运行后一程序段。例如,在进行计算时,应先运行输入程序,用于输入用户的程序和数据;然后运行计算程序,对所输入的数据进行计算;最后才是运行打印程序,打印计算结果。我们用结点(Node)代表各程序段的操作(在上页图中用圆圈表示),其中I代表输入操作,C代表计算操作,P为打印操作,用箭头指示操作的先后次序。

 这样,上述的三个程序段间就存在着这样的前趋关系:Ii→Ci→Pi,其执行的顺序可用前
趋图(a)描述。

 即使是一个程序段,也可能存在着执行顺序问题,下面示出了一个包含了三条语句的程序段:
S1: a :=x+y;
S2: b :=a-5;
S3: c :=b+1;
其中,语句S2必须在语句S1后(即a被赋值)才能执行,语句S3也只能在b被赋值后才能执行,因此,三条语句存在着这样的前趋关系:S1→S2→S3,应按前趋图(b)所示的顺序执行 

程序顺序执行的特征 

在程序顺序执行时,具有这样三个特征:
① 顺序性:指处理机严格地按照程序所规定的顺序执行,即每一操作必须在下一个操作开始之前结束;
② 封闭性:指程序在封闭的环境下运行,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它,程序一旦开始执行,其执行结果不受外界因素影响;
③ 可再现性:指只要程序执行时的环境和初始条件相同,当程序重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都可获得相同的结果。程序顺序执行时的这种特性,为程序员检测和校正程序的错误带来了很大的方便。

程序的并发执行

我们通过一个常见的例子来说明程序的顺序执行和并发执行。已知前述的输入程序、计算程序和打印程序三者之间,存在着Ii→Ci→Pi这样的前趋关系,以至对一个作业的输入、计算和打印三个程序段必须顺序执行。但若是对一批作业进行处理时,每道作业的输入、计算和打印程序段的执行情况如图所示

观察上图可以看出,存在前趋关系Ii→Ci,Ii→Ii+1,Ci→Pi,Ci→Ci+1,Pi→Pi+1,而Ii+1和Ci及Pi-1是重叠的,即在Pi-1和Ci以及Ii+1之间,不存在前趋关系,可以并发执行。
观察下图可以看出,对于具有下述四条语句的程序段:
S1: a :=x+2
S2: b :=y+4
S3: c :=a+b
S4: d :=c+b
可画出如上图的前趋关系。可以看出:S3必须在a和b被赋值后方能执行;S4必须在S3之
后执行;但S1和S2则可以并发执行,因为它们彼此互不依赖。 

 程序的并发执行的特征

在引入了程序间的并发执行功能后,虽然提高了系统的吞吐量和资源利用率,但由于它们共
享系统资源,以及它们为完成同一项任务而相互合作,致使在这些并发执行的程序之间必将
形成相互制约的关系,由此会给程序并发执行带来新的特征。

(1) 间断性。
(2) 失去封闭性。
(3) 不可再现性。

例题解读 

【2019上系分真题第30题:绿色】
30.前趋图是一个有向无环图,记为→={(Pi,Pj)pi完成时间先于Pj开始时间}。假设系统中进P={P1,P2,P3,P4,P5,P6,P7,P8},且进程的前趋图如下:

 A.→={(P1,P2),(P1,P3),(P1,P4),(P2,P5),(P3,P2),(P3.P4).(P3,P6).(P4,P7),(P5,P8)
B.→={(P1,P2),(P1,P4),(P2,P3),(P2,P5),(P3,P4),(P3,P6),(P4,P7),(P5,P6),(P6,P8),(P7,P6)}
C.→={(P1,P2),(P1,P4),(P2,P5),(P3,P2),(P3,P4),(P3,P6),(P4,P6),(P4,p7),(p6,p8),(p7,P8)}
D.→={ P1,P2),(P1,P3),(P2,P4),(P2,P5),(P3,P2),(P3 ,P4),(P3,P5),(P4,P7),(P6,P8),(P7,P8)}

A.存在着10个前趋关系,P1为初始结点,P2P4为终止结点
B.存在着2个前趋关系,P6为初始结点,P2P4为终止结点
C.存在着9个前趋关系,P6为初始结点,P8为终止结点
D.存在着10个前趋关系,P1为初始结点,P8为终止结点

解答:答案选择B|D。
前趋图中,箭线代表前趋关系,结点代表进程,本图中P1是起点,P8是终点,一共有10个前趋关系。每个前趋关系可用(结点1,结点2)的形式表示,如:P1到P2之间的前趋关系可用:(P1,P2)表示。

 进程的三种基本状态

由于多个进程在并发执行时共享系统资源,致使它们在运行过程中呈现间断性的运行规律,所以进程在其生命周期内可能具有多种状态。一般而言,每一个进程至少应处于以下三种基本状态之一:(1) 就绪(Ready)状态。
(2) 执行(Running)状态。
(3) 阻塞(Block)状态。

进程的三种状态之间的转换

进程在运行过程中会经常发生状态的转换。例如,处于就绪状态的进程,在调度程序为之分配了处理机之后便可执行,相应地,其状态就由就绪态转变为执行态;正在执行的进程(当前进程)如果因分配给它的时间片已完而被剥夺处理机暂停执行时,其状态便由执行转为就绪;如果因发生某事件,致使当前进程的执行受阻(例如进程访问某临界资源,而该资源正被其它进程访问时),使之无法继续执行,则该进程状态将由执行转变为阻塞。图2-5示出了进程的三种基本状态,以及各状态之间的转换关系。

进程的创建状态

进程是由创建而产生。创建一个进程是个很复杂的过程,一般要通过多个步骤才能完成:如首先由进程申请一个空白PCB,并向PCB中填写用于控制和管理进程的信息;然后为该进程分配运行时所必须的资源;最后,把该进程转入就绪状态并插入就绪队列之中。但如果进程所需的资源尚不能得到满足,比如系统尚无足够的内存使进程无法装入其中,此时创建工作尚未完成,进程不能被调度运行,于是把此时进程所处的状态称为创建状态。

进程的终止状态

进程的终止也要通过两个步骤:首先,是等待操作系统进行善后处理,最后将其PCB清零,并将PCB空间返还系统。当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结,它将进入终止状态。进入终止态的进程以后不能再执行,但在操作系统中依然保留一个记录,其中保存状态码和一些计时统计数据,供其他进程收集。一旦其他进程完成了对其信息的提取之后,操作系统将删除该进程,即将其PCB清零,并将该空白PCB返还系统。

挂起操作与进程状态的转换 

挂起操作的引入
引入挂起操作的原因,是基于系统和用户的如下需要:
(1) 终端用户的需要。
(2) 父进程请求。
(3) 负荷调节的需要。
(4) 操作系统的需要。

引入挂起原语操作后三个进程状态的转换
在引入挂起原语Suspend和激活原语Active后,在它们的作用下,进程将可能发生以下几种状态的转换:
(1) 活动就绪→静止就绪。
(2) 活动阻塞→静止阻塞。
(3) 静止就绪→活动就绪。
(4) 静止阻塞→活动阻塞。

引入挂起操作后五个进程状态的转换
下图(右)增加了创建状态和终止状态后具有挂起状态的进程状态及转换图。
引进创建和终止状态后,在进程状态转换时,与下图(左)的进程五状态转换相比较,要
增加考虑下面的几种情况:
(1) NULL→创建:
(2) 创建→活动就绪:
(3) 创建→静止就绪:
(4) 执行→终止:

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

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

相关文章

linux下RabbitMQ的使用

文章目录 linux下RabbitMQ的使用首先docker启动网页打开网址:用户名和密码登录创建exchanges:创建Queues增加Queues的Bind linux下RabbitMQ的使用 首先docker启动 su rootsudo docker run -d --hostname rabbitsvr --name rabbit -p 5672:5672 -p 15672:15672 -p …

Uniform的理解

Uniform:一种从Cpu的应用,向Gpu中的着色器发送数据的方式,它是全局的,可以被任意着色器程序在任意阶段访问。 若声明了一个Uniform却没用过,编译器会默认移除这个变量,导致编译出的版本并不包含它&#xff…

配置本地的application-dev.yml读取nacos上面的配置

我想配置本地的application-dev.yml读取nacos上面的配置,我应该在配置文件里怎么写?并且在nacos里怎么建立 在本地的application-dev.yml文件中,您可以使用Spring Cloud Nacos来读取Nacos上的配置。以下是在配置文件和Nacos中设置的步骤&…

servlet+JSP与SpringBoot+Vue项目交互——servlet访问Vue页面

问题 servletJSP与SpringBootVue项目交互——servlet访问Vue页面 详细问题 笔者前一段时间开发一个项目,使用的技术框架是servletJSP,现阶段开发的项目技术框架为SpringBootVue,笔者现在需要输入servletJSP的路由地址(登录页面…

3DTiles Next研究

3DTiles Next是Cesium发布的下一代3DTiles规范。 元数据 在这一代规范中,更重视元数据(metadata,如建筑物ID或者类型等),通过这些元数据可以对3dtiles进行样式调整或者过滤显示。 关于详细的元数据规范介绍看这里。 …

Spark SQL生产优化经验--任务参数配置模版

大表扫描 特殊case说明:当任务存在扫event_log表时需注意,若对event_log表进行了过滤,且过滤比很高,如下图的case,input为74T,但shuffle write仅为3.5G,那么建议提高单partition的读取数据量&a…

Redis数据库高可用之RDB和AOF持久化

Redis数据库高可用、RDB和AOF持久化、性能管理 一、Redis 高可用二、Redis 持久化Ⅰ、持久化的功能Ⅱ、两种持久化方式Ⅲ、RDB 和 AOF 的区别 三、RDB 持久化Ⅰ、触发条件Ⅱ、执行流程 四、AOF持久化Ⅰ、开启AOFⅡ、执行流程 五、RDB 和 AOF 的优缺点Ⅰ、RDB 持久化Ⅱ、AOF 持久…

金鹰优化算法,附MATLAB代码,直接复制

金鹰优化算法(golden eagle optimizer, GEO)是于2020年提出的新型智能优化算法,该算法建立于金鹰个体 捕食过程中的巡航和攻击行为之上,通过平衡两者关系,帮助函数寻找最优值,已经在许多方面得到了应用。 关…

Google 将为高端 Chromebook 推出独立品牌

说起 Chromebook,一般大家的第一印象就是价格便宜、配置不高、做工普通,所选的材料也都是以塑料为主,产品主打的市场也是学生和教育群体。在不少人看来,Chromebook 就是一个配备了功能齐全的浏览器,外加一定的文件管理…

GOLANG进阶:Viper,Mysql,Swagger

GOLANG从浅入深必须学习的一些工具包 1.Viper: Viper 是一个完整的 Go 应用程序配置解决方案,优势就在于开发项目中你不必去操心配置文件的格式而是让你腾出手来专注于项目的开发。其特性如下: 支持 JSON/TOML/YAML/HCL/envfile/Java proper…

数据结构--栈在函数递归中的调用

数据结构–栈在函数递归中的调用 void func2(int x) {int n, m;//... }void func1(int a, int b) {int x;//...func2(x);x 5201314;//... }int main() {int a, b, c;//...func1(a, b);//... }函数调用的特点:最后被调用的函数最先执行结束(LIFO) 函数调用时,需要用…

【人工智能与机器学习】基于卷积神经网络CNN的猫狗识别

文章目录 1 引言2 卷积神经网络概述2.1 卷积神经网络的背景介绍2.2 CNN的网络结构2.2.1 卷积层2.2.2 激活函数2.2.3 池化层2.2.4 全连接层 2.3 CNN的训练过程图解2.4 CNN的基本特征2.4.1 局部感知(Local Connectivity)2.4.2 参数共享(Parameter Sharing)…

顶点数据加入颜色数据

顶点着色器代码: #version 330 core layout(location 0) in vec3 aPos; layout(location 1) in vec3 aColor; out vec3 ourColor; void main(){gl_Position vec4(aPos.x, aPos.y, aPos.z, 1.0f);ourColoraColor; }片段着色器代码: #version 330 cor…

11-切片有什么用?【视频版】

目录 问题视频解答 问题 视频解答 点击观看: 11-切片有什么用?

学习 vue3版本

文章目录 创建各种函数setup注意点 ref函数总结 reactive总结 响应式vue2vue3总结 ref与reactive的比较计算属性监视watch的value的问题 watchEffect函数生命周期Hooks函数总结 toRef总结 其他CompositionApishallowReactive与shallowRefreadonly与shallowReadonlytoRaw与markR…

React Antd Form.List 组件嵌套多级动态增减表单 + 表单联动复制实现

Antd Form.List 组件嵌套多级动态增减表单 表单联动复制实现 一、业务需求 有一个页面的组件,其中一部分需要用到动态的增减 复制表单,然后就想起 了使用 Antd 的 Form.List 去完成这个功能。 这个功能的要求是: 首先是一个动态的表单&…

事后多重比较案例分析

一、案例介绍 由单因素方差分析案例中,为研究郁金对低张性缺氧小鼠存活时间的影响,将36只小鼠随机生成A、B以及 C 三组,每组12个,雌雄各半,分别以10g/kg、20g/kg、40g/kg三种不同剂量的郁金灌胃,各组小鼠均…

08-C++学习笔记-类与对象

🔟🔒 08-C学习笔记-类与对象 在本篇学习笔记中,我们将详细讲解C中的类与对象的概念和相关知识。类是C中一种重要的数据类型,它允许我们自定义数据结构和相应的操作。 📚 C类与对象详细讲解 ✨类的概念 类是一种用户…

黑客(网络安全)自学

前言: 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多 google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答 .4.遇到实在搞不懂的,可以先放放,以后…

3dmax导出cad

3dmax2022 导出cad 导入arcmap 10.2 导出版本为AutoCAD 2007 DWG