一、程序并发执行
程序的I(输入)、C(计算)、P(输出)三者之间存在Ii→Ci→Pi这样的前趋关系,对一个作业的输入、计算、打印三个操作,必须顺序执行,但并不存在Pi→ Ii+1关系,因而在对一批程序处理时,可使它们并发执行。并发执行是指两个程序的执行在时间上是重叠的。
1、程序并发执行的前趋图:
2、并发执行的特点:相互制约性、失去封闭性、不可再现性。
并发程序已与程序的执行顺序有关,失去了封闭性和可再现性。
例1:有两个循环程序A和B,共享一个变量N。
程序A每执行一次做:N=N+1
程序B每执行一次做:print(N),然后置N=0
程序A和B独立地并行工作,可能出现三种情况(假定某时刻N的值为n):
情况1:N=N+1; print(N); N=0;
结果: 输出 n+1; N=0
情况2:print(N); N=N+1; N=0;
结果: 输出 n; N=0
情况3:print(N);N=0; N=N+1;
结果: 输出 n; N=1
3、程序或程序段并发执行的条件:
若两个程序段p1、p2能满足下述条件,它们便能并发执行,具有可再现性。该条件称为Bernstein(伯恩斯坦)条件。
R(p1) ∩ W(p2) ∪ R(p2) ∩ W(p1) ∪W(p1) ∩ W(p2) = { }
R(pn)——pn的读集、W(pn)——pn的写集、
∩——“与”运算、∪——“或”运算 {}——空集。
例:S1:a=x+y R(S1)={x,y},W(S1)={a}
S2:b=z+1 R(S2)={z},W(S2)={b}
R(S1) ∩W(S2) ∪ R(S2) ∩W(S1) ∪W(S1)∩W(S2)={ };因此S1,S2可以并发执行
二、进程
1、进程的定义
在操作系统中,进程有如下几种定义:
Ÿ 1.进程是程序的一次执行过程。
Ÿ 2.进程是可以和别的计算并行执行的计算。
Ÿ 3.进程可定义为一个数据结构及能在其上进行操作的一个程序。
Ÿ 4.进程是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位。
Ÿ 5.进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。
2、进程和程序的区别
1)进程是一个动态概念,程序是静态概念,程序是指令的有序集合,无执行含义,进程则强调执行的过程。
2)进程具有并行特征(独立性、异步性:在不考虑资源共享的情况下,各进程的执行是独立的,执行速度是异步的),程序则没有。
3)不同的进程可以包含同一个程序,同一程序在执行中也可以产生多个进程。
4)并发性
5)独立性
3、进程的表示和调度
进程通常由程序、数据集和进程控制块(ProcessControl Black,记为PCB)组成。进程的程序部分描述了进程所要完成的功能。数据集部分包括程序在执行时所需的数据和工作区。程序和数据集是进程存在的物质基础,即进程的实体。进程控制块包含进程的描述信息和控制信息,是进程的动态特性的集中反映。
1.进程控制块
为描述进程的动态变化,便于系统对进程进行有效的控制和管理,系统中为每一进程设置一个进程控制块。进程控制块是进程存在的惟一标志。当系统创建一个进程时,系统为其创建一个PCB,当进程被撤消时,系统收回它的PCB,该进程就消亡了。
不同的操作系统其PCB的格式和所含的信息不同。一般PCB含如下的信息:
进程标识名或标识号:系统中每个进程有唯一的表示符,以便系统识别。
位置信息: 进程的程序和数据部分在内存或外存中的物理位置。
状态信息: 进程当前所处的状态(执行、就绪、阻塞等)。
进程的优先级:相对于其他进程的优先级。
进程现场保护区:当进程暂时不在CPU上运行时各状态保护起来,以便再次进入CPU时恢复现场。
资源清单:指出资源需求、分配和控制信息。
队列指针或链接字: 用于将处于同一状态的进程链接成一个队列,在该单元中存放下一进程的PCB首址。
其它信息:视系统而定。