1.移动实体
初始化阶段,每个移动实体都与一个处理节点有关,这个节点负责执行迭代循环、信息传递以及迁移路径的计算。与静态节点有关的信息转换需要用到网络协议。
在迁移过程中,必须首先终止移动进程和静态进程之间原有的连接。正常情况下,会在连接的任意一端执行“close”系统调用来完成这个任务。然而,如果两个处理器执行系统调用不同步,连接就只能部分关闭,而当进程试图写入程序时,系统会生成一个SIGPIPE信号。为了避免这种我们不期望的情况发生,两端需要配合良好。在本章中,当一个连接必须终止时,首先由移动节点发送一条终止命令到静态节点。然后,在两端进程都执行“close”系统调用后,移动节点会等待静态节点的认可。得到认可后,移动节点才会与目标静态节点建立新的连接。图8.9中的伪代码描述了迁移、切断连接以及重新连接等函数。其中迁移函数会调用discon-nect和try_connect函数。
图8.9 PPM中每个移动实体的迁移、断开连接和重新连接函数
图8.10所示的mainLoop(),整合了上述所有子函数,以表达PPM中移动节点处的全局函数。首先,系统会从外部数据文件中读取静态节点的网络拓扑结构(如代码段L1所述),在仿真过程中利用该信息决定与迁移有关的问题,然后,代码段L2用于创建内部数据结构。接着,系统会重复执行以下三个操作:①执行迭代循环以模拟实际计算过程;②与当前所连接的静态节点交换模拟数据元;③检查是否所有数据元已完成交换以及是否执行了所需要的迭代循环次数。如果是,那么移动实体将随机确定一个新的静态节点,并启动迁移过程。从代码段L3、L4和L5开始的程序分别表示了任务①、②和③。
图8.10 PPM中对应于每个移动实体的主程序(www.xing528.com)
可以看出,对于VPM示例来说,图8.9和图8.10所示的程序段是被封装在静态节点中并由静态节点执行的,而在PPM示例中,该程序段是由每个移动实体进程自己执行的。同时,图8.9中切断连接和重新连接的函数在VPM中没有对应的部分,而在PPM中,这两个函数却是构成移动单元的基础。
2.静态实体
一个静态节点有以下三项职能:①从移动实体接受连接请求;②与移动实体交换数据;③接受移动实体的终止请求。
图8.11 PPM中每个静态节点的主程序
假设移动实体对某移动节点到某静态节点的连接进行异步动态地初始化处理,那么每个静态节点都必须提供出入点,使移动节点可以对连接进行初始化。为了获得出入点,每个静态节点会与一个专门的套接字绑定在一起,并定期通过执行“select”系统调用来确定是否有移动节点需要与之连接。图8.11中的代码段L1可以完成这个任务。如果有需要连接的移动节点,静态节点就会执行“accept”系统调用,并读取和存储标识符,然后开始与该移动节点建立连接。一旦连接上,就有两种消息需要传递:数据元和切断连接的请求。数据元可以在移动节点和静态节点之间进行交换,而在本章中,这些数据是模拟的,很容易丢失。当移动节点打算断开连接时,它会给静态节点传送切断连接的消息。反过来,静态节点会反馈一个认可信息,并执行“close”系统调用以切断连接。图8.11的代码段L2和L3都是关于如何收取切断连接的请求和如何转换数据元的。
如图8.11所示,PPM中由每个静态节点执行的程序与图8.8不同,图8.8中的程序既不仿真也不执行与移动实体有关的活动,而是从移动实体中接受连接请求和断开连接的请求。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。