操作系统1 联系客服

发布时间 : 星期二 文章操作系统1更新完毕开始阅读38c57321dd36a32d7375817e

第二章 进程的描述与控制

从第二章开始要深入地考察操作系统是如何设计和构造的。操作系统中最核心的概念是进程。操作系统的其他所有内容都是围绕进程展开的,所以我们在学习操作系统原理时,首先理解进程是必要的。

本章要讲授的主要内容:

1、 为什么要引入“进程”的概念。 2、 进程是什么?

3、 如何创建、撤消进程,如何改变进程的状态-即进程控制的有关问题。

2.1 前趋图和程序执行 2.1.1 前趋图的定义

前趋图是有向无循环图,图中结点表示程序、程序段、语句、进程。有向边表示结点之间的偏序关系。一个前趋图表示了这样一种偏序关系:用“→”表示这种偏序关系,若Pi,Pj是图中结点,→=

,前趋图中任意两个结点Pi,Pj。

若满足“→”表示的偏序关系,可表示为Pi→Pj,读作:Pi是Pj的前趋,Pj是Pi的后继。在一个前趋图中没有前趋的结点称为起点,没有后继的结点称为终点。

2.1.2 程序顺序执行

1、 程序顺序执行的含义:程序在执行时,必须按照某种先后次序逐个执行,仅当前一

操作执行完后,才能执行后继操作。 (1) 多个程序段一个一个顺序执行, (2) 一个程序段的语句依顺序执行。 2、 程序顺序执行时的特征。

(1) 顺序性:外理机的操作,严格按照程序所规定的顺序执行。

(2) 封闭性:程序运行时,独占全机资源,因而机内各资源的状态,只有本程序才能改

变。

(3) 可再现性:在初始条件相同的情况下,同一程序对在同一数据集上的不同次的运行

产生的结果是相同的。

2.1.3 程序并发执行

1、 程序并发执行。

是指在同一时间间隔内,运行多个程序,一个程序还没有执行完,可以运行其它的程序。对用户而言,看到的是计算机同时运行多个程序。

程序并发执行的方式,可以是多CPU,也可以是多个程序分片使用一个CPU,(从系统来看),为了说明进程概念的引入,我们先来了解一下程序并发执行的特征。

2、 程序并发执行时的特征。 (1) 间断性

(2) 失去封闭性:(对一个程序而言),一个正在运行的程序,所“见”到的运行环境的

状况由于其它程序的运行而改变。 如:一个程序往打印机缓冲区中送了一个文件,但由于另一个程序随后也往同一缓冲区中送了一个文件,使前一个程序获得打印机使用权时,打印出来的结果不是自己所需要的(这种状况是我们在设计OS时必须考虑并且去解决的)。

(3) 不可再现性:同一程序处理同一种输入时,可能得到不同的结果。程序执行的结果

不可再现。

例:A程序循环执行N:=N+1;B程序循环执行Print(N); N:=0;若A、B并发执行,而且OS不加干涉,假设N初值为n,

(1) 当执行顺序为:①N:=N+1;②Print(N);③N:=0时:N的结果为:n+1,n+1,0 (2) 当执行顺序为:①Print(N);②N:=0;③N:=N+1时:N的结果为:n,0,1 (3) 当执行顺序为:①Print(N);②N:=N+1;③N:=0时:N的结果为:n,n+1,0

对程序②来讲,肯定去执行Print(N),现执行N:=0,顺序不会变,但是,两语句的执行不一定是连续的。

2.1.4 程序并发执行的条件

在允许程序并发执行的系统中,必须采取措施,保证程序执行的再现性,从而保证程序执行能得到唯一正确的结果。

Bernstein条件是保证并发执行的程序具有可再现性的必要条件:若R(pi)= {a1,a2,a3,…an}表示程序Pi在执行期间所要读的变量集合,W(pi)={b1,b2,b3,…bn}表示程序Pi在执行期间所要写的变量集合,若程序Pi和Pi能满足条件: R(p1)∩W(p2)∪R(p2) ∩W(p1) ∪W(p1) ∩W(p2)={ },则P1和P2可以并发执行。(P1,P2并发执行具有可再现性)。我们可以这样现解Bernstein条件:

1、 P1读变量与P2的写变量不能是公共的, 2、 P1的写变量与P2的读变量不能是公共的, 3、 P1,P2不能往同一个变量中写。 举例说明: 设:

程序1 程序2 程序3

这三个程序若并发执行,可能出现十分荒谬的结果,当程序2还没有将读出的1赋给变量b时,程序2时间片用完,OS调度程序3执行C=a+b,结果为1+0=1,对用户而言,不知自己的程序为什么会得出1+1=1而不是2的错误结果。

