进程的基本概念解读(下)

简介: 进程的基本概念解读(下)

程序的顺序执行

通常,一个应用程序由若干个程序段组成,每一个程序段完成特定的功能,它们在执行时,都需要按照某种先后次序顺序执行,仅当前一程序段执行完后,才运行后一程序段。例如,在进行计算时,应先运行输入程序,用于输入用户的程序和数据;然后运行计算程序,对所输入的数据进行计算;最后才是运行打印程序,打印计算结果。我们用结点(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) 执行→终止:


相关文章
|
2月前
|
Go 调度 开发者
[go 面试] 深入理解进程、线程和协程的概念及区别
[go 面试] 深入理解进程、线程和协程的概念及区别
|
4月前
|
分布式计算 JavaScript 前端开发
多线程、多进程、协程的概念、区别与联系
多线程、多进程、协程的概念、区别与联系
58 1
|
4天前
|
数据采集 消息中间件 并行计算
进程、线程与协程:并发执行的三种重要概念与应用
进程、线程与协程:并发执行的三种重要概念与应用
15 0
|
5月前
|
存储 缓存 Linux
【Linux】进程概念(冯诺依曼体系结构、操作系统、进程)-- 详解
【Linux】进程概念(冯诺依曼体系结构、操作系统、进程)-- 详解
|
2月前
|
Linux Shell 调度
【在Linux世界中追寻伟大的One Piece】Linux进程概念
【在Linux世界中追寻伟大的One Piece】Linux进程概念
29 1
|
4月前
|
存储 Linux Shell
Linux进程概念(上)
冯·诺依曼体系结构概述,包括存储程序概念,程序控制及五大组件(运算器、控制器、存储器、输入设备、输出设备)。程序和数据混合存储,通过内存执行指令。现代计算机以此为基础,但面临速度瓶颈问题,如缓存层次结构解决内存访问速度问题。操作系统作为核心管理软件,负责资源分配,包括进程、内存、文件和驱动管理。进程是程序执行实例,拥有进程控制块(PCB),如Linux中的task_struct。创建和管理进程涉及系统调用,如fork()用于创建新进程。
57 3
Linux进程概念(上)
|
4月前
|
存储 Shell Linux
Linux进程概念(下)
本文详细的介绍了环境变量和进程空间的概念及其相关的知识。
32 0
Linux进程概念(下)
|
3月前
|
缓存 Linux 编译器
【Linux】多线程——线程概念|进程VS线程|线程控制(下)
【Linux】多线程——线程概念|进程VS线程|线程控制(下)
59 0
|
3月前
|
存储 Linux 调度
【Linux】多线程——线程概念|进程VS线程|线程控制(上)
【Linux】多线程——线程概念|进程VS线程|线程控制(上)
60 0
|
3月前
|
Java 调度 Windows
Java面试之程序、进程、线程、管程和并发、并行的概念
Java面试之程序、进程、线程、管程和并发、并行的概念
23 0
下一篇
无影云桌面