多系统的基础库文件加载方法及装置与流程

文档序号:11654058阅读:192来源:国知局
本发明涉及终端
技术领域
:,具体而言,本发明涉及一种多系统的基础库文件加载方法及装置。
背景技术
::目前,智能手机、平板电脑、二合一电脑、智能穿戴设备或电子阅读器等终端设备越来越普及。相当一部分数量的终端设备中安装了两个操作系统。以两个操作系统之间的切换方式,分为热切换双系统和冷切换双系统。对于热切换双系统,通常采用linux容器虚拟化技术,创建两个容器,将两个操作系统分别设置于两个容器中;两个操作系统共享一个内核,可以同时运行;切换系统时,无需关闭或重启操作系统,可以直接对两个操作系统进行切换。热切换双系统的库文件加载方法,通常包括:一个操作系统名下的应用启动时,内核从该一个操作系统对应的基础文件库中,获取该应用运行所依赖的库文件进行加载。另一个操作系统名下的应用启动时,内核从该另一个操作系统对应的基础文件库中,获取该应用运行所依赖的库文件进行加载。对于冷切换双系统,两个操作系统处于完全不同的文件系统内,每个操作系统启动时都会挂载不同的文件系统。当需要从一个操作系统切换至另一个操作系统时,通常需要关机再重启;此过程中一个操作系统关闭,则另一个操作系统启动,两个操作系统的运行状态是互斥的。冷切换双系统的库文件加载方法,通常包括:一个操作系统名下的应用启动时,该一个操作系统从其对应的基础文件库中,获取该应用运行所依赖的库文件进行加载。关机重启,使得该一个操作系统完毕,另一个操作系统启动;另一个操作系统名下的应用启动时,该另一个操作系统从其对应的基础文件库中,获取该应用运行所依赖的库文件进行加载。然而,本发明的发明人发现,利用现有的库文件加载方法,设置有多操作系统的终端设备中,需要为每个操作系统单独配置对应的基础文件库,才能支持该操作系统下的应用的启动运行;两个以上基础文件库中存在大量相同的库文件,冗余的库文件占用了大量的存储空间,导致终端设备的存储空间的利用水平低下。技术实现要素:本发明针对现有方式的缺点,提出一种多系统的基础库文件加载方法及装置,用以解决现有技术存在至少两个操作系统的基础库占用较多存储空间的问题,以实现至少两个操作系统的基础库文件的共享,减少基础库占用的存储空间。本发明的实施例根据一个方面,提供了一种多系统的基础库文件加载方法,包括:接收到应用的运行请求时,确定出所述应用所属第一操作系统的第一改良型基础库文件加载器、以及待加载的所述应用所依赖的基础库文件;根据所述应用的可执行文件所包含的信息,确定出所述应用所依赖的基础库文件所属的操作系统;当所述应用所依赖的基础库文件所属的操作系统为其它操作系统时,调用第一改良型基础库文件加载器中的所述其它操作系统的其它基础库文件加载器,从公共库中获取所述应用所依赖的基础库文件进行加载,以供所述应用调用。本发明的实施例根据另一个方面,还提供了一种多系统的基础库文件加载装置,包括:基础库文件确定模块,用于接收到应用的运行请求时,确定出所述应用所属第一操作系统的第一改良型基础库文件加载器、以及待加载的所述应用所依赖的基础库文件;基础库文件加载模块,用于根据所述应用的可执行文件所包含的信息,确定出所述应用所依赖的基础库文件所属的操作系统;当所述应用所依赖的基础库文件所属的操作系统为其它操作系统时,调用第一改良型基础库文件加载器中的所述其它操作系统的其它基础库文件加载器,从公共库中获取所述应用所依赖的基础库文件进行加载,以供所述应用调用。本发明实施例中,保留了基础库文件与基础库文件加载器之间的对应加载关系,将每个操作系统的基础库文件加载器扩充为改良型基础库文件加载器。当发送运行请求的应用所依赖的基础库文件所属的操作系统为其它操作系统时,可以调用第一改良型基础库文件加载器中的其它操作系统的其它基础库文件加载器,对公共库中原本属于其他操作系统的、该应用所依赖的基础库文件,进行获取和加载;既可以实现不同操作系统之间的基础库文件的共享;又可以减少公共库中相同的(冗余的)基础库文件,节省基础库文件占用的存储空间。本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。附图说明本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:图1为本发明实施例的终端设备的内部结构的框架示意图;图2为本发明实施例的多系统的基础库文件加载方法的流程示意图;图3a和图3b分别为本发明实施例的多系统的基础库文件加载方法的一个实例的示意图和局部细化示意图;图4为本发明实施例的多系统的基础库文件加载装置的内部结构的框架示意图。具体实施方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本
技术领域
:技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。本
技术领域
:技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。本
技术领域
:技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,进行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;pcs(personalcommunicationsservice,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;pda(personaldigitalassistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或gps(globalpositioningsystem,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是pda、mid(mobileinternetdevice,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。本发明的发明人经过研究发现,不同的操作系统的abi(applicationbinaryinterface,应用二进制接口)不同,也就是不同操作系统中的应用运行时,所需的基础数据结构不同,基础数据结构涉及的文件包括可执行程序和(动态的)基础库文件。不同操作系统的应用通过系统调用基础库文件的调用方式不同;具体地,操作系统与加载器通常一一对应,每个操作系统的应用在编译期间通常指定该操作系统的加载器用于加载该应用所依赖的基础库文件;因此不同操作系统的应用在编译期间指定的加载器不同,而不同的加载器通常对应不同的基础库文件和基础库的搜索路径。一个操作系统的加载器通常无法获取并加载另一个加载器对应的基础库文件。本发明的实施例,支持至少两个操作系统,为了便于表述和理解,选定一个发送运行请求的应用所属的操作系统为第一操作系统;至少两个操作系统中除了第一操作系统之外的操作系统为其它操作系统。各操作系统分别对应各自的加载器和基础库文件。内核接收到应用的运行请求时,确定出应用所属第一操作系统的第一改良型基础库文件加载器、以及第一改良型基础库文件加载器待加载的应用所依赖的基础库文件;根据应用的可执行文件所包含的信息,确定出应用所依赖的基础库文件所属的操作系统;当应用所依赖的基础库文件所属的操作系统为其它操作系统时,调用第一改良型基础库文件加载器中的其它操作系统的其它基础库文件加载器,从公共库中获取应用所依赖的基础库文件进行加载,以供应用调用。可见,本发明实施例中,公共库包含各操作系统中的应用运行所依赖的大部分基础库文件,通过识别出应用所依赖的基础库文件所属的操作系统,进而调用识别出的操作系统对应的加载器,从公共库中获取该应用所依赖的基础库文件并进行加载,从而实现应用的启动运行。公共库相比于传统的为各操作系统各自配备的基础库的总和,减少了大量相同的基础库文件,即减少了大量冗余的基础库文件,减少了基础库所占用的存储空间,提升了存储资源的利用率水平。下面结合附图具体介绍本发明实施例的技术方案。本发明实施例的终端设备的内部结构的框架示意图如图1所示,包括:内核和至少两个操作系统。其中,至少两个操作系统包括第一操作系统、第二操作系统、……、第n操作系统。n为2以上的正整数。本发明实施例的操作系统包括容器系统。较佳地,本发明实施例中的操作系统,可以是设置在以linuxcontainer(容器)虚拟化技术创建的容器中的操作系统。操作系统可以为传统意义上的linux操作系统或unix操作系统,也可以是基于linux操作系统衍生出来的android系统或ubuntu系统等,还可以为以windows平台为基础的windows系统等等。实际上,本发明中的操作系统不限于前述例举的操作系统,可以涵盖所有能够在容器中运行的操作系统。为便于理解,下面以linux操作系统或其衍生操作系统为例,介绍本发明实施例的技术方案。本发明实施例中的内核,是以传统的linux内核为基础改进而来。增加的主要功能包括:接收到应用的运行请求时,确定出该应用所依赖的基础库文件所属的操作系统,调用该操作系统的基础库文件加载器对该应用所依赖的基础库文件进行加载;具体功能将在后续进行详细介绍,此处不再赘述。为便于理解,将至少两个操作系统中的一个操作系统作为第一操作系统、至少两个操作系统中除了第一操作系统之外的操作系统作为其它操作系统。各操作系统对应各自的基础库文件加载器;各基础库文件加载器对应各自的基础库文件;全部或者大部分基础库文件存放于公共库中。较佳地,公共库包括除了基础c(c语言)库文件之外的基础库文件。较佳地,基础库文件为动态的基础库文件。下面展开介绍本发明实施例的多系统的基础库文件加载方法,该方法的流程示意图如图2所示,包括下述步骤:s201:内核接收到应用的运行请求时,确定出应用所属第一操作系统的第一改良型基础库文件加载器、以及待加载的应用所依赖的基础库文件。第一操作系统中的应用接收到启动运行的指令后,向内核发送运行请求。内核接收到第一操作系统的应用的运行请求时,使用dlopen方式加载第一操作系统的应用所依赖的基础库文件时,确定出第一改良型基础库文件加载器、以及第一改良型基础库文件加载器待加载的应用所依赖的基础库文件。较佳地,内核根据第一操作系统的应用的运行请求中、以dlopen方式加载基础库文件的指令,确定出第一改良型基础库文件加载器、及第一改良型基础库文件加载器待加载的该应用所依赖的基础库文件。标准用法举例如下:内核接收到针对第一操作系统的应用的void*handle=dlopen("xxx.so")指令时,确定出待加载的应用所依赖的基础库文件为xxx.so、以及负责对xxx.so进行加载的基础库文件加载器为第一操作系统的第一改良型基础库文件加载器。上述指令中,handle表示句柄;dlopen表示一种系统调用,主要用于open(打开)动态链接基础库文件,并返回一个句柄。第一改良型基础库文件加载器包含:第一操作系统的基础库文件加载器、以及其它基础库文件加载器。进一步,第一改良型基础库加载器包含:第一操作系统的基础库文件加载器、以及其它基础库文件加载器中用以加载其它操作系统相比于第一操作系统所特有的基础库文件的部分。可见,本发明实施例中,一个操作系统的应用默认指定由该操作系统的基础库文件加载器,加载该应用所依赖的基础库文件;无需对现有的应用进行改动,就可以实施本发明实施例;也就是说,本发明实施例对大量的现有应用的兼容性较强。s202:内核暂停第一改良型基础库文件加载器对应用所依赖的基础库文件的加载,判断应用所依赖的基础库文件是否是基础c库文件;若否,则执行步骤s203;若是,则执行步骤s207。发明人注意到传统的使用dlopen方式加载基础库文件方法,为内核使用dlopen函数打开动态基础库,dlopen这个函数会直接触发第一操作系统的第一linker(基础库文件加载器)的加载过程,即调用第一linker将xxx.so加载进应用程序的进程空间,供应用调用。本发明实施例中,步骤s201和s202可以同步执行。本发明实施例中,对内核的功能进行了改进;内核使用dlopen方式加载第一操作系统的应用所依赖的基础库文件的过程中,确定出第一改良型基础库文件加载器待加载的应用所依赖的基础库文件,并同时暂停第一改良型基础库文件加载器对应用所依赖的基础库文件的加载;判断应用所依赖的基础库文件是否是基础c库文件;若否,则执行步骤s203;若是,则执行步骤s207。s203:内核根据应用的可执行文件所包含的信息,确定出应用所依赖的基础库文件所属的操作系统。内核根据应用的可执行文件的头部信息,确定出应用所依赖的基础库文件所属的操作系统。较佳地,加载应用的可执行程序;解析出应用的可执行程序的头部信息;根据头部信息,确定出应用所属第一操作系统的第一改良型基础库文件加载器。较佳地,本发明的发明人注意到,应用在编译过程中,使用编译器将应用的源码编译成可执行程序。编译过程可以分为两步,第一步将应用的源码编译成可链接中间文件;例如可链接中间文件可以为后缀名为.o的文件;第二步编译器将该应用对应的所有的可链接中间文件(例如名称为*.o的文件,*为通配符,表示若干字符)链接成可执行文件。在链接过程中,编译器会在可执行程序文件的头部填写elf(executableandlinkableformat,可执行与可链接格式)信息;在elf头信息中,会包含一个叫做interpreter(解释器)的字段,这个字段就指定了使用哪个linker(基础库文件加载器)来加载动态基础库文件。较佳地,内核加载应用的可执行程序到内存中后,解析出应用的可执行程序的头部信息中的elf信息;从elf信息中读取interpreter字段的内容,根据interpreter字段的内容,确定出该应用所依赖的基础库文件所属的操作系统。s204:内核判断应用所依赖的基础库文件所属的操作系统是否为第一操作系统;若否,则执行步骤s205;若是,则执行步骤s206。内核根据预设的多个操作系统与多个基础库文件的对应关系,判断出上述步骤中确定出的应用所依赖的基础库文件所属的操作系统是否为该应用所属的第一操作系统。其中,一个操作系统可以对应多个基础库文件;同一个基础库文件可能与多个操作系统相对应。较佳地,一个操作系统可以与公共库中多个基础库文件相对应;公共库中的一个基础库文件可以与多个操作系统相对应。较佳地,多个操作系统与多个基础库文件的对应关系可以预设在内核中。多个操作系统与多个基础库文件的对应关系,也可以预设在每个linker或操作系统中,并在确定出需要调用基础库文件(即确定出应用所依赖的基础库文件)时传递至内核。s205:内核调用第一改良型基础库文件加载器中的其它操作系统的其它基础库文件加载器,从公共库中获取应用所依赖的基础库文件进行加载,以供应用调用。当应用所依赖的基础库文件所属的操作系统为其它操作系统(指第一操作系统之外的操作系统)时,内核调用第一改良型基础库文件加载器中的其它操作系统的其它基础库文件加载器,从公共库中获取应用所依赖的基础库文件进行加载,以供应用调用。较佳地,可以预先将终端设备中多个操作系统的基础库文件加载器可拆分地组合在一起,形成一个改性型基础库文件加载器;第一、二、n操作系统分别对应第一、二、n改良型基础库文件加载器。第一改良型基础库文件加载器、第二改良型基础库文件加载器、…、与第n改良型基础库文件加载器都是相同的。对于第一改良型基础库文件加载器而言,第二、…、n改良型基础库文件加载器都是其它操作系统的其它改良型基础库文件加载器。当应用所依赖的基础库文件所属的操作系统为其它操作系统时,内核从综合基础库文件加载器中,调用第一改良型基础库文件加载器中的其它操作系统的其它基础库文件加载器,从公共库中获取应用所依赖的基础库文件进行加载,以供应用调用。可以理解,本步骤中,公共库中应用所依赖的基础库文件,实际上本就是由其它基础库文件加载器来调用的;本发明实施例中保留了基础库文件与基础库文件加载器之间的对应(加载)关系;但是将每个操作系统的基础库文件加载器进行了扩充,使得每个操作系统可以根据扩充后的基础库文件加载器,对公共库中原本属于其他操作系统的基础库文件进行调用。既可以实现不同操作系统之间的基础库文件的共享;又可以减少公共库中相同的(冗余的)基础库文件,节省基础库文件占用的存储空间。较佳地,本发明的发明人考虑到,终端设备中不同操作系统的基础库文件加载器各自对应的多个基础库文件中,既存在相同的基础库文件,又存在不同的基础库文件。对于每个操作系统,针对除了该操作系统之外的每个其它操作系统,确定出该其它操作系统相比于该操作系统所特有的基础库文件;进而将其它基础库文件加载器中用于加载该特有的基础库文件的部分,作为该其它操作系统相比于该操作系统的其它基础库文件子加载器;之后,由该操作系统的基础库文件加载器、和至少一个其它基础库文件子加载器,组合得到该操作系统的改良型基础库文件加载器。可以理解,每个操作系统的基础库文件加载器、以及每个其它操作系统相比于该操作系统的其它基础库文件子加载器都是不同的。对于第一操作系统,将其它基础库文件加载器中、用以加载其它操作系统相比于第一操作系统所特有的基础库文件的部分,作为其它操作系统的其它基础库文件子加载器。因此,其它基础库文件子加载器对应的基础库文件,为其它操作系统相比于第一操作系统所特有的基础库文件。内核将第一操作系统的(第一)基础库文件加载器、与其它基础库文件子加载器预先组合为第一改良型基础库文件加载器。也就是说,第一改良型基础库文件加载器包含:第一操作系统的(第一)基础库文件加载器、以及除了第一操作系统之外的其它基础库文件子加载器。进一步,同理可得第二操作系统的第二改良型基础库文件加载器,第二改良型基础库文件加载器包含:第二操作系统的(第二)基础库文件加载器、以及除了第二操作系统之外的其它操作系统的其它基础库文件子加载器。同理可得第三改良型基础库文件加载器、…、第n改良型基础库文件加载器。较佳地,对于第一改良型基础库文件加载器、第二改良型基础库文件加载器、…、第n改良型基础库文件加载器,两两之间都是相同的。内核从第一改良型基础库文件加载器中调用预设的其它操作系统的其它基础库文件子加载器,由其它基础库文件子加载器从公共库中获取应用所依赖的基础库文件进行加载。可以理解,本步骤中,公共库中应用所依赖的基础库文件,实际上本就是由其它基础库文件子加载器来调用的;本发明实施例中保留了基础库文件与基础库文件子加载器之间的对应(加载)关系;并根据其它基础库文件子加载器,对一个操作系统的基础库文件加载器进行了扩充,使得该一个操作系统可以根据扩充后的基础库文件加载器,对公共库中原本属于其他操作系统的基础库文件进行调用。可以在共享不同操作系统的基础库文件且减少公共库中相同的(冗余的)基础库文件的情况下,进一步减少针对基础库文件加载器所扩充的内容,减少扩充后的基础库文件加载器所占用的存储空间。进一步,本发明的发明人发现,不同的linker来执行动态基础库文件的加载过程。那么不同的linker也就有不同的动态基础库搜索路径顺序,因为动态基础库文件的放置位置不定,所以针对每个linker会对应设置有一个配置文件,来指示linker需要搜索那些路径来找到相应的动态基础库文件,例如某一种操作系统的动态基础库的搜索路径包括(/lib、/usr/lib),而另一种操作系统的动态基础库的搜索路径则是(/system/lib)本发明实施例中,内核调用其它基础库文件子加载器,根据预设的与其它基础库文件子加载器对应的基础库文件搜索路径,从公共库中获取应用所依赖的基础库文件进行加载。加载应用所依赖的基础库文件后,应用对该基础库文件进行调用。例如,内核根据funcptr=dlsym(handle,"xyz")指令,确定出应用需要的基础库文件(由handle指向的xxx.so文件)中的具体函数xyz,将这个函数的地址赋予funcptr。应用利用funcptr()指令,访问此函数地址,也就是对xyz函数的实质调用。该指令中,dlsym表示系统调用,主要用以根据动态链接基础库文件的操作句柄与符号,返回符号对应的地址。使用这个函数不但可以获取函数地址,也可以获取变量地址。s206:内核调用第一改良型基础库文件加载器从公共库中获取应用所依赖的基础库文件进行加载。当应用所依赖的基础库文件所属的操作系统为第一操作系统时,调用第一改良型基础库文件加载器中的、第一操作系统的(第一)基础库文件加载器,从公共库中获取应用所依赖的基础库文件进行加载。较佳地,从上述第一改良型基础库文件加载器中的第一操作系统的(第一)基础库文件加载器、对应用所依赖的基础库文件进行加载的暂停状态,恢复到加载状态,即从公共库中获取应用所依赖的基础库文件进行加载。s207:内核调用第一改良型基础库文件加载器获取应用所依赖的基础c库文件进行加载。较佳地,本发明实施例的公共库中的基础库文件都是除了基础c库文件之外的动态基础库文件。本发明实施例中,不同的操作系统,都有对应预设有不同的libc基础库。例如某一种操作系统依赖glibc基础c库,而另一种操作系统则依赖bionic。libc、glibc和bionic为开源库编译得到的文件名称。内核调用第一改良型基础库文件加载器中的、第一操作系统的(第一)基础库文件加载器,通过传统路径获取应用所依赖的基础c库文件,并对获取的基础c库文件进行加载。下面介绍本发明实施例的多系统的基础库文件加载方法的一个特例,该特例的示意图如图3a所示。图3a中,应用1、2分别为第一操作系统、第二操作系统的应用;linker1、2分别为第一操作系统的基础库文件加载器、第二操作系统的基础库文件加载器;基础c库1、2分别为第一操作系统的基础c库文件、第二操作系统的基础c库文件;第一、二操作系统的除了基础c库文件之外的其它基础库文件都预设于公共库中。linker1、2分别通过各自的传统路径获取基础c库1、基础c库2并进行加载。当确定出应用1所依赖的基础库文件不是基础c库文件、且该基础库文件属于第二操作系统时,从linker1中调用linker2或第二基础库文件子加载器(图中未显示)从公共库中获取该基础库文件并进行加载。反义亦然。图3b为本发明实施例的多系统的基础库文件加载方法的一个特例的局部细化示意图。图3b中,linker1中除了linker2.a的部分、linker2中除了linker1.a的部分,分别表示第一操作系统的基础库文件加载器、第二操作系统的基础库文件加载器;系统2的动态库表示第二操作系统相比于第一操作系统所特有的基础库文件,linker2.a表示linker2中用以加载第二操作系统相比于第一操作系统所特有的基础库文件的部分;系统1的动态库表示第一操作系统相比于第二操作系统所特有的基础库文件,linker1.a表示linker1中用以加载第一操作系统相比于第二操作系统所特有的基础库文件的部分。linker1表示由第一操作系统的基础库文件加载器、和作为第二基础库文件子加载器的linker2.a组成的第一操作系统的第一改良型基础库文件加载器;linker2表示由第二操作系统的基础库文件加载器、和作为第一基础库文件子加载器的linker1.a组成的第二操作系统的第二基础库文件加载器。当确定出应用1所依赖的基础库文件不是基础c库文件、且该基础库文件属于第二操作系统时,从linker1中调用linker2.a从公共库中获取该基础库文件并进行加载。反义亦然。基于上述多系统的基础库文件加载方法,本发明实施例还提供了多系统的基础库文件加载装置,该装置设置于终端设备中,该装置的内部结构的框架示意图如图4所示,包括:基础库文件确定模块401和基础库文件加载模块402。其中,基础库文件确定模块401用于接收到应用的运行请求时,确定出应用所属第一操作系统的第一改良型基础库文件加载器、以及待加载的应用所依赖的基础库文件。基础库文件加载模块402用于根据应用的可执行文件所包含的信息,确定出应用所依赖的基础库文件所属的操作系统;当应用所依赖的基础库文件所属的操作系统为其它操作系统时,调用第一改良型基础库文件加载器中的其它操作系统的其它基础库文件加载器,从公共库中获取应用所依赖的基础库文件进行加载,以供应用调用。较佳地,基础库文件确定模块401还用于确定出第一改良型基础库文件加载器待加载的应用所依赖的基础库文件时,暂停第一改良型基础库文件加载器对应用所依赖的基础库文件的加载,判断应用所依赖的基础库文件是否是基础c库文件。以及,基础库文件加载模块402还用于当基础库文件确定模块判断出应用所依赖的基础库文件是基础c库文件时,调用第一改良型基础库文件加载器获取应用所依赖的基础c库文件进行加载;当基础库文件确定模块判断出应用所依赖的基础库文件不是基础c库文件时,根据应用的可执行文件所包含的信息,确定出应用所依赖的基础库文件所属的操作系统;其中,公共库包括除了基础c库文件之外的基础库文件。较佳地,基础库文件加载模块402具体用于从第一改良型基础库文件加载器中调用预设的其它操作系统的其它基础库文件子加载器,从公共库中获取应用所依赖的基础库文件进行加载;其它基础库文件子加载器对应的基础库文件,为其它操作系统相比于第一操作系统所特有的基础库文件。较佳地,基础库文件加载模块402具体用于调用其它基础库文件子加载器,根据预设的与其对应的基础库文件搜索路径,从公共库中获取应用所依赖的基础库文件进行加载。较佳地,基础库文件加载模块402具体用于根据应用的可执行文件的头部信息,确定出应用所依赖的基础库文件所属的操作系统。较佳地,基础库文件加载模块402还用于根据应用的可执行文件所包含的信息,确定出应用所依赖的基础库文件所属的操作系统之后,当应用所依赖的基础库文件所属的操作系统为第一操作系统时,调用第一改良型基础库文件加载器从公共库中获取应用所依赖的基础库文件进行加载。上述基础库文件确定模块401和基础库文件加载模块402功能的实现方法,可以参数上述多系统的基础库文件加载方法的具体流程和步骤的内容,此处不再赘述。本发明实施例中,保留了基础库文件与基础库文件加载器之间的对应加载关系,将每个操作系统的基础库文件加载器扩充为改良型基础库文件加载器。当发送运行请求的应用所依赖的基础库文件所属的操作系统为其它操作系统时,可以调用第一改良型基础库文件加载器中的其它操作系统的其它基础库文件加载器,对公共库中原本属于其他操作系统的、该应用所依赖的基础库文件,进行获取和加载;既可以实现不同操作系统之间的基础库文件的共享;又可以减少公共库中相同的(冗余的)基础库文件,节省基础库文件占用的存储空间。而且,本发明实施例中,保留了基础库文件与基础库文件子加载器之间的对应加载关系;并对于每个操作系统,根据其它基础库文件子加载器,将该操作系统的基础库文件加载器扩充为改良型基础库文件加载器。当发送运行请求的应用所依赖的基础库文件所属的操作系统为其它操作系统时,可以调用第一改良型基础库文件加载器中的其它操作系统的其它基础库文件子加载器,对公共库中原本属于其他操作系统的、该应用所依赖的基础库文件,进行获取和加载;可以在共享不同操作系统的基础库文件且减少公共库中相同的(冗余的)基础库文件的情况下,进一步减少针对基础库文件加载器所扩充的内容,减少扩充后的基础库文件加载器所占用的存储空间。此外,本发明实施例中,主要是对内核和基础库文件的加载器进行该井,对应用本身不需要改进,对大量的应用具有良好的兼容性。本
技术领域
:技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、cd-rom、和磁光盘)、rom(read-onlymemory,只读存储器)、ram(randomaccessmemory,随即存储器)、eprom(erasableprogrammableread-onlymemory,可擦写可编程只读存储器)、eeprom(electricallyerasableprogrammableread-onlymemory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。本
技术领域
:技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本
技术领域
:技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。本
技术领域
:技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。以上所述仅是本发明的部分实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1