在仿真初始化期间,VPM和PPM中连接静态进程的静态网络就已经建立了。正如之前所提到的那样,每个静态进程被分配一个处理器或者工作站,称为节点。在运行期间,进程先利用工作站标识符打开一个唯一的外部输入文件。这个文件包含节点与其他静态节点之间的连接情况。然后,进程开始利用伯克利套接字协议,一次一个地建立点对点连接。在两个处理器之间建立点对点的连接时,发起进程会执行“connect”,而相应的接收进程会执行“accept”。每个连接都是半双工的,即网络图中的有向边,网络图中还可能会有多重相互嵌套的圈。“connect”是无阻塞的,需要接收进程标识符作为参数,而“accept”是阻塞的,并能从任一处理器接收任一“connect”命令,这可能导致网络在初始化时就出现死锁。为了应对这个问题,一般采用下面的算法。下层节点都有自己唯一的标识符,当一个节点(标识符为X)处的静态进程需要与另一个节点(标识符为Y,Y>X)处的静态进程连接时,X总是执行“connect”,而Y则执行“accept”。在内存中完成了网络的设置后,每个节点会对静态和移动进程进行初始化运行,这个过程在VPM和PPM策略中是不同的。图8.3中的伪代码说明了在每个节点处建立静态互联网的函数。在图8.3中,L1行代码首先将大于当前节点标号的节点放进系统静态节点集合中,然后从L2行开始的代码段试图通过执行“connect”命令,在当前节点和系统静态节点集合中的每个节点之间一个一个地建立连接,直到成功建立所有连接为止。从L3行开始的代码段则是关于当前节点和系统中标号小于当前节点的其他节点之间建立连接的过程。
(www.xing528.com)
图8.3 节点处初始化过程中建立静态互联网络的伪代码
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。