64位Linux操作系统兼容32位应用软件的方法

文档序号:9375264阅读:2241来源:国知局
64位Linux操作系统兼容32位应用软件的方法
【技术领域】
[0001]本发明属于计算机软件领域,尤其涉及一种能够在64位Linux操作系统中兼容32位应用软件的方法。
【背景技术】
[0002]在同一个Linux操作系统中,如Windows、Linux、Unix等操作系统中,通常存在32位和64位两个版本,32位计算机Linux操作系统由来已久,为技术日益成熟的过程中发展起很多让人所熟知并且应用的应用程序,然而64位系统更能满足需要大量内存和浮点性能的客户,并且在机械设计与分析、三维动画、视频编辑和创作以及科学计算和高性能计算等领域大放光芒,64位Linux操作系统比32位Linux操作系统有着更大的寻址能力和数据处理能力,因此64操作位系统在大数据处理和复杂计算方面有着天然的优势,同时得到了越来越多的用户的认可与好评。
[0003]基于服务器Linux操作系统运行环境和所需要提供的服务类型,在服务器领域64位Linux操作系统淘汰32位Linux操作系统已经成为必然趋势,然而在计算机发展史中,32位Linux操作系统作为主流的系统版本已经相当长的时间,然而当前的64位操作系统为龙芯平台64位Linux操作系统架构图,如图1所示,对32位软件并不兼容,而在软件从32位过渡到64位的这该段时间内,32位Linux操作系统上出现了大量与之相匹配的软件,这些软件在在短时间内向64位Linux操作系统迁移暂时无法实现与完成,而且客户可能对这些32位软件有特殊的需求而不愿做出改变,这就对64位Linux操作系统对32位应用程序的兼容性提出了新的要求,即可以在64位Linux操作系统完全取代32位之间的过渡时间段内,在这样一个相当长的时间段内,使64位Linux操作系统保持对32位Linux操作系统的兼容特性,而目前还没有解决这些问题的产品或者方法出现。

【发明内容】

[0004]针对现有技术中存在的不足,本发明的目的在于提供一种64位Linux操作系统兼容32位应用软件的方法,64位Linux操作系统装入32位子Linux系统,从而使32位程序能够完全应用在64位Linux操作系统中,从而提高了 64位Linux操作系统的资源利用率以及运行效率,完全实现了对32位应用程序的兼容。
[0005]本发明的技术方案如下:
一种64位Linux操作系统下兼容32位应用软件的方法,包括以下步骤:
步骤S1:于所述64位处理器对应地设有64位操作系统,在所述64位操作系统的内核中设计一 32位系统调用接口,与该系统调用接口对应的32位运行库、链接器以及程序加载器均设计于该64位操作系统中,所述32位运行库、链接器、程序加载器以及32位系统调用接口共同形成32位子操作系统;
步骤S2:对运行的应用程序进行判断,并选择与程序相对应的操作系统,调用与该程序位数相对应的加载器、链接器以及运行库进行执行。
[0006]上述的方法,进一步地,还包括判断步骤:
声明一个指针判断,对运行的应用程序格式进行判断:
(1)若判断结果是32位应用程序,则调用32位子操作系统中的32位加载器来装载该应用程序;
(2)若判断结果是64位应用程序,则调用64位Linux操作系统中的64位加载器来装载该应用程序。
[0007]基于本发明又一方面在64位Linux操作系统中兼容32位应用软件的方法,进一步地,还包括判断步骤:
在所述操作系统的内核上一层为虚拟系统调用中间层,用于识别32位与64位应用程序;
获取-运行的应用程序所属的系统调用的格式,由该中间层对该格式进行判断,若判断为32位系统调用,则对该系统调用的数据结构进行转换,进而执行该系统调用;
若判断为64位系统调用,则直接执行该系统调用。
[0008]上述的方法,所述应用程序在装载应用结束后,根据该应用程序在编译时标定的运行库位置来装载该应用程序所对应的运行库。
[0009]上述的方法,应用程序装载结束以后,32位应用程序的装载器调用32位动态链接器来完成内存中的应用程序与运行库的链接工作,64位应用程序的装载器调用64位动态链接器完成内存中的应用程序与所属运行库的链接工作。
[0010]上述的方法,所述操作系统采用龙芯64位处理器。
[0011]上述的方法,所述操作系统调用虚拟系统调用中间层以上的运行库、装载器、链接器均为两份,其中一份为32位,另一份为64位。
[0012]上述的方法,所述运行库具有标准接口定义,由运行库中的函数间接地使用系统调用。
[0013]上述的方法,所述内存为内核的一个组成部分,应用程序执行时,首先装载形成应用程序的内存镜像以及运行库的内存镜像,然后由链接器链接内存镜像中的应用程序以及运行库镜像,同时加载共享库到内存中,之后执行编写的代码执行。
[0014]本发明的有益效果是:
(1)能够保证一些在短时间内无法在龙芯64位Linux操作系统如Linux平台上部署,或是从32位Linux操作系统向64位迁移比较繁琐,甚至一些不适合64位平台的应用程序,完全运行在64位Linux操作系统中的32位子兼容子系统,从而保证了资源利用率以及运行效率;
(2)提高了系统的兼容性以及可应用程序的数量,从而推动了普及64位Linux操作系统的应用;
(3)64位Linux操作系统能够自动识别应用程序所属种类并且选择让该应用程序在相应的Linux操作系统中运行,做到了 64位Linux操作系统和32位Linux操作系统的无缝切换;
(4)64位Linux操作系统的内核能够同时接受并执行64位Linux操作系统以及32位子Linux操作系统的调用;
(5)64位Linux操作系统的龙芯64位处理器作为新兴发展起来的处理器,能够兼容32位指令和兼容32位数据结构,这也是先决条件之一。
【附图说明】
[0015]图1为现有的龙芯平台64位Linux操作系统架构图。
[0016]图2为龙芯平台附带32位子系统的64位Linux操作系统架构图。
[0017]图3为龙芯平台64位Linux操作系统中32位和64位应用程序执行流程图。
[0018]图4为龙芯平台64位Linux操作系统系统调用内核执行流程图。
【具体实施方式】
[0019]实施例1
本发明实施例所述的一种64位操作系统下兼容32位应用软件的方法,能够让64位操作系统同时运行64位程序与32位应用程序,在运行应用程序时,操作系统变换系统调用或者声明一个函数来识别出应用程序为64位应用程序还是32位应用程序,进而选择在64位操作系统还是32位操作子系统中运行。
[0020]在正常系统启动和执行64位应用程序过程当中,32位子Linux系统并不产生作用,只有当系统需要运行32位程序的时候,32位程序将被子Linux系统当中的32位链接器和加载器,加载到内存,并由32位系统库提供功能调用支撑。
[0021]64位Linux操作系统装入32位子Linux系统,所述32位子Linux系统包括32位链接库,32位加载器,32位运行库,以及32位系统调用接口。
[0022]如图2、图3所示,其中图3中的黑色实心箭头表示应用程序被装载的过程,带有箭尾的空心箭头表示运行库被装载的过程,首先,步骤SI的前提是采用龙芯平台的64位处理器,或者是其它能够兼容32位指令的64位处理器,这是执行本发明所述方法的先决条件。
[0023]修改龙芯平台64位Linux操作系统的内核,在内核当中添加中间层,中间层用来识别出32位系统调用与64位系统调用,如果是64位系统调用则正常执行,如果是32位系统调用,则需要首先被路由到内核当中提供兼容性的函数,由提供兼容性的函数进行相应转换,将系统调用当中32位数据结构转换为64相应的位数据结构,然后再将转换后的32位系统调用路由到64位系统调用进行处理。
[0024]如图4所示,32位程序进行系统调用时,系统调用穿过32位运行库,最终抵达内核,内核判断调用类型,如果是64位程序的系统调用,则正常执行内核当中的系统调用程序。如果是32位程序的系统调用则需要将调用路由到处理相关处理函数,处理函数负责将32位系统调用当中的数据结构转换为64位模式,再执行内核当中的系统调用程序。
[0025]在该64位处理器中装入一 64位Linux操作系统,该64位Linux操作系统内核兼容32位系统调用,该内核能够同时执行并调用64位或者32位的系统调用。
[0026]当该64位Linux操作系统中加入了 32位兼容子系统以后,架构由图1变为了图2,操作系统内核以上各应用层,从系统调用中间层以上均为两份程序
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1