只有理解在不同环境下(裸机或多道程序),程序的执行方式的差异,才能彻底理解进程的概念。
一、程序顺序执行
1.1 程序的顺序执行
一个应用程序由若干程序段组成,每个程序段完成特定的功能,它们在执行时,都需要按照某种先后次序顺序执行,仅当前一程序执行完后,才运行后一程序段。
I代表输入操作,C代表计算操作,P为打印操作,用箭头指示操作的先后次序。三个程序段间就存在这样的前趋关系:I->C->P。
1.2 程序顺序执行时的特征
顺序性、封闭性、可再现性。顺序性指的是处理机严格地按照程序所规定的顺序执行,即每一操作必须在下一个操作开始前结束;封闭性指的是程序在封闭的环境下运行,程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它;可再现性是由封闭性导致的,只要程序执行时的环境和初始条件相同,当程序重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都将获得相同的结果。
二、程序并发执行
2.1 程序的并发执行
输入程序、计算程序和打印程序三者之间,存在Ii→Ci→Pi这样的前趋关系,以至对一个作业的输入、计算和打印三个操作,必须顺序执行,但不存在Pi→Ii+1这样的前驱关系,因而在对一批程序进行处理时,可使它们并发执行。
2.2 特征
程序并发执行,虽然提高了系统吞吐量,但也产生了一些与程序顺序执行时不同的特征:
间断性、失去封闭性、不可再现性。间断性指的是程序在并发执行时,虽然提高了系统吞吐量,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的程序之间,形成了相互制约的关系。对于同一个结点,可能存在多个前驱和多个后继。失去封闭性指的是程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行失去了封闭性。不可再现性指的是程序在并发执行时,由于失去了封闭性,也导致其失去可再现性。