基于计费专有领域的虚拟机的处理方法及装置的制作方法

文档序号:6369413阅读:195来源:国知局
专利名称:基于计费专有领域的虚拟机的处理方法及装置的制作方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于计费专有领域的虚拟机的处理方法及装置。
背景技术
在计费专有领域中,计费系统规则多祥要求多变,为了适应这一要求,几乎所有的计费系统都将易变的计费逻辑和其他处理逻辑分离开来,前者根据局点要求进行定制开发(本文称为"定制逻辑"),后者采用相对稳定的版本开发(本文称为"版本逻辑")。为了提升系统的处理性能,版本逻辑基本使用C/C++开发,定制逻辑则有多种开发方式。目前,定制逻辑多采用脚本语言进行开发,基于虚拟机解释执行。使用脚本语言开发定制逻辑可以降低开发难度,提高编码效率;同吋,因为定制逻辑通过虚拟机解释执行, 可以有效地隔离版本逻辑和定制逻辑,各自的问题不会形成交叉影响,并且,虚拟机解释执行,可以清楚地记录和输出脚本执行轨迹,进行变量值的跟踪调试,及时发现并报告错误,大大提高代码调试和测试的效率。对于定制逻辑中采用的脚本语言是通用的脚本解释语言,其基于虚拟机解释执行的虚拟机为通用虚拟机。在面对计费领域的特殊处理时,采用通用的脚本解释语言以及通用虚拟机,需要进行复杂处理,例如,在计费领域需要保存ー个AVP (Attribute-Value-Pairs,"属性-值"对)值,尽管看起来是一个AVP,其实可以是一个简单的"属性-值"对,也可以是ー个存在复杂嵌套关系的"属性-值"对,其嵌套层次、嵌套内容随业务场景不同而变化。上述的情况在计费领域是很常见的,若用通用脚本解释语言进行编程,将是件很复杂的任务。

发明内容
本发明实施例提供一种基于计费专有领域的虚拟机的处理方法及装置,以解决现有技术中在面对计费领域的特殊处理时,采用通用的脚本解释语言以及通用虚拟机,需要进行复杂处理的问题。为达到上述目的,本发明实施例采用如下技术方案一方面,提供了一种基于计费专有领域的虚拟机的处理方法,包括获取计费规则代码,将所述计费规则代码编译成字节码文件,所述字节码文件包括大颗粒指令,所述大颗粒指令为一条包含多个操作信息的指令;通过基于计费专有领域的虚拟机对所述字节码文件解释执行,调用所述大颗粒指令对应的逻辑代码段。另ー方面,还提供了一种基于计费专有领域的虚拟机的处理装置,包括编译单元,用于获取计费规则代码,将所述计费规则代码编译成字节码文件,所述字节码文件包括大颗粒指令,所述大颗粒指令为一条包含多个操作信息的指令;执行单元,用于通过基于计费专有领域的虚拟机对所述字节码文件解释执行,调用所述大颗粒指令对应的逻辑代码段。
本发明实施例提供的基于计费专有领域的虚拟机的处理方法及装置,将计费规则代码编译成字节码文件,所述字节码文件包括大颗粒指令,所述大颗粒指令为一条包含多个操作信息的指令;通过基于计费专有领域的虚拟机对所述字节码文件解释执行,调用所述大颗粒指令对应的逻辑代码段。由于大颗粒指令中包含多个操作信息,与现有技术相比,通用的脚本解释语言在编译之后生成的字节码文件中包含的操作指令是仅包含ー个操作信息的小颗粒指令,大颗粒指令对应的逻辑代码段实现的功能包含了多个小颗粒指令对应的逻辑代码段实现的功能,減少了指令的调用次数和调用过程中的入栈出栈次数,提高了运行计费代码规则的效率。


