[发明专利]多实例应用程序在内核态地址空间冲突的解决方法及系统有效
申请号: | 200810065662.1 | 申请日: | 2008-01-25 |
公开(公告)号: | CN101226488A | 公开(公告)日: | 2008-07-23 |
发明(设计)人: | 李翌;王继刚;钟卫东 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 深圳市永杰专利商标事务所 | 代理人: | 曹建军 |
地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 实例 应用程序 内核 地址 空间 冲突 解决方法 系统 | ||
1.一种多实例应用程序在内核态地址空间冲突的解决方法,其特征在于,包括以下步骤:
A、系统初始化时,创建线程实例映射表、变量地址表、实例地址映射表;
B、应用程序初始化时,通过调用地址绑定模块将需要切换地址空间的变量调用接口加入到变量地址表中;
C、创建实例线程,为每个线程分配线程实例映射表表项,并设定表项中线程所属的实例ID,然后将该表项放入线程实例映射表中;
D、当线程切换时,在调度器中根据线程实例映射表查看待调出的线程对应的实例ID与待调入的线程的实例ID是否相同,若不同,则进入步骤E;
E、根据待调入与待调出线程的实例ID,查找实例地址映射表,找到对应表项中的实例地址空间,完成地址空间切换。
2.如权利要求1所述多实例应用程序在内核态地址空间冲突的解决方法,其特征在于,步骤A中所述线程实例映射表用于记录各线程与实例的对应关系,每个表项包括实例ID和线程ID两项;所述变量地址表用于记录需进行切换的各变量的地址空间,每个表项包括变量的地址指针和该变量所占用的内存大小两项;所述实例地址映射表用于记录各实例用于存储变量地址空间的内存区域,每个表项包括实例ID及该实例的地址区两项。
3.如权利要求2所述多实例应用程序在内核态地址空间冲突的解决方法,其特征在于,步骤E中完成地址空间切换,具体包括:遍历变量地址表,根据变量地址表中各表项指示的地址和地址大小,将该地址范围内的内容拷贝到待调出线程对应的实例ID的地址空间中,并从待调入线程对应的实例ID的地址空间中,将对应内容拷贝到变量地址表中表项指示的地址范围中。
4.如权利要求2所述多实例应用程序在内核态地址空间冲突的解决方法,其特征在于,步骤C中所述创建实例线程具体包括,分配一个线程实例映射表表项,将该线程实例映射表表项初始化为对应的线程ID和缺省的实例ID,并将该表项插入到线程实例映射表中。
5.如权利要求4所述多实例应用程序在内核态地址空间冲突的解决方法,其特征在于,步骤C中,当有新增加的实例时,分配一个新的实例地址映射表表项,设定其实例ID为该新增加的实例ID,并为其分配对应的变量空间存储地址,将该地址赋予表项的对应区域,然后将该表项插入到实例地址映射表中。
6.如权利要求4或5所述多实例应用程序在内核态地址空间冲突的解决方法,其特征在于,通过静态或动态内存分配的方式分配新的线程实例映射表表项或实例地址映射表表项。
7.如权利要求2所述多实例应用程序在内核态地址空间冲突的解决方法,其特征在于,步骤B中当有新增加的需要切换地址空间的变量时,则具体包括以下步骤:
B1、分配新的变量地址表表项,设置表项的变量地址和变量长度;
B2、将所述表项加入到变量地址表中,计算新的变量地址总长度;
B3、遍历实例地址映射表,将其每个表项中地址区的大小调整为步骤B2中计算得到的总长度。
8.如权利要求7所述多实例应用程序在内核态地址空间冲突的解决方法,其特征在于,步骤B3具体包括:
(I)根据新的变量地址总长度,分配内存区域;
(II)拷贝原有表项中的内存区域内容到新分配的内存区域中;
(III)释放原有的内存区域;
(IV)把新分配的内存区域地址存放在该表项中。
9.一种解决多实例应用程序在内核态地址空间冲突的系统,包括调度器,其特征在于,还包括地址绑定模块、地址切换模块,
所述地址绑定模块用于完成各个实例与各自的地址空间的绑定,并提供接口给用户进行调用;
所述地址切换模块附着于调度器上,用于在需要进行线程切换时,完成地址空间的切换。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810065662.1/1.html,转载请声明来源钻瓜专利网。