进程的基本概念解读

目录

什么是进程

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.hqwc.cn/news/4398.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring面试题--Spring的bean的生命周期

这个问题比较困难,设计到了spring的底层,但是通过这个的学习,可以帮助我们了解Spring容器是如何管理和创建bean实例,以及方便调试和解决问题。 BeanDefinition bean的定义信息,Spring容器在进行实例化时,…

初学mybatis(二)CRUD操作及配置解析

学习回顾:初学mybatis(一) 一、namespace 1、将上面案例中的UserMapper接口改名为 UserDao;2、将UserMapper.xml中的namespace改为为UserDao的路径 .3、再次测试 结论: 配置文件中namespace中的名称为对应Mapper接口或…

常州工学院数字图像处理及应用2022-2023第二学期实验报告 + 期末

《数字图像处理及应用》 课程 实验报告书 专业班级: 21计二 姓 名: 王梓权 学 号: 21030228 指导教师: 徐则中 计算机信息工程学院 《数字图像处理》实验 实验教学目的和要求 《数字图像处理》课程内容是一门综合…

Linux 用户名称高亮和最近路径显示

1、通常情况下,Linux中的路径名称会不断叠加显示,如下图,这样看起来会很长。 2、为了设置路径只是当前最近的文件路径,先进入自己的家目录,然后进入.bashrc: 3、在.bashrc文件中的最后一行加入以下内容…

【Data Studio 2.1.0连接openGauss2.1.0】

Data Studio 2.1.0连接openGauss2.1.0 一、实验环境说明二、配置客户端接入方式三、Data Studio2.1.0连接openGauss数据库 一、实验环境说明 openGauss2.1.0版本Data Studio 2.1.0 版本 二、配置客户端接入方式 【以下操作是omm用户进行】 修改配置文件pg_hba.conf&#xf…

tiny tool - get_file_path_name_by_drop_file

文章目录 tiny tool - get_file_path_name_by_drop_file概述工程效果收获的知识点vs2022工程, 必须自己设置对话框可以接受文件的风格vs2022建立的工程, 默认是unicode编码, 设置剪贴板数据时, 必须要设置为unicode的格式, 否则剪切板中只有第一个字符工程主要实现END tiny too…

【Linux】线程同步(互斥锁和读写锁)

概念 线程同步是指多个线程之间协调和管理彼此的执行顺序,以避免竞态条件和不确定的结果。线程同步的目的是确保共享资源的正确访问和保护临界区的完整性。 作用 避免竞态条件:当多个线程同时访问和修改共享资源时,可能会导致竞态条件的发生…

微信小程序的跨页面传参以及data-方法的相关细节

🙂博主:小猫娃来啦 🙂文章核心:微信小程序的跨页面传参以及data-方法的相关细节 目录 前言wx.navigateTo()方法微信小程序传参的几种方式通过data-属性传参关于data-方法配合点击事件传参的细节 前言 其实在学习新东西的过程中&a…

【Twitter爬虫】Twitter网络爬虫

利用selenium爬取Twitter 从2月9日起,Twitter不再支持免费访问Twitter API,继续使用Twitter API支付较高的费用。下面将介绍一种绕过Twitter API爬取推文的方式 Selenium Webdriver框架 首先介绍一下Selenium Webdriver,这是一款web自动化…

R+VIC 模型融合实践技术应用及未来气候变化模型预测

目前,无论是工程实践或是科学研究中都存在很多著名的水文模型如SWAT/HSPF/HEC-HMS等。虽然,这些软件有各自的优点;但是,由于适用的尺度主要的是中小流域,所以在预测气候变化对水文过程影响等方面都有所不足。 VIC模型…

Web服务器群集:部署Tomcat

目录 一、理论 1.Tomcat 2.JDK 3.Tomcat安装 4.Tomcat优化 5.Tomcat虚拟主机设置 二、实验 1.JDK安装 2.Tomcat安装 3.Tomcat优化 4.Tomcat 虚拟主机配置 三、总结 一、理论 1.Tomcat (1)概念 Tomcat服务器是一个免费的开放源代码的Web应用…