图I为本发明实施例提供的基于计费专有领域的虚拟机的处理方法的流程图;图2为本发明又一实施例提供的计费系统的结构示意图;
图3为本发明又一实施例提供的基于计费专有领域的虚拟机的处理方法的流程图;图4为本发明实施例提供的基于计费专有领域的虚拟机的处理装置的结构示意图;图5为图4所示的基于计费专有领域的虚拟机的处理装置中执行单元的结构示意图ー;图6为图4所示的基于计费专有领域的虚拟机的处理装置中执行单元的结构示意图ニ。
具体实施例方式为了解决现有技术中现有技术中在面对计费领域的特殊处理时,采用通用的脚本解释语言以及通用虚拟机,需要进行复杂处理的问题,本发明实施例提供一种基于计费专有领域的虚拟机的处理方法及装置。如图I所示,本发明实施例提供的一种基于计费专有领域的虚拟机的处理方法,包括101、获取计费规则代码,将所述计费规则代码编译成字节码文件。其中,所述字节码文件包括大颗粒指令,所述大颗粒指令为一条包含多个操作信息的指令。在本实施例中,所述大颗粒指令可以是计费通用指令,所述计费通用指令包括操作处理类型、操作数类型和操作数寻址方式;可选的,所述大颗粒指令还可以是计费专有指令,所述计费专有指令包括调用指令码、函数地址、參数类型以及參数值。102、通过基于计费专有领域的虚拟机对所述字节码文件解释执行,调用所述大颗粒指令对应的逻辑代码段。本发明实施例提供的基于计费专有领域的虚拟机的处理方法,将计费规则代码编译成字节码文件,所述字节码文件包括大颗粒指令,所述大颗粒指令为一条包含多个操作信息的指令;通过基于计费专有领域的虚拟机对所述字节码文件解释执行,调用所述大颗粒指令对应的逻辑代码段。由于大颗粒指令中包含多个操作信息,与现有技术相比,通用的脚本解释语言在编译之后生成的字节码文件中包含的操作指令是仅包含ー个操作信息的小颗粒指令,大颗粒指令对应的逻辑代码段实现的功能包含了多个小颗粒指令对应的逻辑代码段实现的功能,減少了指令的调用次数和调用过程中的入栈出栈次数,提高了运行计费代码规则的效率。为了使本领域技术人员能够更清楚地理解本发明实施例提供的技术方案,下面通过具体的实施例,对本发明实施例提供的基于计费专有领域的虚拟机的处理方法进行详细说明。本发明又一实施例提供的基于计费专有领域的虚拟机的处理方法,应用于如图2所示的计费系统,所述系统包括基于计费专有领域的编译器、基于计费专有领域的虚拟机以及函数库。其中,基于计费专有领域的虚拟机是由指令解释器、栈、程序计数器、栈指针寄存器、基址指针寄存器、代码区、数据区等组成。代码区用于加载字节码文件中的函数代码;数据区用于加载全局变量、静态变量以及常量数据;栈用于存放函数局部变量。虚拟机的房 钱执行位置由程序计数器进行指示,当前指令执行后,程序计数器指向下一条待执行的指令。指令通过指令解释器解释执行,每次执行一条指令,程序运行基于栈进行实现。如图3所示,本发明又一实施例提供的基于计费专有领域的虚拟机的处理方法,可以包括301、获取计费规则代码,通过基于计费专有领域的编译器将所述计费规则代码编译成字节码文件。其中,所述计费规则代码可以是预先设置的脚本代码文件,在本实施例中,所述脚本代码文件可以是CSF格式的脚本代码文件,也可以是其他脚本语言编写得到的脚本代码文件。所述字节码文件包括大颗粒指令,所述大颗粒指令为一条包含多个操作信息的指令。所述字节码文件由多条大颗粒指令等组成。所述大颗粒指令可以是计费通用指令,也可以是计费专有指令。在本实施例中,所述计费通用指令包括操作处理类型、操作数类型和操作数寻址方式。计费通用指令可以有两种形式助记符形式以及ニ进制形式,其中助记符形式是为了便于操作者读取,ニ进制形式是为了用于虚拟机的识别,一系列ニ进制形式的操作指令和ニ进制形式的操作数组成编译后的字节码文件,其中操作数依附于操作指令,姆个操作指令后面可以带n(n彡O)个操作数。例如,实现"将栈变量a与立即数intConst做正数相加"的计费通用指令,其助记符形式为ADD_INT_STACK_CONST (a) intConst,其中,ADD为操作处理类型,INT为操作数类型,STACK为第一操作数的寻址方式,CONST为第二操作数的寻址方式,a为第一操作数,intConst为第二操作数;其ニ进制形式为0x0021,0x0021为操作指令,包含的信息为(I)要做两个数的相加操作,操作结果存入第一操作数;(2)两个数都是整数(不区分长、短整数,编译时一律变为长整数);(3)第一操作数为ー个栈变量;(4)第二操作数为ー个立即数。值得说明的是,因为计费专有领域涉及的操作处理类型、操作数类型和操作数寻址方式少,也不会出现它们的所有组合,因此尽管ー个指令含有上述多个信息,系统需要设计的指令数也不会很多。但是在通用领域则不一样,操作种类多、数据类型多,寻址方式多,并且他们的每种组合都有可能,因此若使用这种大颗粒指令,将需要一个很大的指令集,这是不太现实的。在本实施例中,所述计费专有指令包括调用指令码、函数地址、參数类型以及參数值。计费专有指令也有两种形式助记符形式以及ニ进制形式,其中助记符形式是为了便于操作者读取,ニ进制形式是为了用于虚拟机的识别,一系列ニ进制形式的操作指令和ニ进制形式的操作数组成编译后的字节码文件,其中操作数依附于操作指令,姆个操作指令后面可以带n(n彡O)个操作数。。
例如,系统需要保存"Subscription-ID"这样ー个AVP,其AVP ID值为443,AVP类型是Grouped (即还包含子AVP)。",其助记符形式为Call" setAVP (443)",其ニ进制形式为0xl0030158010101bb,其中"1003"为操作指令,表示操作指令为LIB库调用;"0158"为操作数,是LIB函数setAVP O的内部函数编号;“01”为操作数,表示I个函数參数;"01"为操作数,表示參数值类型为整数;"Olbb"为操作数,表示參数值443。302、通过基于计费专有领域的虚拟机对所述字节码文件解释执行。303a、在所述大颗粒指令为计费通用指令时,根据所述操作处理类型调用所述操作处理类型对应的逻辑代码段。304a、根据所述操作数类型以及所述操作数寻址方式获取操作数,将所述操作数带入所述逻辑代码段,生成操作結果。对应于步骤301中计费通用指令的例子,基于计费专有领域的虚拟机在处理该计
费通用指令时的示例代码如下
权利要求
1.一种基于计费专有领域的虚拟机的处理方法,其特征在于,包括 获取计费规则代码,将所述计费规则代码编译成字节码文件,所述字节码文件包括大颗粒指令,所述大颗粒指令为一条包含多个操作信息的指令; 通过基于计费专有领域的虚拟机对所述字节码文件解释执行,调用所述大颗粒指令对应的逻辑代码段。
2.根据权利要求I所述的方法,其特征在于,所述大颗粒指令为计费通用指令,所述计费通用指令包括操作处理类型、操作数类型和操作数寻址方式; 所述调用所述大颗粒指令对应的逻辑代码段,包括 根据所述操作处理类型调用所述操作处理类型对应的逻辑代码段; 根据所述操作数类型以及所述操作数寻址方式获取操作数,将所述操作数带入所述逻辑代码段,生成操作結果。
3.根据权利要求I所述的方法,其特征在于,所述大颗粒指令为计费专有指令,所述计费专有指令包括调用指令码、函数地址、參数类型以及參数值; 所述调用所述大颗粒指令对应的逻辑代码段,包括 根据所述调用指令码以及所述函数地址调用函数库中保存的函数代码; 根据所述參数类型、參数值以及调用的函数代码生成操作結果。
4.根据权利要求3所述的方法,其特征在于,所述函数库为ニ进制函数库。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述计费规则代码为脚本代码文件。
6.一种基于计费专有领域的虚拟机的处理装置,其特征在于,包括 编译单元,用于获取计费规则代码,将所述计费规则代码编译成字节码文件,所述字节码文件包括大颗粒指令,所述大颗粒指令为一条包含多个操作信息的指令; 执行单元,用于通过基于计费专有领域的虚拟机对所述字节码文件解释执行,调用所述大颗粒指令对应的逻辑代码段。
7.根据权利要求6所述的处理装置,其特征在于,所述大颗粒指令为计费通用指令,所述计费通用指令包括操作处理类型、操作数类型和操作数寻址方式;所述执行単元,包括 第一调用子単元,用于根据所述操作处理类型调用所述操作处理类型对应的逻辑代码段; 第一执行子単元,用于根据所述操作数类型以及所述操作数寻址方式获取操作数,将所述操作数带入所述逻辑代码段,生成操作結果。
8.根据权利要求6所述的处理装置,其特征在于,所述大颗粒指令为计费专有指令,所述计费专有指令包括调用指令码、函数地址、參数类型以及參数值;所述执行単元,包括 第二调用子単元,用于根据所述调用指令码以及所述函数地址调用函数库中保存的函数代码; 第二执行子単元,用于根据所述參数类型、參数值以及调用的函数代码生成操作結果。
全文摘要
本发明实施例公开一种基于计费专有领域的虚拟机的处理方法及装置,涉及计算机技术领域,以解决现有技术中在面对计费领域的特殊处理时,采用通用的脚本解释语言以及通用虚拟机,需要进行复杂处理的问题。本发明提供的技术方案包括获取计费规则代码,将所述计费规则代码编译成字节码文件,所述字节码文件包括大颗粒指令,所述大颗粒指令为一条包含多个操作信息的指令;通过基于计费专有领域的虚拟机对所述字节码文件解释执行,调用所述大颗粒指令对应的逻辑代码段。本发明实施例提供的基于计费专有领域的虚拟机的处理方法及装置,能够应用计费专有领域中。
文档编号G06Q20/14GK102693150SQ201210146590
公开日2012年9月26日 申请日期2012年5月11日 优先权日2012年5月11日
发明者李臻峰, 王世军, 王永峰 申请人:深圳市华为技术软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1