发明名称 |
一种基于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号 |