目录:
一、进程的引入:
程序顺序执行:
举例:
- S1: a=x+y;
- S2: b=a-1;
- S3: c=b+8;
定义:程序在执行时,必须按照某种先后次序逐个执行,仅当前一操作执行完后,才能执行后继操作 为了能够直观地描述程序执行的顺序性,需要借助前趋图。
那么什么是前趋图呢?
前趋图(Procedence Graph):前趋图是一个有向无循环图(DAG)。图中的每个结点可用于表示一条语句、一个程序段或进程;结点间的有向边则表示在两结点之间存在的偏序或前趋关系“→”,→={(Pi,Pj)| Pi必须在Pj开始前完成 }。
前趋图在程序运行顺序表达上的运行!
假设有两个程序段:S1,S2
S1:I1—>C1—>P1
S2:I2—>C2—>P2
借助前趋图,二个程序段的执行流程可以描述为:
程序顺序执行的特征 :
- 程序执行的顺序性——处理机的操作严格按程序规定的顺序执行,即只有前一操作结束后才能执行后继操作 。
- 程序执行的封闭性——程序一旦开始运行,其执行结果不受外界因素的影响。
- 程序执行结果的确定性——程序执行的结果与它的执行速度、时间无关。
- 程序结果的可再现性——程序执行时的环境和初始条件相同,当程序多次重复执行时,都将获得相同的结果。
程序并发执行:
定义:在输入程序 I 、计算程序 C 和打印程序 P 三者之间,存在着Ii→Ci→Pi这样的前趋关系,以致对一个作业的输入、计算和打印三个操作必须顺序执行,但并不存在Pi→Ii+1关系。因而在对一批程序进行处理时,可使它们并发执行。
程序的并发执行有效的提高了系统的吞吐量,但是也产生了和顺序执行不同的新特征!
程序并发执行特性:
程序执行的间断性——程序执行的相互制约将导致并发程序具有“执行—暂停执行—执行”这种间断性的活动规律。(个人理解:就像多个人排队,有时你的需求等不到及时的补充,你需要等一等!)
程序执行失去封闭性——因多个程序共享系统中的资源,资源的状态会被多个程序改变,所以某程序在执行时必然会受到其他程序的影响。(个人理解:因为资源被共享了!)
程序执行结果的不可再现性——由于失去了封闭性,也将导致失去其可再现性。(个人理解:因为并发执行,因此该程序执行的整个过程的情况是一种动态的平衡,就如同人类社会人与人之间的相互交汇,所以你无法完美复现昨天的任何一个时刻场景。)
- 例如,A、B程序共享变n,A对n++、B输出n值并清零。由于A、B的运行速度不同,则A、B各执行一次时会产生3种不同的结果:
- (1)A先于B: 输出n+1,n=0;
- (2)B先于A:输出n, n=1;
- (3)A在B的两条语句间执行:输出n, n=0;
程序和计算不再一一对应——程序和计算是两个不同的概念,在程序并发执行中一个共享程序可对应多个“计算”,程序与“计算”已不再一一对应。(个人理解:就相当于我的这篇文章可以同时被多个人同时进行阅读浏览。)
多道程序设计:
定义:在采用多道程序设计的计算机系统中,允许多个程序同时进入一个计算机系统的内存储器并运行,这种让多个程序同时进入计算机计算的方法称为多道程序设计。
目的:提高处理器的效率,从而提高整个系统的效率。
必须解决的问题:
- 存储保护与程序浮动
- 处理器的管理和调度
- 系统资源的管理和调度
为何引入进程?
20世纪60年代,麻省理工学院的MULTICS系统和IBM的CTSS/360系统首先引入了进程。
目的:为了使程序在多道程序环境下能够并发执行(走走停停),并对并发执行的程序加以控制和描述,引入进程的概念。
构成:程序段、数据段及进程控制块三部分构成了一个进程的实体。
二、进程 :
进程的相关概念:
进程的定义:至今尚未有一个确切统一的概念对进程进行定义,以下给出几位权威人士对于进程的定义。
- 行为的一个规则称之为程序,程序在处理机上执行所发生的活动称之为进程。
- 进程是可以和其他计算机并发执行的计算。
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
- 进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位。
根据上面的描述可以把进程定义为——进程是具有独立功能的可并发执行的程序在一个数据集合上的运行过程,是系统进行资源分配和调度的独立单位。或者说,“进程”是进程实体的运行过程。
程序与进程之间的区别与联系:
区别:
- 进程是程序的一次执行,是一个动态的概念,程序是完成某个特定功能的指令的有序序列,是一个静态的概念。(进程是执行程序的动态过程,而程序是进程运行的静态文件!)
- 一个进程可以执行一个或几个程序,同一程序也可能由多个进程同时执行。
- 进程是系统进行资源分配和调度的一个独立单位,程序则不是。
- 程序可以作为一种软件资源长期保存,而进程是程序的一次执行过程,它是临时的,有生命期的。
- 进程是具有结构的——由程序段、数据段及进程控制块三部分构成 。
联系: 进程是程序的一次运行。
<