目录
前趋图:
是指一个有向无循环图,可记为DAG,用于描述进程之间的先后顺序
图中的每个结点可用来表示一个进程或程序段,乃至一条语句,结点间的有向边则表示两个结点之间存在的偏序或前趋关系。
进程(或程序)之间的前趋关系可用“→”来表示。
如果进程Pi和Pj存在着前趋关系,可表示为(Pi,Pj)∈→,也可写成Pi→Pj,表示在Pj开始执行之前Pi 必须完成。
此时称Pi是Pj的直接前趋,而称Pj是Pi的直接后继。
在前趋图中,把没有前趋的结点称为初始结点,把没有后继的结点称为终止结点。
此外,每个结点还具有一个重量,用于表示该结点所含有的程序量或程序的执行时间。
程序顺序执行:
一个应用程序由若干个程序段组成,在执行时,都需要按照某种先后次序。
用结点代表各程序段的操作,其中I代表输入操作,C代表计算操作,P为打印操作,用箭头指示操作的先后次序。
一个程序段也可能存在执行顺序问题:
S1:a=x+y; S2:b=a-5; S3:c=b+1;
前趋图:S1->S2->S3
程序顺序执行时的特征:
1. 顺序性:指处理机严格地按照程序所规定的顺序执行,即每一操作必须在下一个操作开始之前结束
2. 封闭性:指程序在封闭的环境下运行,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它,程序一旦开始执行,其执行结果不受外界因素影响
3. 可再现性:指只要程序执行时的环境和初始条件相同,当程序重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都可获得相同的结果。
(程序顺序执行为程序员检测校正程序错误提供方便)
程序并发执行
由上图(程序并发执行时的前趋图)可以看出,存在前趋关系Ii→Ci,Ii→Ii+1,Ci→Pi,Ci→Ci+1,Pi→Pi+1,而Ii+1和Ci及Pi-1是重叠的,即在Pi-1和Ci以及Ii+1之间,不存在前趋关系,可以并发执行。
程序并发执行时的特征:
1.间断性
2.失去封闭性
3.不可再现性(两个程序A和B共享变量N,A做N=N+1操作,B做print(N)并清零操作。如A和B以不同速度运行,则N的值会发生变化。)
进程的描述
进程的定义
在多道程序环境下,程序的执行属于并发执行,此时它们将失去其封闭性,并具有间断性,以及其运行结果不可再现性的特征。由此,决定了通常的程序是不能参与并发执行的,否则,程序的运行也就失去了意义。为了能使程序并发执行,并且可以对并发执行的程序加以描述和控制,人们引入了“进程”的概念。
程序段、相关数据段、PCB===进程实体,简称进程
进程与程序的区别:
1)进程是一次运行的过程,属于一种动态的概念;而程序是指令的集合,是一个静态的概念。
2)进程可以并发执行;而程序不能。
3)进程是有生命期的;而程序是永久的。
4)进程是系统资源分配的独立单位,而程序则不行。
5) 一个程序可以对应多个进程。当同一程序同时运行于若干个不同的数据集合上时,它将属于若干个不同的进程。
程序就是一个指令序列,早期计算机只支持单道程序
进程是程序的一次执行过程,是一个程序及其数据在处理机上顺序执行时所发生的活动,是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
进程的定义:(动态)
程序的代码他本身放在程序段内,程序运行过程处理的数据放在数据段内(如变量)
cpu执行的时候,在低地址找指令,按顺序执行在高地址找变量(低地址上,高地址下)
进程的组成:
程序段、数据段、PCB三部分组成了进程实体(进程映像)。
一般情况下,我们把进程实体就简称为进程,例如,所谓创建进程,实质上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程实体中的PCB。
PCB是进程存在的唯一标志!
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
严格意义上:进程实体是静态的(是数据的集合,指的是数据本身),进程是动态的(是数据的的运行性的过程)。
进程的管理者(操作系统所需的数据都在PCB中)
程序本身的运行所需的数据在程序段、数据段中
PCB分类:
进程标识符
处理机状态
进程调度信息
进程控制信息
注: 进程的组成讨论的是一个进程内部由哪些部分构成的问题,而进程的组织讨论的是多个进程之间的组织方式问题 。
链接方式,其实就是操作系统会持有一系列指针,指针会指向不同状态的进程队列。
索引方式,操作系统为不同状态的进程,创建不同的索引表,表项指向PCB
动态性是进程最基本的特征
异步性会导致并发程序执行结果的不确定性
进程是资源分配、接受调度的基本单位
进程的状态与转换
进程的三种基本状态:
运行态:占有cpu,并在cpu上运行
单核处理机环境下,每一 时刻最多只有一个进程处于运行态。(双核环境下可以同时有两个进程处于运行态)
就绪态:已经具备运行条件,但由于没有空闲cpu,而暂时不能运行
进程已经拥有了除处理机之外所有需要的资源(比如打印机资源什么的),一旦获得处理机,即可立即进入运行态开始运行。即:万事俱备,只欠CPU
阻塞态(等待态):因等待某一事件而暂时不能运行
如:等待操作系统分配打印机、等待读磁盘操作的结果。CPU是计算机中最昂贵的部件,为了提高CPU的利用率,需要先将其他进程需要的资源分配到位,才能得到CPU的服务
创建态:所有初始化工作都做完以后,进程才可以正式的投入运行,在这个正式运行前的处理期间叫做创建态。
终止态:一个进程停止运行之后,还需要有一些后续的工作,这种期间的状态叫做终止态。