CN101114940A - 实现模块逻辑化的方法 - Google Patents
实现模块逻辑化的方法 Download PDFInfo
- Publication number
- CN101114940A CN101114940A CNA2007101276907A CN200710127690A CN101114940A CN 101114940 A CN101114940 A CN 101114940A CN A2007101276907 A CNA2007101276907 A CN A2007101276907A CN 200710127690 A CN200710127690 A CN 200710127690A CN 101114940 A CN101114940 A CN 101114940A
- Authority
- CN
- China
- Prior art keywords
- module
- symbol table
- logicalization
- symbol
- self
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种实现模块逻辑化的方法,包括以下步骤:S202,分别为多个模块创建自定义符号表;S204,利用自定义符号表对多个模块中的符号信息进行隔离,以实现模块逻辑化。本发明通过将模块中的符号由系统全局符号表转移至自定义符号表,使得模块命名空间相互逻辑隔离,从而实现了同一处理器中多个模块的透明共存,即模块的逻辑化。
Description
技术领域
本发明涉及通信领域,更具体地涉及一种实现模块逻辑化的方法。
背景技术
现代通信系统的网元都包含有众多的功能模块。每个模块可以看成是一个运行在处理器上的业务应用。在现有的设计方案中,网元中的各种业务应用通常是各自单独运行在一个处理器上,也就是说,应用与处理器是一一对应的关系。这种业务应用与物理单板紧密结合的现象可称为模块的物理化。模块的物理化实现实际上是系统实现时对系统方案内涵的进一步扩大,把模块原先需要的应用程序资源变成了单独的处理器单板资源。这样做的好处是简单直观,管理起来也很方便,但是这种实现方法也有它的不足之处。
模块的物理化带来的一个较大缺陷就是备份单板的资源浪费。在模块物理化的通信系统中,运行关键模块的单板一旦出现故障,将导致系统的大面积瘫痪,因此这些单板都必须有运行中的备份单板。在系统正常运行时,备份单板基本上处于空转状态,仅根据系统的要求与主用板实施状态上的同步。当主用板出现故障时,由系统控制中心启动主备倒换流程,将主用板上的运行环境复制到备用板上,并且在整个系统中声明备用板转为新的主用板(参见图1)。
主备倒换本质上是单板状态的物理迁移和单板之间通信的重定向,即,主用板的运行环境被迁移到备用板上,原先与主用板发生通信的其它单板将链路重定向到备用板上。因此,主备倒换是模块底层通信部分提供的一个服务。
上述备份机制的缺点在于计算资源的浪费。在现代通信系统设计方案中,主备机制需求的核心内容应该是模块功能上的备份。而在实际实现中,此概念的内涵被进一步扩大,演变成了物理处理器的备份,而备用处理器资源在绝大多数时间里都是闲置的,同时主用板的计算能力却还有更多可利用的空间。导致这个缺点的根本原因在于模块实现时过于物理化,一个模块独占着一个处理器,从而备份模块的空转就直接等于计算资源的闲置。
发明内容
鉴于以上所述的一个或多个问题,本发明提供了一种实现模块逻辑化的方法。
根据本发明的实现模块逻辑化的方法,包括以下步骤:S202,分别为多个模块创建自定义符号表;S204,利用自定义符号表对多个模块中的符号信息进行隔离,以实现模块逻辑化。
其中,步骤S204包括以下步骤:S2042,分别将多个模块中的各模块的所有符号导出到全局符号表;S2044,遍历全局符号表,将分别属于各模块的所有符号复制到自定义符号表中,并在自定义符号表中添加各模块的标志;S2046,在全局符号表中删除分别属于各模块的除了入口符号以外的所有符号。
其中,在步骤S2042中,通过操作系统提供的宏,显示地通知操作系统将各模块的所有符号导出到全局符号表。在步骤S2044中,通过读取各模块的模块文件,将各模块的模块文件中的符号表与全局符号表进行比较,找出分别属于各模块的所有符号。
其中,自定义符号表至少包括以下字段之一:符号名称、符号地址、以及所属模块的标志。附带地,自定义符号表中还可以包括排序字段或哈希表相关字段。
其中,在步骤S2042中,还对各模块的所有符号的导出属性进行设置。各模块的所有符号包括各模块的全局符号和静态符号。另外,在步骤S2046中,还在全局符号表中保留操作系统使用的分别属于各模块的符号。其中,各模块的入口符号是唯一的。
在本发明中,通过对符号表的处理,多个模块之前同名符号的冲突问题得到了解决,从而可以同时加载并执行;同时,异常发生时也可以准确地定位到符号表中的项目;另外,多个模块在同一处理器下同时运行,上层应用彼此之间不关心对方的物理位置,从而实现了模块的逻辑化。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是相关技术中的单板备份模式示意图;
图2是实现模块逻辑化的方法的流程图;
图3是1+1备份方法的示意图;
图4是2+1备份方法的示意图;
图5是操作系统要求支持的程序模型的示意图;
图6是模块被加载到内存中的情形示意图;
图7是操作系统的两种模型示意图;以及
图8是符号表的处理方法示意图。
具体实施方式
在本发明中,提供了一种利用符号表的复用技术将模块进一步逻辑化的实现方法。该方法可以降低模块与处理器的耦合性,让多个模块共享处理器。通过该方法,可以真正实现逻辑功能层次上的备份机制,从而克服资源浪费的缺点。
所谓模块的逻辑化,指的是单个模块不再独占处理器,而是多个模块透明地共享同一个处理器,模块之间发生通信的上层应用只需向指定的逻辑模块发起连接即可,通信的对方可以与自己在同一个处理器上,也可以在另一个不同的处理器上。模块逻辑化之后,单个处理器下可以运行多个模块,模块之间互不知道对方的存在,只有底层的通信层在发起模块间通信时才需要考虑连接的双方是否共享处理器。
模块逻辑化的关键技术在于对符号表的处理。符号表是程序代码中动态定位函数、变量在运行时的内存地址的一种机制。一个代码模块中的函数、变量若要为外界所用,必须被导出到外界能访问的符号表中,导出的内容包括符号的名称和地址。操作系统自身也有自己的符号表,其中存放着内核中导出来的函数和变量的地址。模块加载之前,其中的符号信息都存放在编译后的模块文件中,模块文件的格式与操作系统和编译器有关。模块文件中的符号表信息比较丰富,包含了方方面面的符号属性,通过解析模块文件格式,可以读取其中的符号信息。
由于通信系统中的多个功能模块通常基于统一的平台,共享着一系列相同的函数或者数据结构,因此当多个模块被加载时需要对潜在的符号冲突作特殊处理。另外,符号表的安排还会影响到系统的故障调试。由于各模块的异常处理部分通常需要根据发生异常时的指令地址查找对应的符号名称,或者通过符号名称反向查找其对应的地址,因此对于符号表的处理应当满足上述两方面的要求。
一般来讲,操作系统会将模块中的符号按照某种既定规则添加到全局符号表中。全局符号表是一个操作系统预定义的数据结构,不同的操作系统中的该数据结构的定义有所不同。
下面参考图2,说明根据本发明实施例的实现模块逻辑化的方法。如图2所示,该实现模块逻辑化的方法包括以下步骤:
S202,分别为多个模块创建自定义符号表数据结构,以实现模块的逻辑化方案。其中,自定义符号表至少包含以下字段:符号名称、符号地址、以及所属模块的标志。定义好的结构如下:
struct CustomSymTab{
char symName[MAXLENGHOFSYMBOLS];
FUNPTR symAddr;
int ModuleID;
}
其中,当需要对符号进行排序以优化检索速度时,还要在上述结构中加入排序字段或哈希表相关字段。
S204,利用创建好的自定义符号表,对多个模块中的符号信息进行隔离。具体地,步骤S204可以包括以下步骤:
S2042,在模块编译阶段,利用操作系统提供的宏,显式地通知操作系统将多个模块中的某模块的符号导出至全局符号表,并且对所有符号设置默认的导出属性。其中,当一个模块被加载时,选择将所有符号导出到操作系统的全局符号表。利用操作系统提供的加载选项支持,对模块中的符号选择全部加载,包括全局符号、静态符号。
S2044,为了防止多个模块中的符号在操作系统的全局符号表中发生名称冲突,当模块加载完毕后,利用操作系统提供的用于全局符号表的操作接口(添加、删除符号项)对全局符号表进行管理。此处,利用操作系统功能接口遍历全局符号表,将属于各模块的符号复制到相应的自定义符号表中,并添加模块的标志。因为需要在全局符号表中提取属于某模块的符号,所以还需要读取模块文件,通过将模块文件中的符号表与全局符号表进行对比,找出属于该模块的符号。
S2046,在全局符号表中删除各模块的符号。此时,必须保留模块的入口符号。注意,在程序编写时,要保证各模块的入口函数名称的唯一性。另外,对于模块中需要导出为操作系统所用的符号也要予以保留。当需要加载多个模块时,对每个模块进行上述操作。
从以上描述中可以看出,模块逻辑化实现技术的关键在于实现同一中央处理器(Central Processing Unit,简称CPU)下多个模块的透明隔离。现代操作系统在不同层次上一般都支持多任务处理。不同的任务在执行空间上互相隔离是实现模块逻辑化的基础。
实现多模块共存的第一步是选择合适的操作系统执行模型。一般情况下,通信系统网元模块中都需要建立多个执行流,并且每个执行流都必须是被操作系统直接调度的单位。因此,操作系统在支持模块化用户程序的同时,还要支持在用户代码中创建操作系统调度单位。所以,模块逻辑化的具体实现需要操作系统中能够支持图5中所示的运行模型。
在该模型中,用户编写的程序作为一个加载单元(模块)被操作系统动态载入运行(或静态编译到操作系统中去),用户可以在自己的程序内部创建多个调度单元交给操作系统去调度运行。这些调度单元能够共享本加载单元中的资源,并可以通过某种便捷的手段实现相互之间的同步和通信。这些调度单元在操作系统的管理下以某种调度规则得以逐一执行。同一加载单元内部共享命名空间,加载单元与操作系统内核可以共享命名空间也可以各自拥有自己的名字空间。很多现代操作系统都实现了上述模型,因此,在这些操作系统上实现模块的逻辑化是完全可行的。
不带用户态保护的操作系统通常用于嵌入式领域,它们的特点是不区分用户态和内核态,用户代码调用操作系统功能函数时是在进行普通的函数调用。用户代码以“应用程序模块”的形式加载到内存中运行,与内核共享名字空间(如图6所示)。要实现多个功能模块同时运行,只要在运行中加载多个应用程序即可。但是,这类操作系统往往在函数、变量的命名空间上存在用户代码与内核代码共享的问题,因此在符号表的处理上需要作些特殊的工作。
带有用户态内存保护的操作系统(例如,常见的桌面操作系统)都支持用户态与内核态的隔离,用户代码以“应用程序”的方式运行在一个受保护的虚拟空间中,互相之间是透明的(这意味着两个应用程序的名字空间也是独立的),但是共享同一个操作系统内核。应用程序调用操作系统功能函数时需要进行状态切换,内核按某种调度规则轮流为各个应用程序提供服务。这种机制给模块逻辑化提供了天生的支持。同一个模块作为两个进程运行就可以做到互不影响,因为内存空间、名字空间都是独立的。但是这样的实现方法也带来了很大的性能问题:在嵌入式系统中,应用程序进行系统调用时的状态切换是个较大的时间开销,使得这种桌面操作系统上的保护机制在支持嵌入式应用方面反而成为劣势。解决性能问题的方法在于,这类操作系统通常会在不同层次上支持多个模块实现模型可供选择(例如,图7所示)。前一种模型需要在运行时区分用户态和内核态,操作系统运行在内核态,进程平时运行在用户态,进行系统调用时要进行状态的跃迁,先陷入内核态,再返回用户态,这在一定程度上带来了性能上的损失。而后一种模型则一直运行在内核态,性能上要优于前者。内核模块可以在运行时被动态插入内核空间,作为内核代码的一部分被内核和应用程序调用。由于内核模块运行在内核态,与内核共用页表,可以直接调用内核中的函数,因此不存在系统调用时的切换问题,从而避免了性能问题。内核模块中可以创建内核线程,它是操作系统的调度单位,因此用内核线程可以实现通信网元模块中的调度单位。
选择好模型之后的第二步就是要解决多模块共存时的符号冲突问题。
在很多操作系统的实现中,模块被载入内存时,模块内部提供的函数、变量等符号将以指定的方式导出,以供内核或其它模块访问。由于不同的通信模块代码中有大量为多个模块共同采用的底层函数和变量,所以当它们共存于同一个处理器中时,就必须考虑这些对象的名字空间发生冲突的问题。本发明采用的自定义符号表复用技术,简单来讲就是同一个符号表为两个模块所共用。对于单独的一个模块,由于来自模块内部的符号引用在编译阶段已经完成定位(被定位的地址是一个偏移地址,随着模块被加载到的位置的不同还要加上一个基址),因此,模块被加载后,符号表只提供给外部其它模块或内核使用,其中比较重要的是模块的入口符号,一定要导出,其它的符号都可以不保留在系统的全局符号表中。符号表除了供模块外部调用时定位入口地址,还有一个作用是发生异常时用来搜索异常地址对应的符号名称,另外在调试和开发过程还存在通过符号名称检索符号地址的需求。因此,对于多个模块中的同名符号,仍然需要保留按照不同模块区分的符号名称、符号地址参照表。
因为模块是在操作系统运行期间,从文件系统或其它位置动态加载的,因此,操作系统做了类似于连接器的工作,将模块中的符号导出至操作系统全局表以供内核或其它模块调用,有以下三种途径解决多模块的符号冲突问题:
1.载入模块之前剥离符号。用户程序代码编译好之后,通过解析文件格式,剥离模块文件中的符号表。
2.载入模块时有选择地导出符号。这种方法需要操作系统模块加载功能的支持,通常会在载入模块时提供符号导出选项,可以选择不导出任何符号或只导出模块入口点。
3.载入模块后删除符号。在需要载入多个模块时,每加载成功一个模块,即从全局符号表中读取来自此模块的符号,将其保存至其它位置留作后用(尤其是要保存模块的入口符号地址),然后从全局符号表中移出该符号,之后再加载另外的模块(整个流程见图8所示)。
在本发明中,采用了第三种方法。该方法既能解决多模块的符号冲突问题,又能满足异常处理的需要。模块被载入内存时选择导出所有符号,符号进入系统符号表之后即被移出,添加到一个自定义符号表中。自定义符号表是全局符号表的补充,其中包含的符号同时为两个模块所使用,主要有两个作用:1)用于查找模块入口;2)用于异常模块符号分析。
由于多个模块中有名称相同的符号,因此自定义符号表中每个符号都必须有对应的模块号,用于标识该符号所属的模块。自定义符号表的基本结构如下:
struct CustomSymTab{
char symName[MAXLENGHOF SYMB OLS];
FUNPTR symAddr;
int ModuleID;
}
由于符号数量较多时会影响查找速度,所以可以将自定义符号表做成哈希(HASH)表或加以排序来提高查找速度。如果操作系统不支持在载入时导出模块中的所有符号,可以使用第一种方法,把编译好的模块中的符号表提取出来,注意此时得到的符号地址是模块中的偏移量,结合模块被加载到内存中的实际基址,同样可以生成上述的自定义符号表。
模块的逻辑化对于模块中的上层业务是透明的,模块被逻辑化之后,主备的概念从原先的主用单板、备用单板被重新定义为主用模块和备用模块,主用模块是实际使用的模块,备用模块作为主用模块不可用时的备份,这样一来,主备倒换机制也成为主用模块和备用模块之间的倒换机制。
主用模块在通信系统的实际运行中被启用,它将模块名称(模块的功能)连同自己所在的处理器地址和逻辑模块号(模块的通信地址)注册到控制中心,其它模块与此模块发生联系时,从控制中心查询获取上述信息,从而建立通信链路。
模块的逻辑化为备份体系的系统架构设计提供了灵活多变的思路。由于网元中单个逻辑功能实现备份机制的主要目的在于防止某个处理器的硬件故障影响整个网元系统的工作,因此,模块逻辑化之后,设计备份体系的最重要的原则是:主用模块和备用模块不在同一个处理器上。只要符合这一原则,我们可以设计出多种备份架构,例如,1+1模式(图3)和2+1模式(图4)两种。
1+1模式:
两个处理器在运行各自的主用模块A和B之外,各为对方建立一个备用模块。可以看到,其中一个主用模块发生故障时,会出现两个主用模块“挤”到同一个处理器上的状况。这种模式最节省硬件,但是2+1模式可靠性更高一点。
2+1模式:
前两个处理器单独运行主用模块,备用模块都在第三个处理器,其中一个主用模块发生故障时,由第三个处理器接管。这种模式的可靠性更高一些,但是硬件成本也更高。
由上述两个例子可以分别总结出N+N和N+M两种一般意义上的备份架构。N+N架构是指用N个单板运行N个主用模块,每个模块的备用模块存在于其余N-1个单板的某一个上面。N+M架构是指用N个单板运行N个主用模块,而它们的备用模块运行在另外的M个物理单板上,这M个单板的每个上面都可以运行一到多个备用模块,视可靠性要求而定,因此M的大小和N没有直接的关系,可以灵活设置。
设计这种备份架构还需要考虑的问题是,根据运行的模块数量,对应的处理器需要增加一些硬件上的配置。例如,对于运行了两个模块的处理器,可以扩大其内存以获得较高性能。
从上述备份架构的示例可以看到,模块逻辑化为备份架构的设计提供了较大的灵活性,可以根据系统可靠性和硬件成本的综合要求提供不同层次上的备份方案。
综上所述,本发明通过将模块中的符号由系统全局符号表转移至自定义符号表,使得模块命名空间相互逻辑隔离,从而实现了同一处理器中多个模块的透明共存,即模块的逻辑化。本发明可以应用在通信网元模块的备份架构设计中,从而可以极大地提高备份系统设计的灵活性,为整个系统节省了硬件成本。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (10)
1.一种实现模块逻辑化的方法,其特征在于,包括以下步骤:
S202,分别为多个模块创建自定义符号表;以及
S204,利用所述自定义符号表对所述多个模块中的符号信息进行隔离,以实现模块逻辑化。
2.根据权利要求1所述的实现模块逻辑化的方法,其特征在于,
所述步骤S204包括以下步骤:
S2042,分别将所述多个模块中的各模块的所有符号导出到全局符号表;
S2044,遍历所述全局符号表,将分别属于所述各模块的所有符号复制到所述自定义符号表中,并在所述自定义符号表中添加所述各模块的标志;以及
S2046,在所述全局符号表中删除分别属于所述各模块的除了入口符号以外的所有符号。
3.根据权利要求2所述的实现模块逻辑化的方法,其特征在于,在所述步骤S2042中,通过操作系统提供的宏,显式地通知所述操作系统将所述各模块的所有符号导出到所述全局符号表。
4.根据权利要求3所述的实现模块逻辑化的方法,其特征在于,在所述步骤S2044中,通过读取所述各模块的模块文件,将所述各模块的模块文件中的符号表与所述全局符号表进行比较,找出分别属于所述各模块的所有符号。
5.根据权利要求4所述的实现模块逻辑化的方法,其特征在于,所述自定义符号表至少包括以下字段之一:符号名称、符号地址、以及所属模块的标志。
6.根据权利要求5所述的实现模块逻辑化的方法,其特征在于,所述自定义符号表中还包括排序字段或哈希表相关字段。
7.根据权利要求5或6所述的实现模块逻辑化的方法,其特征在于,在所述步骤S2042中,还对所述各模块的所有符号的导出属性进行设置。
8.根据权利要求7所述的实现模块逻辑化的方法,其特征在于,所述各模块的所有符号包括所述各模块的全局符号和静态符号。
9.根据权利要求8所述的实现模块逻辑化的方法,其特征在于,在所述步骤S2046中,还在所述全局符号表中保留所述操作系统使用的分别属于所述各模块的符号。
10.根据权利要求9所述的实现模块逻辑化的方法,其特征在于,所述各模块的入口符号是唯一的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101276907A CN101114940B (zh) | 2007-06-26 | 2007-06-26 | 实现模块逻辑化的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101276907A CN101114940B (zh) | 2007-06-26 | 2007-06-26 | 实现模块逻辑化的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101114940A true CN101114940A (zh) | 2008-01-30 |
CN101114940B CN101114940B (zh) | 2011-12-07 |
Family
ID=39023075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101276907A Expired - Fee Related CN101114940B (zh) | 2007-06-26 | 2007-06-26 | 实现模块逻辑化的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101114940B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571310A (zh) * | 2010-12-09 | 2012-07-11 | 中兴通讯股份有限公司 | 语音信箱业务的容灾方法及装置 |
CN103942079A (zh) * | 2014-05-12 | 2014-07-23 | 张家港市复安电子科技有限公司 | 网表构建和加载方法及其系统 |
CN108052327A (zh) * | 2017-12-11 | 2018-05-18 | 北京奇虎科技有限公司 | 一种内核模块编译、加载方法及装置 |
CN112565425A (zh) * | 2020-12-03 | 2021-03-26 | 南京机敏软件科技有限公司 | 在多个跨云服务器主机会话的云应用程序间进行拷贝粘贴的方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002268880A (ja) * | 2001-03-14 | 2002-09-20 | Nec Microsystems Ltd | ロードモジュール作成装置、ロードモジュール作成方法およびロードモジュール作成用プログラム |
JP2003167747A (ja) * | 2001-11-29 | 2003-06-13 | Mitsubishi Electric Corp | モジュール実行方式及びモジュール実行方法 |
CN1307558C (zh) * | 2001-12-29 | 2007-03-28 | 中兴通讯股份有限公司 | 通信系统中分系统间的虚拟内存分配管理方法 |
CN1949186A (zh) * | 2006-11-17 | 2007-04-18 | 深圳市领测科技有限公司 | 一种程序调测系统及用于程序调测系统的映射方法 |
-
2007
- 2007-06-26 CN CN2007101276907A patent/CN101114940B/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571310A (zh) * | 2010-12-09 | 2012-07-11 | 中兴通讯股份有限公司 | 语音信箱业务的容灾方法及装置 |
CN103942079A (zh) * | 2014-05-12 | 2014-07-23 | 张家港市复安电子科技有限公司 | 网表构建和加载方法及其系统 |
CN103942079B (zh) * | 2014-05-12 | 2017-06-20 | 张家港市复安电子科技有限公司 | 网表构建和加载方法及其系统 |
CN108052327A (zh) * | 2017-12-11 | 2018-05-18 | 北京奇虎科技有限公司 | 一种内核模块编译、加载方法及装置 |
CN112565425A (zh) * | 2020-12-03 | 2021-03-26 | 南京机敏软件科技有限公司 | 在多个跨云服务器主机会话的云应用程序间进行拷贝粘贴的方法 |
CN112565425B (zh) * | 2020-12-03 | 2021-08-06 | 南京机敏软件科技有限公司 | 在多个跨云服务器主机会话的云应用程序间进行拷贝粘贴的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101114940B (zh) | 2011-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8656412B2 (en) | Pipeline across isolated computing environments | |
CN101706781B (zh) | 一种数据库缓存集中管理方法和系统 | |
CN107181679A (zh) | 一种端口绑定实现方法及装置 | |
CN100452046C (zh) | 一种海量文件的存储方法及系统 | |
CN101420459B (zh) | 一种管理应用配置信息的方法、应用系统和存储设备 | |
CN102103518A (zh) | 一种在虚拟化环境中管理资源的系统及其实现方法 | |
CN101710281B (zh) | 基于Agent的动态集成开发平台系统和方法 | |
CN104657149A (zh) | 一种存储系统的管理模块的软件框架实现方法 | |
CN101645020A (zh) | 虚拟操作系统创建方法 | |
CN101114940B (zh) | 实现模块逻辑化的方法 | |
CN102567097A (zh) | 一种多任务下载的方法及终端 | |
CN102355499B (zh) | 云计算系统 | |
CN102937964A (zh) | 基于分布式系统的智能数据服务方法 | |
US7996627B2 (en) | Replication of object graphs | |
CN102158490A (zh) | 基于OSGi的服务转换方法和装置 | |
CN111104162B (zh) | 一种新旧代码共同运行的kbroker分布式操作系统 | |
CN103226592A (zh) | 一种基于数据库的文件系统及文件存储方法 | |
CN102203737A (zh) | 多线程访问多副本的方法和装置 | |
CN101853209B (zh) | 无线传感器网络节点内存管理方法 | |
CN103198140A (zh) | 一种数据库存储系统及数据存储方法 | |
Brox et al. | DICE: generic data abstraction for enhancing the convergence of HPC and big data | |
CN103853577A (zh) | 网站头部导航栏的加载方法及装置 | |
CN104063229A (zh) | 一种数字家庭中间件系统 | |
CN111562993B (zh) | 一种动态切换数据源的Web应用系统 | |
EP1934776A1 (en) | Replication of object graphs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111207 Termination date: 20190626 |
|
CF01 | Termination of patent right due to non-payment of annual fee |