浅析多机规划技术
时间:2020-10-30 14:53:43 来源:达达文档网 本文已影响 人
王洋
摘要:随着工业水平的不断发展,计算机已经渗入到工业控制的很多领域。随之而来的就是大量数据的处理以及运算,这就需要一个庞大的计算机系统作为支持。基于计算机协同工作理论(CSCW)的分布式耦合多机系统就是在此前提下受到研究人员关注的。本文对CSCW的工作原理以及多机规划相关技术进行了较为深入的分析,给出了多机规划系统的实现方法。
关键词:CSCW;
多机规划;
数据分配
中图分类号:TP311
所谓CSCW,是指在计算机技术以及网络技术的支持下,处于同一区域内的一个群体相互传输信息、协同协作完成一项任务。CSCW的组成要素主要有以下几部分:(1)信息共享。(2)多媒体区域组合通信。(3)组合成员之间协作管理。
CSCW支持多个计算机系统共同执行同一任务,也就是说CSCW对每一个任务进行划分,并科学分配给组合内的每一个计算机系统,让它们可以同时工作,共同去执行一项任务,CSCW起到一个总体协调的作用。这其中组合工作协调系统是CSCW的关键,它要对组合内的每一个成员分配其所要承担的任务,同时还要对组合共同执行任务的过程进行总控制协调。
1 多机规划技术的实现
1.1 多机规划系统任务分配
系统对任务进行分配以及动态调度,主要的作用就是想充分利用每一个单位计算机系统的可用资源,尽可能的去平衡分配任务,保证每一个单位计算机系统均可以在最短的时间内做出响应,从而从整体上降低整个系统的运算时间,提高系统运行过程的同步性。平衡的任务分配功能,能够最大程度的降低系统执行时间,最大限度的提高系统运行效率。多机规划系统中的主控机就是任务分配的主要承担者。主控机在系统的作用主要有两个方面,一方面就是等待新任务的到来,并对这些任务进行划分,平衡分配给各个单位计算机系统;
另一方面就是接收并分析各个执行任务的单位计算机所反馈回来的执行结果,根据分析来确定其下一步的任务。当主控机向每一个单位计算机系统分配任务时,也有两种处理方式。第一种就是当新任务出现时,各个单位计算机处于空闲状态,这时主控机只需要对该任务根据单位计算机系统的个数来划分任务,同时将每一个子任务相应的分配给不同的单位计算机系统;
第二中就是当新任务出现时,各个单位计算机系统还处于工作状态,这时就需要主控机根据每个计算机系统当前所执行任务的类型来进行新任务的分配。如果当前计算机系统所执行的任务与新任务不同,那么主控机就要根据工作时间来平衡分配新任务;
如果当前计算机系统所执行的任务与新任务相同,那么这个任务将直接分配给该计算机系统继续执行。
1.2 多机规划系统动态调度
系统将任务分配完后,各个单位计算机系统就开始执行分配给自身的子任务。任务执行完成后,会反馈给主控机相应的执行结果以及执行时间,此时主控机就开始进行动态调度。多机规划系统动态调度机制可以用下表来表示:
2 多机规划系统数据传输及同步运算的实现
高速可靠的数据传输对于多机规划系统而言非常关键,是多机规划系统是否可以安全高效的执行任务的基本保证。
数据同步执行是多机规划系统功能安全可靠实现的又一重要组成部分,主控机只有将所获得任务信息实时安全的传送给各个子系统,才能够保证多级规划系统能够高效的运行。
2.1 数据传输。本文所提及的多机规划系统进行数据传输时,执行的传输协议是UDP协议。但是UDP协议又天生有丢包以及数据乱序的缺陷。
UDP协议中数据丢包问题可以通过系统所建立的确认机制来解决。数据传输、接收的两方Client与Server之间需要一个数据包确认过程,即Client端经路由器向Server端发送数据包,在Server接收到该数据包后需要向Client端发送一个确认响应,已告知Client端收到了数据包。一旦超过规定时限Client未收到该确认信息,则表明Server端未收到所发送的数据包,Client需要重新发送。但是数据包重发的次数也是有限制的,如果重发的次数大于了限值,那么就可以认为目标机器不可接收,则需要在主控机中删除该目标机器。
对于UDP协议中可能出现的数据乱序的问题,解决方式是将发送的每一帧数据都添加上帧号,同时确定出数据的总帧数。每一帧的具体结构可以通过下表来表示:
2.2 数据同步。对于多机规划系统而言,数据同步可以分为两大类,一类是由主控机发起的,对总任务数据、子任务数据、任务调度数据或者任务结果数据进行同步;
另一类是由各个子系统发起的,对各个机器信息进行实时数据更新。不管是哪一种数据同步方式,均需要一个高效的安全的数据同步方法。
(1)环式同步法。对系统中所包含的主控机以及各个子系统均进行顺序标号,形成一个可循环的机器系统,数据更新的顺序就按照编号的顺序进行。也就是说系统内的所有机器均按照自身的编号排列为一个可循环的线性系统。这样每一个子系统均由一个前驱系统以及一个后继系统,信息更新就是将该系统中的信息更新到与其相连的前驱系统中。数据环视同步过程可以简单描述为:主控机接收到所要更新的信息后,就将该信息发送给系统中编号最大的子系统,这个子系统就将这个更新信息发送给与其相连的前驱系统,随后该更新信息就逐次发送给下一个前驱系统。同步过程的结束是以主控机接收到编号最小的子系统所发送回来的确认信息为准。(2)星式同步法。所谓星式同步法,是指所需要更新的信息是由主控机直接发送给各个子系统的。主控机事先对需要进行更新的信息进行汇总,然后将这些更新信息直接发送给系统中的各个子系统。具体的更新过程可以描述为:主控机对任务信息进行整理后,将这些信息依次发送给各个子系统。当子系统收到主控机发送个信息后,需要向主控机反馈接收确认信号。主控机接收到反馈信号,就说明发送成功;
如果未接收到发送信号,则表明发送不成功,需要进行重发。一旦超过了重发限值,则认为该子系统无法接受,转入宕机处理。
(3)分组同步法。对于多机规划系统而言,一旦出现过多的一级管理,那么势必会影响主控机的工作性能。为了能够解决大系统出现的这种问题,研究人员就提出了分级管理模式。所谓分级管理,就是在多机规划系统中,将各个子系统进行组分划分,每一个小组中有一个系统是该小组的负责人,主控机与这个小组中的任何一个子系统联系只需联系这个小组负责人即可,再由小组负责人来向该子系统具体分配任务。主控机与小组负责人之间、小组内各个子系统之间实际数据同步过程与星式同步法相类似。
3 多机规划系统异常处理方法
多机规划系统的异常处理要在两个层面上进行把握:一种就是程序层面上,每一个子系统运行过程的程序设计一定要考虑到异常情况的出现,以及处理办法,对于各种可能出现的异常情况都要有相应的处理程序;
另外一种就是在系统层面上,当一些子系统出现了宕机或者离线的情况时,不需要在执行系统复位操作就可以完成所分配的任务。本文研究的多机规划技术,对于异常问题处理,给出了具体的解决程序:
try
{//可能导致异常的代码
if(出现错误了?)
{
throwmyerror(“somethingbadhappended”);
}
}
Catch(myerror)
{//异常处理过程
}
3.1 抛出异常。所谓异常抛出动作,是指程序运行过程中,当出现异常情况时,运行的前后环境并未给出解决异常情况处理的足够信息,此时需要建立一个包含错误信息的数据包,并将该数据包发送给运行环境以外的系统之中。通常情况下,不同情况时所抛出的对象类型也不同。
myerror是按照字符变量作为参数的一种普通类,在进行异常抛出动作时,可以选取任意的一个变量作为所需要的参数。此外,可以使用throw关键字来构造函数,从而新建立出一个原程序中并不包含的对象。实际上,所新创建的这个对象就是throw函数的返回值。
3.2 try块。通常情况下,函数中一旦有异常抛出,那么该函数将在异常抛出后,直接退出。如用户不想在异常抛出后,退出函数,就需要在函数中新创建一个用于解决实际问题的程序块。Try块还可以对函数的调用过程进行测试。
3.3 异常处理器。当异常处理器接收到所抛出的异常信息时,就会在最短的时间内对异常问题进行销毁,所以对于异常处理器的设计,最重要的一点就是保证异常处理器能够处理各种类型的异常问题。具体方法是在try块之后,设计一个由catch类关键字引导的程序块。每一个catch语句实质上就是一个小型的函数,该函数具有唯一的参数,而且这个参数是由一个特殊类型所组成的。此外,异常处理器通常情况下都会有一个标识符。在测试块之后一定要设定异常处理部分,当某个异常信号被抛出之后,异常处理器中的第一个参数与异常抛出对象能够相对应上的函数将对这个异常信号进行抓获,之后在执行catch语句,进入异常处理程序。
上面对多机规划技术中的几个关键部分进行了简单的介绍与分析。一个多级规划系统的建立,需要多方面的学科作为理论基础,在实际应用过程中,也需要不断地对系统各个部件进行性能改善。目前本文设计的多机规划系统已经初步成型,下一步的工作就是展开实际应用调试。笔者将在今后的工作中,继续对多机规划技术进行更为深入的研究,以期能够进一步的提高系统的性能。
参考文献:
[1]唐苏妍,朱一凡,李群等.多Agent系统任务分配方法综述[J].系统工程与电子技术,2010,VOL.32(10):2155-2160.
[2]何炎祥,陈新萌.Agent和多Agent系统的设计与应用[M].武汉:武汉大学出版社,200l.
[3]林剑柠,吴慧中.基于遗传算法的网格资源调度算法[J].计算机研究与发展,2004,VOL(12):132-135.