并行过程

所谓过程,是把处于执行状态的程序,作为抽象的活动体而得出的一种概念,多个活动体同时活动时,称其为并行过程。并行动作过程的相互关系,大致可分为两种。即相互独立的动作,和通过

同步或信息交换进行协调或竞争的动作。并行动作的各个过程不能知道相互之间其它过程处于怎样的进程状况。在并行过程是相互之间无千涉的独立过程时,这虽然没有什么特别问题,但是,在相互干涉的某些并行过程中,例如共用数据或装置,一边进程相互同步一边动作,这时常常会因为相互之间的相对进程速度,而可能产生种种麻烦的问题。其典型例子就是相互排除问题和同步问题,相互排除现在我们考虑两个并行动作的过程A和B,它们对共用数据区进行存取(图5.13)。设过程A对数据区D的内容进行更新,过程B是从D中读取数据后进行计算。设数据区D表示某一时刻的状态集合。如果在A更新D的过程,另一个过程B对D进行了读数,则D内的数据内容是更新后的数据与未更新的数据的混合,对于这种采样时刻的不同类数据的计算结果是毫无意义的,为了避免这种情况,必须保证在A更新D时,直到更新结束为止,B不得对D进行存贮,反之,在B读取D时,直到读取结束为止,A不得对D进行存取。保证这种理所当然的事情是有必要

捕获.JPG

的.我们称这样的数据区为临界区,称这种问题为相互排除。为了保证相互排除,有必要预先设置一个机构,使临界区在某一时刻只对一个过程开放。

同步问题设并行过程M,N分别由M₁;M₂,N₁;N₂这些逐次过程所组成。并设当M₁不结束时N₂就不具备开始条件,N₂不结束时M₂就不具备开始条件这样一种约束条件(图5.14).关于过程M₁sN₁,可以开始进行独立的并行动作。但是还要假

捕获.JPG

定,尽管N比M₁先结束,也不允许让下一个过程N₂开始,N₂必须等待到接收到表示M₁结束的同步信号为止。再者,尽管M₁结束,但在N₂结束之前,M₂不允许开始活动。为了解决上述并行过程的同步问题,在接收同步信号之后,必须有支持控制过程开始的机构。


随便看看