这时程序并发执行的执行顺序可能是:

并发程序执行的语句顺序发生变化时,引起了执行结果的错误。

这个例子说明,若在Bernstein条件中,若P1的读变量与P2的写变量是公共的,在P1

的输入不变时,可能不同一次执行由于读之前P2正好写或没有写公用变量,造成了P1最终执行结果的不同,使P1的执行不可再现。可再现的前提是(或者说可再现的条件相同)指的是P1本身的输入条件不变,P1在同一个数据集上执行,象上例中的程序3,C:=a+b,读入的是f1和f2两个文件的内容,f1,f2不变而不同次的执行,由于执行顺序的变化,导致程序3的不同结果)。 例2: 程序1:程序2:

2.2 进程的描述

上一节说明了程序并发执行的特点,这一节首先我们说明为什么引入进程的概念,然后对进程的定义、特征进行说明。

进程概念的引入是为了跟踪描述程序的并发执行,当允许程序并发执行时,并发执行的程序可能是同一个程序在不同数据集合上的执行,也可能是不同的程序在不同数据集合上的执行,它们共享系统资源,用程序已不能方便地描述程序的并发执行,所以引入了进程的概念。

2.2.1 进程的定义与特征

一、进程的定义:可并发执行的程序在一个数据集合上的运行过程。

程序装入内存后就可以运行了:在指令指针寄存器(IP)的控制下,不断将指令取到CPU运行,这些指令控制的对象不外乎各种存储器(内存、外存、和各种CPU寄存器),这些存储器中保存着待运行的指令和待处理的数据,指令只有得到CPU才能发挥其作用,可见,在计算机内部,程序的执行过程实际上就是一个执行环境的总和,这个执行环境包括程序中各种指令和数据,还有一些额外数据,比如说寄存器的值、用来保存临时数据(如:传递给某个函数的参数、函数的返回地址、保存变量)的堆栈、被打开文件的数量及输入输出设备的状态等等。这个执行环境的动态变化表征程序的运行。一个进程对应了一个这样的环境。进程代表了程序的执行过程,是一个动态的实体,它随着程序中指令的执行而不断地变化、在某个特定时刻的进程的内容被称为进程映像。 二、进程的特征

1、 并发性:多个进程实体,同存于内存中,能在一段时间内同时运行。

2、 动态性:进程既然是进程实体的执行过程,因此,动态性是进程最基本的特征。动

态性还表现为“它由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤消而消亡”。

3、 独立性:独立运行和资源调度的基本单位。 4、 异步性:以不同的、不可预知的速度向前推进。

5、 结构特征:数据、程序、PCB用户级上下文,系统级上下文,寄存器上下文。 三、进程与程序的比较

1、 区别

(1) 程序是静态的概念,进程是动态的概念。程序是一组指令的有序集合,而进程是程

序的一次运行活动,或者说它是程序的执行过程,它的着眼点是活动、运行、过程。它的活动性还表现在:它可以由系统“创建”而产生,由“撤消”而消亡,由“调度”而执行。

(2) 程序是永久的,进程是暂时存在的。程序是指令的集合,以0,1代码的形式存在

于某种存储介质上,无论执行与否,它都存在着;而进程只有在执行程序时被创建之后才存在,程序执行完毕,进程就被撤消,不存在了。

(3) 程序与进程的存在实体不同。程序就是代码构成的,进程是由程序代码,数据结构

两部分构成。 2、 联系

(1) 进程是程序的一次执行,进程总是对应一个特定的程序,执行程序的代码,一个进

程至少要对应一个程序。

(2) 一个程序可以对应多个进程。同一个程序段可以在不同的数据集合上运行,因而构

成若干个不同的进程。

例1:一个打印输出程序段,当它用来打印不同作业计算结果时,就构成者干个不同的进程。

例2:IE每次启动一个IE访问不同的网络构成同时访问多个网络的几个不同的IE进程。 进程与程序好比做菜的过程与菜谱。 四、进程的存在

当一个程序要执行时,OS为其创建一个PCB块,填上初始信息,将程序及数据装入内存,这时进程就创建而存在?PCB是进程存在的唯一标志,(后面要专门讲述)。

程序和进程的组成图

正文段(存放被执行的机器指令) 用户数据段 系统数据段 进程

在某个特定时刻的进程的内容被称为进程映像。

2.2.2 进程的基本状态

一、进程的三种基本状态(强调:不同的OS,为进程定义的状态不同)

1、 就绪状态:进程一旦获得CPU就可以投入运行的状态。 2、 执行状态:进程获得CPU正在运行的状态。

3、 阻塞状态:进程由于等待资源或某个事件的发生而暂停执行的状态。 二、新状态和终止状态――由于“两步走”而引入: