付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一种多卡内、卡外虚拟机的jcvm解析优化方案
java怨恨是一种可以操作java语言程序的智能机器人。在有限的软件环境下支持java语言是一个子集。这是一个结合智能机器人和java技术的新应用。自1996年11月提出java健康技术概念以来,sun和其他ic卡制造商一直在开发和改进。2002年2月,sun确定了java互联虚拟机及应用程序接口标准2.2版,显示了java互联技术的成熟。在欧洲、美国和日本,许多制造商将其广泛应用于电信、金融和医疗领域。在中国,对java人工智能技术的研究处于初步阶段,但也具有应用前景。目前,中国移动通信、香港电信等电信运营商已计划引入使用java人工智能技术的sim卡,以取代现有的技术。JavaCard继承了Java语言最为显著的特点:硬件无关性.成功地将智能卡的软件平台和硬件平台相分离,实现了Java设计者所宣称的:“程序一次写完,到处运行”的理念.为了实现此硬件无关特性,JavaCard虚拟机(JavaCardVirtualMachine,简称为JCVM)继承了Java虚拟机(JavaVirtualMachine,简称为JVM)的“动态链接特性”,因此,JCVM在解释执行命令前,需对其进行解析.但传统的解析过程频繁的访问位于智能卡内部的类、方法和域组件等内部数据,耗费了大量的系统时间.因此本文根据JCVM的特殊实现,提出了卡内、卡外相结合的解析优化技术来加速卡内指令执行,从而提高了JCVM的整体性能.1ava卡的解析JavaCard平台上的JCVM功能与JVM相似,但由于智能卡上资源有限,JCVM的实现分为两部分:卡外虚拟机和卡内虚拟机.卡外虚拟机工作在PC平台,它将Java源文件进行编译转换,转化后的字节码文件称为CAP文件,即为将要下载到Java卡上的安装文件.卡内虚拟机则工作在智能卡平台,它对下载到卡上的CAP文件字节码解释执行,将之转化为相关的本地硬件实现.CAP文件在解释执行前需要对其进行解析.JVM中的解析是在常数池中完成,它将常数池中表示对象引用的字符常量转化为对象的物理地址,在此绝对地址处完成对对象的访问;而JCVM中的解析则是“基于Token的动态链接”(token表示对引用项的引用,位于常数池组件中.常数池组件为一数组结构,其中的元素为包含某一被引用项的token的常数项).指令执行时,需先将该指令要访问的被引用项的常数池索引作为指令参数,取出此索引所指出的被引用项的token,并将之转化为此项的物理地址,随后即可调用相关的方法在此绝对地址处完成对该引用项的操作.JCVM中将表示被引用项的token转化为该项的绝对地址的过程就是JCVM解析过程.2静态锁定解析过程根据解析过程是否与卡内存储分配相关,可将解析分为静态绑定解析过程和动态绑定解析过程.静态绑定解析过程,只访问本CAP文件,而无需智能卡内资源,因此与卡内存储结构无关,为一编译时过程.而动态绑定解析过程,必须获得卡内资源,才能完成其解析过程,因此该过程与卡内存储结构相关,为一运行时过程.下面由动态绑定和静态绑定解析过程的概念分析标准解析过程.标准解析过程可概括为:常数池组件偏移量→token→被引用项在对应组件中的偏移量→被引用项物理地址的过程,其中由偏移量到token的过程只涉及到本CAP文件的常数池组件,因此为静态绑定解析过程.由token到偏移量可分为两种情况,当token表示对本包所定义的项的引用时,该过程只需要对本CAP文件中的类、方法或域组件访问,即可得到此偏移量结果,因此该过程为静态绑定解析过程;但当token表示对导入包所定义的项的引用时,由于此过程需访问位于智能卡上的其他CAP中的类、方法或域组件,其地址和卡内的存储分配相关,此时该过程为动态绑定解析过程.最后由偏移量到物理地址的过程,必须在得知CAP中的各组件位于智能卡上的物理地址前提下,才能将偏移量和组件基址相加,得到被引用项的物理地址,因此该过程为动态绑定解析过程.从JCVM虚拟机的卡外和卡内两部分协同实现的设计构思出发,可以把指令的标准解析过程分解,编译时的静态绑定解析过程放至卡外完成,同时用创建新的指令操作码(伪指令操作码,其值大于184)和解析后的结果(偏移量或token)构造伪指令,创建伪指令集,如表1.而将运行时的动态绑定过程放至卡内完成,通过解释伪指令,获得卡外解析结果,并完成后续的解析过程.下面针对每一类指令对其解析优化设计进行详细的论述.2.1cap上的相对地址解析在执行指令之前,要根据指令参数得到将要实例化的类,即完成类解析过程.根据定义包的不同,被实例化类可分为本包所定义的类(简称本包类)和外包所定义的类(简称外包类)两种情况.如图1所示,本包类的解析将执行以下操作.1)先将指令参数作为常数池数组索引,并将之乘4(常数池数组元素大小)后与常数池组件在CAP上的基址相加,即得到对应的常数项在CAP上的相对地址,该过程数学表达式为(记为函数1)常数项地址=常数池索引×4+常数池基址2)取出常数项中表示被实例化类的classtoken,classtoken在数值上等于被实例化的类位于CAP类组件中的偏移量.3)将此偏移量与卡内类组件基址相加,得到被实例化类的类信息在卡上的绝对地址.由以上解析过程可以看出,步骤1)、步骤2)为静态绑定过程,可放至卡外执行,并将执行结果和伪指令操作码构造为伪指令返回CAP,替代CAP中原指令,其指令格式如图1中所示.步骤3)则为动态绑定过程,在卡上解释伪指令,确定类信息绝对地址,完成类解析过程.外包类的解析过程步骤1)和本包类的解析过程相同,但由于外包类的CAP文件安装在卡内,因此其classtoken由packagetoken(表示定义此类的包)和classtoken(表示被实例化的类)组成.先通过packagetoken找到卡内CAP文件地址,再由classtoken得到类信息在CAP的类组件中的绝对地址.其中步骤1)为静态绑定过程,放在卡外完成,并返回伪指令.其余过程则为动态绑定过程,在卡内解释伪指令,继续类解析过程,最后得到类信息在卡内的物理地址.2.2静态锁定过程方法调用指令执行前,首先要根据指令参数得到对应的方法,即完成方法解析过程.根据方法所属的类的不同,可将方法分为本包定义的类的方法(简称本包方法)和导入包定义的类的方法(简称外包方法).如图2,本包方法的解析需执行以下操作.1)调用函数1,将常数池索引转化为对应的常数项在CAP上的相对地址.2)取出常数项中classtoken(表示定义此方法的类)和methodtoken(表示被调用的方法).并对classtoken进行类解析,得到定义此方法的类的类信息在CAP文件中的相对地址.3)根据methodtoken(数值上等于方法表索引),查找类信息中的方法表,得到此方法的方法代码在方法组件中的偏移量.4)将此偏移量与卡内方法组件基址相加,得到将要调用方法代码的绝对地址.对比类解析过程可知,步骤1)~3)为静态绑定,将之放在卡外完成,并返回相应的伪指令.步骤4)为动态绑定过程,在卡内解释伪指令,得到被调用方法代码的物理地址,完成方法解析过程.外包方法的解析过程与本包方法相似,只是由于定义方法的类为外包类,所以先要完成外包类解析过程,得到类信息在卡内的绝对地址,其余过程则完全相同.以上过程中,步骤1)为静态绑定过程,在卡内完成,并将构造的伪指令作为结果返回,其他步骤为动态绑定过程,在卡内对伪指令继续方法解析过程,最后得到方法代码在卡内的绝对地址.2.3静态域解析静态域访问指令执行前,也先要得到所要访问静态域的物理地址,即需先完成静态域解析过程.根据静态域的所属类的不同,静态域可分为本包定义的类的静态域(简称本包静态域)和外包定义的类的静态域(简称外包静态域)两种情况.如图3,本包静态域解析需执行以下操作.1)调用函数1,将常数池索引转化为对应的常数项在CAP上的相对地址.2)取出常数项中staticfieldtoken(在数值上等于该静态域在静态域镜像中的偏移量).3)将此偏移量与卡内静态域镜像基址相加,即可得到被访问的静态域在卡上的物理地址.由以上解析过程看出,步骤1)、步骤2)为静态绑定过程,可在卡外完成,并返回相应的伪指令.步骤3)则为动态绑定过程,在卡内解释伪指令,确定静态域的绝对地址,完成静态域解析过程.由于外包静态域解析所需信息不在本CAP内,因此执行步骤1)后,得到的常数项由packagetoken(表示此静态域所属的包),classtoken(表示此静态域所属的类)与staticfieldtoken(表示将访问的静态域)组成,需先根据packagetoken得到定义此静态域的CAP文件地址,然后由classtoken和staticfieldtoken在CAP中信息得到此静态域的卡内物理地址.由解析过程可知,只有步骤1)为静态绑定,放至卡外执行,并返回相应的伪指令,其他过程则为动态绑定过程,在卡内解释伪指令,将token转化为此静态域在卡内的物理地址.3为了比较cap文件的优化方案和执行性能,分析优化方案分为两部分3.1伪指令生成卡外所要实现的内容即是在PC平台上完成与卡内存储无关的静态绑定解析过程.各指令的静态绑定过程如上文所述.然后将得到的执行结果和原指令操作码作为新指令替代原指令存入CAP文件,简单说即为CAP文件的更新,更新后的新指令即为本文所构造的伪指令,并将之添加到伪指令集中.这一过程在PC平台上执行,本文用Java语言实现.用Java中的输入流将CAP文件中的指令读出,通过定义不同解析函数完成各类指令的卡外解析,然后通过Java中的输出流将结果替换原指令写入CAP中,即完成了卡外解析过程.3.2基于jcvm的系统框图卡内解析过程所要实现的内容是对伪指令的解释执行.在解释伪指令时,本文采用表跳转方法为每条伪指令定位,根据不同的伪指令操作码,系统跳至相应的处理代码处,继续执行未完的解析过程,并将最后的解析结果返回给解释器,解释器将根据此结果,访问Java栈、堆等数据结构,调用相关的本地方法,完成指令的解释执行.优化后的JCVM的系统框图如图4所示.3.3应用卡内代码量,提升了卡内数据的解析能力,提高了卡内1)降低了卡内代码量.由解析流程可以看出,解析优化将原本在卡上的部分解析过程,移至卡外执行,因此减少了卡内程序代码量,表2显示了优化前、后卡内代码量比较,可见通过解析优化,卡内代码量可降至原来的1/2甚至3/4.2)减少了对智能卡内部数据访问次数.表3显示了优化前后卡内数据的访问次数比较,优化后卡内数据的总访问次数下降到原来的3/8.3)提高了指令执行速度.由以上两点可得解析优化对影响智能卡指令执行速度的两个主要因素:卡内代码量和卡内数据的访问次数都进行了优化,而卡外解析过程,由于运行在独立于智能卡的PC平台上,因而不会影响指令在卡内的执行速度.表4显示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026贵州六盘水盘州市国典学校秋季招聘22人备考题库及一套完整答案详解
- 2026内蒙古通辽市奈曼旗招聘政府专职消防员30人备考题库及1套参考答案详解
- 2026山东大运河投资运营有限公司招聘工作人员3人备考题库完整答案详解
- 2026福建莆田市秀屿区市场监督管理局招聘编外食品安全协管员1人备考题库及1套参考答案详解
- 2026中国建材总院及所属企业招聘4人备考题库及参考答案详解一套
- 2026四川成都天府国际机场招聘工作人员若干名备考题库参考答案详解
- 2026广东惠州市惠城区中医医院第二批编外人员招聘7人备考题库参考答案详解
- 2026贵州黔西南州兴仁真武医院工作人员招聘备考题库及一套完整答案详解
- 2026湖南邵阳北塔区面向区外选调教师9人备考题库附答案详解
- 2026年安徽省环境科学学会秘书处工作人员招聘备考题库及一套答案详解
- GB/T 21709.4-2026针灸技术操作规范第4部分:三棱针
- 2026中国邮政校园招聘笔试历年参考题库附带答案详解
- 2025年十堰市郧阳区事业单位真题
- 2025年四川省宜宾市小升初数学试卷
- 2026年中国钢铝复合导电轨市场数据研究及竞争策略分析报告
- 外贸业务员客户管理制度
- 2025北京朝阳区三年级(下)期末语文试题及答案
- 生产物料员考核制度
- 2025年6月福建省高中学业水平考试化学试卷真题(含答案详解)
- 超限运输治理培训
- 重大事故隐患整改方案范文
评论
0/150
提交评论