第2章 进程的描述与控制(1)

2.1 前趋图和程序执行

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

2.1.1 前趋图

为了能更好地描述程序的顺序和并发执行情况,我们先介绍用于描述程序执行先后顺序的前趋图。

所谓前趋图(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),用于表示该结点所含有的程序量或程序的执行时间。

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

2.1.2 程序顺序执行

  1. 程序的顺序执行
  • 通常,一个应用程序由若干个程序段组成,每一个程序段完成特定的功能,它们在执行时,都需要按照某种先后次序顺序执行,仅当前一程序段执行完后,才运行后一程序段。
  • 例如,在进行计算时,应先运行输入程序,用于输入用户的程序和数据;然后运行计算程序,对所输入的数据进行计算;最后才是运行打印程序,打印计算结果。我们用结点(Node)代表各程序段的操作(在图2-1中用圆圈表示),其中I代表输入操作,C代表计算操作,P为打印操作,用箭头指示操作的先后次序。
  • 这样,上述的三个程序段间就存在着这样的前趋关系:Ii→Ci→Pi,其执行的顺序可用前趋图2-2(a)描述。
    在这里插入图片描述

在这里插入图片描述
2. 程序顺序执行时的特征

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

2.1.3 程序并发执行

  1. 程序的并发执行
    我们通过一个常见的例子来说明程序的顺序执行和并发执行。在图2-2中的输入程序、计算程序和打印程序三者之间,存在着Ii→Ci→Pi这样的前趋关系,以至对一个作业的输入、计算和打印三个程序段必须顺序执行。但若是对一批作业进行处理时,每道作业的输入、计算和打印程序段的执行情况如图所示。
    在这里插入图片描述
    对于具有下述四条语句的程序段:
    S1: a :=x+2
    S2: b :=y+4
    S3: c :=a+b
    S4: d :=c+b
    可画出图2-4所示的前趋关系。可以看出:S3必须在a和b被赋值后方能执行;S4必须在S3之后执行;但S1和S2则可以并发执行,因为它们彼此互不依赖。
    在这里插入图片描述
  2. 程序并发执行时的特征
    在引入了程序间的并发执行功能后,虽然提高了系统的吞吐量和资源利用率,但由于它们共享系统资源,以及它们为完成同一项任务而相互合作,致使在这些并发执行的程序之间必将形成相互制约的关系,由此会给程序并发执行带来新的特征。
    (1) 间断性(制约)。
    (2) 失去封闭性。
    (3) 不可再现性。
    在这里插入图片描述

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

2.2 进 程 的 描 述

2.2.1 进程的定义和特征

  1. 进程的定义
    在多道程序环境下,程序的执行属于并发执行,此时它们将失去其封闭性,并具有间断性,以及其运行结果不可再现性的特征。由此,决定了通常的程序是不能参与并发执行的,否则,程序的运行也就失去了意义。
    为了能使程序并发执行,并且可以对并发执行的程序加以描述和控制,人们引入了“进程”的概念。
    在这里插入图片描述
  2. 进程的特征
    进程和程序是两个截然不同的概念,除了进程具有程序所没有的PCB结构外,还具有下面一些特征:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.2.2 进程的基本状态及转换

  1. 进程的三种基本状态
    由于多个进程在并发执行时共享系统资源,致使它们在运行过程中呈现间断性的运行规律,所以进程在其生命周期内可能具有多种状态。一般而言,每一个进程至少应处于以下三种基本状态之一:
    在这里插入图片描述
    在这里插入图片描述
    进程的三种基本状态,以及各状态之间的转换关系。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.2.3 挂起操作和进程状态的转换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
具有创建、终止和挂起状态的进程状态图
在这里插入图片描述

2.2.4 进程管理中的数据结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4. 进程控制块的组织方式
在一个系统中,通常可拥有数十个、数百个乃至数千个PCB。为了能对它们加以有效的管理,应该用适当的方式将这些PCB组织起来。目前常用的组织方式有以下三种。
(1) 线性方式,即将系统中所有的PCB都组织在一张线性表中,将该表的首址存放在内存的一个专用区域中。该方式实现简单、开销小,但每次查找时都需要扫描整张表,因此适合进程数目不多的系统。图2-10示出了线性表的PCB组织方式。
在这里插入图片描述
(2) 链接方式,即把具有相同状态进程的PCB分别通过PCB中的链接字链接成一个队列。这样,可以形成就绪队列、若干个阻塞队列和空白队列等。对就绪队列而言,往往按进程的优先级将PCB从高到低进行排列,将优先级高的进程PCB排在队列的前面。同样,也可把处于阻塞状态进程的PCB根据其阻塞原因的不同,排成多个阻塞队列,如等待I/O操作完成的队列和等待分配内存的队列等。图2-11示出了一种链接队列的组织方式。
在这里插入图片描述
(3) 索引方式,即系统根据所有进程状态的不同,建立几张索引表,例如,就绪索引表、阻塞索引表等,并把各索引表在内存的首地址记录在内存的一些专用单元中。在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的地址。图2-12示出了索引方式的PCB组织。
在这里插入图片描述

2.3 进 程 控 制

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

2.3.1 操作系统内核

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

2.3.2 进程的创建

  1. 进程的层次结构
    在OS中,允许一个进程创建另一个进程,通常把创建进程的进程称为父进程,而把被创建的进程称为子进程。子进程可继续创建更多的孙进程,由此便形成了一个进程的层次结构。如在UNIX中,进程与其子孙进程共同组成一个进程家族(组)。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.3.3 进程的终止

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

2.3.4 进程的阻塞与唤醒

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

2.3.5 进程的挂起与激活

在这里插入图片描述

习题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【例】进程从运行状态变为等待的原因可能是()
A 输入输出事件发生
B 时间片到
C 输入输出时间完成
D 某个进程被唤醒
【答案】A
在这里插入图片描述
【例】一个进程被唤醒,意味着()
A 该进程重新占有了CPU
B 进程状态变成就绪
C 它的优先权变为最大
D 其PCB移至据许队列的对首
【答案】B
在这里插入图片描述
【例】一个进程释放一种资源有可能导致一个或几个进程()
A 由就绪变运行
B 由运行变就绪
C 由阻塞变运行
D 由阻塞变就绪
【答案】D
在这里插入图片描述
【例】进程具有三种基本状态,阻塞态,运行态,就绪态,进程在执行过程中,其状态总是在不停地发生变化,下面关于进程状态变换的说法中正确的是()。
A 进程一旦形成,首先进入的是运行状态
B 三种进程状态是进程运行过程的基本状态,进程可能同时处于某几种状态中
C 一个进程必须经过进程的三个基本状态后才能结束
D 在分时系统中,一个正在运行进程的时间片到,该进程将进入就绪状态
【解答】D
在这里插入图片描述
【例】进程被创建后,最初处于()状态,然后经()选中后进入()状态。
【答案】就绪
进程调度程序
运行
在这里插入图片描述
【例】判断:当进程完成I/O后,进程的状态由等待变为运行。()
【答案】错误
【解析】当进程完成I/O后,进程的状态变为就绪,何时运行由进程调度程度决定
在这里插入图片描述

END
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值