论文部分内容阅读
随着现代计算机技术的发展,计算机系统的性能不断提高,价格却不断下降,使得基于集群的分布式系统在扩展性和性价比方面的优势愈发明显。同时,各领域对高性能计算的需求使集群系统的应用越来越广泛。为了更加有效的利用集群中的计算资源,维持集群的负载平衡,保障计算任务正确执行,需要使用进程迁移技术。特别是在基于个人工作站的多机环境中,各计算节点不是专用的且不一定是同构系统。当工作站使用者需要收回私有的计算资源或者集群的负载不平衡时,需要将计算任务迁移到新的节点继续执行,并保留已完成的工作量,还要尽可能实现迁移的平台无关性。本文主要讨论适用于普通多机环境的进程迁移技术,并将其应用于图像处理领域。传统的进程迁移系统一般依赖于特殊的软硬件环境,本文根据普通多机环境的特点,选择Java平台实现进程迁移,满足了跨平台的要求。进程迁移不仅要迁移原始代码,还要迁移进程在中断点的状态信息。如何捕获和恢复进程的状态数据,是研究进程迁移技术的核心内容。本文根据Java体系结构的特点,采用基于JPDA和修改字节码的方法实现进程迁移。进程状态的捕获通过JPDA实现。进程状态的恢复是本文的难点。恢复进程时,要使程序跳转到断点处继续执行,但是有些变量声明语句不能跳过,而通过JPDA只能查看和修改进程的数据,不能声明对象,也不能改变程序的运行流程。因此本文使用了字节码修改技术,改变程序运行流程,解决了这些问题。此外,为保存和传输与进程有关的信息,本文采用了检查点机制。首先设计了一系列特殊的类来存储进程外部数据(如源代码)和某一时刻的进程状态信息。其次,由于进程迁移发生的时间不确定,结合多机环境的特点,本文采用了以时间为标准的检查点控制策略,动态的启用检查点,捕获和保存进程信息。通过编写验证程序,证明本文所述的基于JPDA和字节码的进程迁移技术是可行的。最后,实现了一个原型系统JMigrate,测试表明其在图像处理计算中有良好的性能和较高的可用性。