|
知识路径: > 计算机系统基础知识 > 计算机软件基础知识 > 操作系统基础知识 > 处理机管理 > 进程管理 > 基本概念 > 程序与进程 >
|
考试要求:掌握
相关知识点:2个
|
|
|
|
若在计算机系统中采用多道程序设计技术,则主存中的多道程序可处于并发执行状态。对于上述有3个程序段的作业类,虽然每个作业有前趋关系的各程序段不能在CPU和输入/输出各部件并行执行,但是同一个作业内没有前趋关系的程序段或不同作业的程序段可以分别在CPU和各输入/输出部件上并行执行。例如,某系统中有一个CPU、一台输入设备和一台输出设备,每个作业具有3个程序段,输入I、计算Ci和输出Pi(i=l,2,3)。下图为3个作业的各程序段并发执行的前驱图,图中的前驱关系可记为:
|
|
|
→={I1→C1,I1→I2,I2→C2,I2→I3,I3→C3,C1→P1,C1→C2,C2→P2,C2→C3,C3→P3,P1→P2,P2→P3}
|
|
|
|
|
从上图中可以看出,I2与C1并行执行;I3、C2与P1并行执行;C3与P2并行执行。其中,I2、I3受到I1的间接制约,C2、C3受到C1的间接制约,P2、P3受到P1的间接制约,而C1、P1受到I1的直接制约,等等。
|
|
|
|
|
|
|
例如,两个并发执行的程序段完成交通流量的统计,其中,“观察者”P1识别通过的车辆数,“报告者”P2定时将观察者的计数值清0。程序实现如下:
|
|
|
|
对于上例,由于程序可并发执行,所以可能有以下3种执行序列:
|
|
|
①COUNT:=COUNT+1;PRINT COUNT;COUNT:=0
|
|
|
②PRINT COUNT;COUNT:=0;COUNT:=COUNT+1
|
|
|
③PRINT COUNT;COUNT:=COUNT+1;COUNT:=0
|
|
|
假定COUNT的某个循环的初值为n,那么这3种执行序列得到的COUNT结果不同,如下表所示。
|
|
|
|
|
这种不正确结果的发生是因为两个程序P1和P2共享变量COUNT引起的,即程序并发执行破坏了程序的封闭性和可再现性,使得程序和执行程序的活动不再一一对应。为了解决这一问题,需要研究进程间的同步与互斥问题。
|
|
|