发明名称 一种基于Python语言的网格系统实现方法
摘要 本发明公开了一种基于Python语言的网格系统实现方法,本发明提供了一套扩展的Python NameSpace机制,并提供实现方法,包括重载Python虚拟机的方法,提供透明的Python代理对象,以及对象迁移,代码迁移机制。本发明是基于现在已经得到广泛普及和使用的Python语言,对Python实现进行一系列改造,使得Python语言适合于网格环境。同时在实现Python语言网格化的前提下,不改变Python语法,也不引入新的API库,从而使得现有的大量Python代码,无需修改即可运行在网格环境下,并通过网格环境的支撑,达到更高的执行性能。
申请公布号 CN101441571A 申请公布日期 2009.05.27
申请号 CN200810235437.8 申请日期 2008.12.02
申请人 南京大学 发明人 吕琦;李文中;陆桑璐;陈道蓄
分类号 G06F9/44(2006.01)I;G06F9/455(2006.01)I 主分类号 G06F9/44(2006.01)I
代理机构 南京苏高专利商标事务所(普通合伙) 代理人 柏尚春
主权项 1、一种基于Python语言的网格系统实现方法,其特征在于包括以下步骤:1)首先将Python虚拟机实现重载,过程是:获得Python虚拟机实现的函数入口,并记录为addr,调用mprotect,将这一片内存区域设置为读写,调用memcpy把实现准备好的机器码将这一部分入口代码替换成jmp跳转指令,跳转到真正的被替换的函数实现入口,最后调用mprotect,将这一片内存区域设置为只读和执行;2)提供一个透明的对象代理,其数据结构相当于一个跨越机器的分布式指针,其中对象位置记录该对象被迁移的节点位置;延迟的操作列表为一个链表,包含了对这个对象的操作数和参数数,将分布式环境下对这个节点的所有操作延迟;3)提供一个被修改过的Python虚拟机实现,这个实现有两个层次的执行状态:Meta层和Normal层,在Normal层,所有的对象指针都被还原成最终指向的对象,其行为将与被指向的对象完全一致,从而程序无法区分某个对象到底是本地对象还是远程对象,而在Meta层,一切代理对象指针被作为一个普通的对象结构识别,可以操作其数据结构;4)提供分布式代码片段执行位置的决策算法,在每次发生包含远程代理对象的操作中,调用该算法进行一次决策,得到计算位置节点N,如果N为本地,则将远程对象迁移到本地后继续运行,如果N为远程节点,则将本地数据迁移到远程节点,在远程节点进行计算之后再将结果迁移回。
地址 210093江苏省南京市汉口路22号