CN114327508A - 一种软件加载方法及相关装置 - Google Patents
一种软件加载方法及相关装置 Download PDFInfo
- Publication number
- CN114327508A CN114327508A CN202111581306.7A CN202111581306A CN114327508A CN 114327508 A CN114327508 A CN 114327508A CN 202111581306 A CN202111581306 A CN 202111581306A CN 114327508 A CN114327508 A CN 114327508A
- Authority
- CN
- China
- Prior art keywords
- module
- function
- software
- target software
- loading
- 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.)
- Pending
Links
- 230000006870 function Effects 0.000 claims abstract description 173
- 238000000034 method Methods 0.000 claims abstract description 67
- 238000011068 loading method Methods 0.000 claims abstract description 62
- 238000004590 computer program Methods 0.000 claims description 24
- 238000009434 installation Methods 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 23
- 235000019580 granularity Nutrition 0.000 description 13
- 238000012545 processing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 239000008358 core component Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种软件加载方法及相关装置,涉及计算机技术领域。该方法包括:根据启动模块资源,启动目标软件,所述启动模块资源包括支持所述目标软件运行的信息;根据第一模块信息,加载所述目标软件的第一功能,或者,根据第二模块信息,加载所述目标软件的第二功能;其中,所述第一功能和所述第二功能为基于所述目标软件的功能粒度划分得到的不同功能。本方法根据用户的实际功能需求,按需加载相应的功能模块,可以满足功能多样性的软件在物理资源较少的轻量级设备上加载执行,减少了软件的占用资源,大大缩短了软件的下载安装时间。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种软件加载方法及相关装置。
背景技术
软件,指的是为完成某一项或多项特定工作的计算机程序。基于Linux内核的操作系统,广泛应用于终端设备。由于基于Linux内核的操作系统代码的开源以及丰富的扩展性,基于Linux内核的操作系统开发的软件功能越来越多样,极大的满足了人们日常生活中的各种需求。
但是,随着软件功能越来越多样的同时,其占用的资源也在急剧增加,导致在终端设备上下载安装需要耗费大量时间,甚至对于物理资源较少的轻量级设备,无法满足这类软件的下载安装。
发明内容
本申请实施例提供了一种软件加载方法及相关装置,可以满足功能多样性的软件在物理资源较少的轻量级设备上加载执行,减少了软件的占用资源,大大缩短了软件的下载安装时间。
第一方面,本申请实施例提供了一种软件加载方法,该方法包括:
根据启动模块资源,启动目标软件,所述启动模块资源包括支持所述目标软件运行的信息;
根据第一模块信息,加载所述目标软件的第一功能,或者,根据第二模块信息,加载所述目标软件的第二功能;其中,所述第一功能和所述第二功能为基于所述目标软件的功能粒度划分得到的不同功能。
本申请实施例中,提供了一种软件加载方法,具体为,先根据启动模块资源,启动目标软件,然后根据用户的实际功能需求,按需加载目标软件相应的功能,如根据第一模块信息加载目标软件的第一功能,或根据第二模块信息加载目标软件的第二功能,其中,第一功能和第二功能为基于目标软件的功能粒度划分得到的不同功能。通过本申请实施例,根据用户的实际功能需求,按需加载相应的功能模块,可以满足功能多样性的软件在物理资源较少的轻量级设备上加载执行,减少软件的占用资源,大大缩短软件的下载安装时间。
在一种可能的实施方式中,所述根据第一模块信息,加载所述目标软件的第一功能之前,所述方法还包括:
接收第一请求,所述第一请求用于请求加载所述第一功能;
根据所述启动模块资源,确定所述第一功能对应的所述第一模块信息。
在本申请实施例中,提供了一种加载目标软件的第一功能的可能的具体实施方式,具体为,接收第一请求,该第一请求用于请求加载第一功能,根据启动模块资源确定第一功能对应的第一模块信息,并响应于该第一请求,根据该第一模块信息加载第一功能。通过本申请实施例,可以根据用户的实际功能需求,按需加载目标软件相应的功能,满足用户的多样性功能需求,并且可以节省软件占用的存储空间,使软件即使在轻量级设备上也能加载执行,且缩短软件的下载安装时间。
在一种可能的实施方式中,所述根据第一模块信息,加载所述目标软件的第一功能,包括:
根据所述第一模块信息,确定第一模块资源;
根据所述第一模块资源,加载所述目标软件的所述第一功能。
在本申请实施例中,提供了一种加载目标软件的第一功能的可能的具体实施方式,具体为,根据第一模块信息确定第一模块资源的位置,再根据第一模块资源加载目标软件的第一功能。通过本申请实施例,可以根据用户的实际功能需求,按需加载目标软件相应的功能,满足用户的多样性功能需求,并且可以节省软件占用的存储空间,使软件即使在轻量级设备上也能加载执行,且缩短软件的下载安装时间。
在一种可能的实施方式中,所述根据所述第一模块资源,加载所述目标软件的所述第一功能,包括:
在所述终端设备包括所述第一模块资源的情况下,根据所述第一模块资源,执行所述目标软件的所述第一功能;
或者,
在所述终端设备不包括所述第一模块资源的情况下,向网络设备发送第一模块资源请求,所述第一模块资源请求用于请求所述网络设备发送所述第一模块资源;
根据接收到的所述第一模块资源,执行所述目标软件的所述第一功能。
在本申请实施例中,提供了另一种加载目标软件的第一功能的可能的具体实施方式,具体为,在终端设备包括第一模块资源的情况下,根据该第一模块资源执行目标软件的第一功能,在终端设备不包括第一模块资源的情况下,向网络设备发送第一模块资源请求,再根据接收到的第一模块资源执行目标软件的第一功能。通过本申请实施例,对所需的模块资源远程加载,可减少运行软件占用的内存资源,使原本因存储资源不足而无法安装大型软件的轻量级设备也能成功加载执行这类软件,并且,内存中数据越少,被攻击的可能性越低,软件安全性也越高。
在一种可能的实施方式中,所述根据第二模块信息,加载所述目标软件的第二功能,包括:
在执行所述第一功能的情况下,根据所述第二模块信息,加载所述目标软件的所述第二功能。
在本申请实施例中,提供了一种加载目标软件的第二功能的可能的具体实施方式,具体为,在执行第一功能的同时,根据第二模块信息加载目标软件的第二功能。通过本申请实施例,可以实现异步加载的功能,即在第一功能正常执行的情况下,能同时在后台根据用户的需求远程加载其他相关功能模块。
在一种可能的实施方式中,所述方法还包括:
在第一模块资源的访问次数大于第一阈值的情况下,存储所述第一模块资源,所述第一模块资源由所述第一模块信息确定;
或者,
在所述第一模块资源的访问次数小于第二阈值的情况下,清除所述第一模块资源。
在本申请实施例中,提供了一种模块资源缓存管理的可能的具体实施方式,具体为,针对某个模块资源,可以预设一个第一阈值,如果该模块资源的访问次数超过该第一阈值,存储该模块资源,还可以是存储在热点模块资源链表的头部,还可以预设一个第二阈值,如果该模块资源的访问次数小于该第二阈值,清除该模块资源,即将该模块资源从热点模块资源链表中移除,将该模块资源占用的内存释放回收。通过本申请实施例,根据模块资源访问次数对模块资源存储或清除,可减少运行软件占用的内存资源,使原本因存储资源不足而无法安装大型软件的轻量级设备也能成功加载执行这类软件,并且,内存中数据越少,被攻击的可能性越低,软件安全性也越高。
第二方面,本申请实施例提供了一种软件加载装置,该装置包括:
启动单元,用于根据启动模块资源,启动目标软件,所述启动模块资源包括支持所述目标软件运行的信息;
加载单元,用于根据第一模块信息,加载所述目标软件的第一功能,或者,根据第二模块信息,加载所述目标软件的第二功能;其中,所述第一功能和所述第二功能为基于所述目标软件的功能粒度划分得到的不同功能。
在一种可能的实施方式中,所述装置还包括:
接收单元,用于接收第一请求,所述第一请求用于请求加载所述第一功能;
确定单元,用于根据所述启动模块资源,确定所述第一功能对应的所述第一模块信息;
在一种可能的实施方式中,所述确定单元,还用于根据所述第一模块信息,确定第一模块资源;
所述加载单元,具体用于根据所述第一模块资源,加载所述目标软件的所述第一功能。
在一种可能的实施方式中,所述装置还包括:
执行单元,具体用于在所述终端设备包括所述第一模块资源的情况下,根据所述第一模块资源,执行所述目标软件的所述第一功能;或者,
发送单元,用于在所述终端设备不包括所述第一模块资源的情况下,向网络设备发送第一模块资源请求,所述第一模块资源请求用于请求所述网络设备发送所述第一模块资源;
所述执行单元,具体用于根据接收到的所述第一模块资源,执行所述目标软件的所述第一功能。
在一种可能的实施方式中,所述加载单元,具体还用于在执行所述第一功能的情况下,根据所述第二模块信息,加载所述目标软件的所述第二功能。
在一种可能的实施方式中,所述装置还包括:
存储单元,用于在第一模块资源的访问次数大于第一阈值的情况下,存储所述第一模块资源,所述第一模块资源由所述第一模块信息确定;或者,
清除单元,用于在所述第一模块资源的访问次数小于第二阈值的情况下,清除所述第一模块资源。
关于第二方面以及任一项可能的实施方式所带来的技术效果,可参考对应于第一方面以及相应的实施方式的技术效果的介绍。
第三方面,本申请实施例提供一种电子设备,所述电子设备包括处理器和存储器;所述存储器用于存储计算机执行指令;所述处理器用于执行所述存储器所存储的计算机执行指令,以使所述电子设备执行如上述第一方面以及任一项可能的实施方式的方法。可选的,所述电子设备还包括收发器,所述收发器,用于接收信号或者发送信号。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质用于存储指令或计算机程序;当所述指令或所述计算机程序被执行时,使得第一方面以及任一项可能的实施方式所述的方法被实现。
第五方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品包括指令或计算机程序;当所述指令或所述计算机程序被执行时,使得第一方面以及任一项可能的实施方式所述的方法被实现。
第六方面,本申请实施例提供一种芯片,该芯片包括处理器,所述处理器用于执行指令,当该处理器执行所述指令时,使得该芯片执行如第一方面以及任一项可能的实施方式所述的方法。可选的,该芯片还包括通信接口,所述通信接口用于接收信号或发送信号。
第七方面,本申请实施例提供一种系统,所述系统包括至少一个如第二方面所述的软件加载装置或第三方面所述的电子设备或第六方面所述的芯片。
此外,在执行上述第一方面以及任一项可能的实施方式所述的方法的过程中,上述方法中有关发送信息和/或接收信息等的过程,可以理解为由处理器输出信息的过程,和/或,处理器接收输入的信息的过程。在输出信息时,处理器可以将信息输出给收发器(或者通信接口、或发送模块),以便由收发器进行发射。信息在由处理器输出之后,还可能需要进行其他的处理,然后才到达收发器。类似的,处理器接收输入的信息时,收发器(或者通信接口、或发送模块)接收信息,并将其输入处理器。更进一步的,在收发器收到该信息之后,该信息可能需要进行其他的处理,然后才输入处理器。
基于上述原理,举例来说,前述方法中提及的发送信息可以理解为处理器输出信息。又例如,接收信息可以理解为处理器接收输入的信息。
可选的,对于处理器所涉及的发射、发送和接收等操作,如果没有特殊说明,或者,如果未与其在相关描述中的实际作用或者内在逻辑相抵触,则均可以更加一般性的理解为处理器输出和接收、输入等操作。
可选的,在执行上述第一方面以及任一项可能的实施方式所述的方法的过程中,上述处理器可以是专门用于执行这些方法的处理器,也可以是通过执行存储器中的计算机指令来执行这些方法的处理器,例如通用处理器。上述存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(Read Only Memory,ROM),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请实施例对存储器的类型以及存储器与处理器的设置方式不做限定。
在一种可能的实施方式中,上述至少一个存储器位于装置之外。
在又一种可能的实施方式中,上述至少一个存储器位于装置之内。
在又一种可能的实施方式之中,上述至少一个存储器的部分存储器位于装置之内,另一部分存储器位于装置之外。
本申请中,处理器和存储器还可能集成于一个器件中,即处理器和存储器还可以被集成在一起。
本申请实施例中,通过根据用户的实际功能需求,按需加载相应的功能模块,可以满足功能多样性的软件在物理资源较少的轻量级设备上加载执行,减少软件的占用资源,大大缩短软件的下载安装时间。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种软件加载系统的架构示意图;
图2为本申请实施例提供的一种软件加载方法的流程示意图;
图3为本申请实施例提供的另一种软件加载方法的流程示意图;
图4为本申请实施例提供的一种软件多粒度切分的效果示意图;
图5为本申请实施例提供的一种模块资源缓存管理的效果示意图;
图6为本申请实施例提供的一种软件加载装置的结构示意图;
图7为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图对本申请实施例进行描述。
本申请的说明书、权利要求书及附图中的术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备等,没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元等,或可选地还包括对于这些过程、方法、产品或设备等固有的其它步骤或单元。
在本文中提及的“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上,“至少两个(项)”是指两个或三个及三个以上,“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
本申请提供了一种软件加载方法,为了更清楚地描述本申请的方案,下面先介绍一些与软件加载相关的知识。
轻量级设备:简称为轻设备,是指硬件规格较低,硬件条件较差的设备。通常这类设备的计算和处理能力相对较差,存储能力弱或者存储资源较少。如基站、交换机、嵌入式设备等。
软件:指的是为完成某一项或多项特定工作的计算机程序。
软件膨胀:软件具有过多在特定业务场景下不必要的功能。这些功能占用大量随机存取存储器(random access memory,RAM)、磁盘等存储资源,以致软件变得笨拙,给用户带来不好的使用体验。
基于Linux内核的操作系统,广泛应用于终端设备。由于基于Linux内核的操作系统代码的开源以及丰富的扩展性,基于Linux内核的操作系统开发的软件功能越来越多样,极大的满足了人们日常生活中的各种需求。
但是,随着软件功能越来越多样的同时,软件膨胀也越来越严重,软件占用的设备资源在急剧增加,导致在终端设备上下载安装需要耗费大量时间,甚至对于物理资源较少的轻量级设备,无法满足这类软件的下载安装。
目前,为解决上述软件膨胀的问题,其中一种常用的解决方案是按照用户输入样例,通过依赖关系分析,为用户量身定制精简版应用软件。但是,由用户提供输入样例,存在样例难以覆盖全部所需功能、样例标准难以统一、增加用户负担等问题。而现有的依赖分析方法主要有静态分析方法、动态分析方法以及静态动态结合分析方法,但三者达到的准确度都较低,因此,最后量身定制的软件也无法包含用户可能用到的所有功能。当未包含功能被触发时,很可能引起软件崩溃。
另一种常用的解决方案是按需的去加载软件的必要代码。用户可以根据需要访问特定的应用软件功能,而无需下载和安装整个软件。这样的按需加载框架旨在降低用户在按需加载上付出的时间,但是大大提高了开发人员的开发难度和开发成本。开发人员需要基于这些框架,将本已商用的软件完全重构,而且,这些框架由于其自身固有的限制,并不一定能重现软件原有的全部功能。
因此,针对上述软件占用资源较多,软件加载需要耗费大量时间,甚至无法满足轻量级设备上软件的下载安装加载的技术问题,本申请提出一种新的软件加载架构,并基于该架构相应的提出一种新的软件加载方法。本申请所提出的软件加载方法,可以在不需要软件源代码,不需要开发人员进行软件重构,且不被用户察觉的情况下,通过根据用户的实际功能需求,按需加载相应的功能模块,可以满足功能多样性的软件在物理资源较少的轻量级设备上加载执行,减少软件的占用资源,大大缩短软件的下载安装时间。
本申请提供的技术方案可以应用于Linux或者类Unix等计算机操作系统,下面结合本申请实施例中的附图对本申请实施例进行描述。
请参阅图1,图1为本申请实施例提供的一种软件加载系统的架构示意图。
如图1所示,本申请实施例中的软件加载系统包括了终端设备和网络设备,其中,终端设备侧包括了模块缓存管理和守护进程,网络设备侧包括了线程池动态响应和软件多粒度切分,终端设备与网络设备后台远程连接。上述终端设备侧和网络设备侧的各个核心组成部件的基本功能可以如下:
启动模块资源:软件可以被切分为启动模块资源与可加载模块资源。启动模块资源中包括了支持软件运行的基本信息,比如软件格式、大小、权限等,以及可加载模块资源的位置、大小等信息(称为可加载模块信息)。
可加载模块资源:软件可以被切分为启动模块资源与可加载模块资源。可加载模块资源包括支持特定功能运行的代码以及这些代码需要的数据。其中,可加载模块资源的粒度可以多样,用于描述其位置、大小的可加载模块信息具体可以是大小为4KB的倍数。
线程池:位于网络设备的用户层面,线程池中缓存着多个活跃的线程,包括监听线程与处理线程。即使多个终端设备侧的请求同时到达,也能确保每个请求能得到相应线程的快速有效响应。
监听线程:监听终端设备侧发送过来的模块请求,并与终端设备建立稳定网络传输连接。
处理线程:解析终端设备的请求,获取所求可加载模块资源的位置、长度等信息,然后从网络设备磁盘空间中读取相应的模块数据,最后返回给终端设备。
守护进程:负责在终端设备后台去实际向网络设备发起请求,并与网络设备建立稳定连接,以及接受网络设备返回的模块数据。守护进程还具有异步加载的功能,即在用户程序正常运行的情况下,守护进程能同时在后台远程加载其他相关功能模块。
模块缓存管理:模块资源从网络设备加载过来后,先存入终端设备系统层的模块缓存管理中,之后才能返回到用户层面。模块缓存管理对一些频繁访问的模块资源进行标记和缓存。如果用户请求能在缓存直接命中,就能免去经历后面的长请求路径,处理时延较低。另外,模块缓存管理还会在未标记模块资源使用后及时清除,尽可能减少内存中的数据,节约内存资源。
以上述图1所示的软件加载系统为例,基于该软件加载系统的架构,本申请实施例还提供了一种软件加载方法,下面结合图2和图3对该软件加载方法进行说明。
请参阅图2,图2为本申请实施例提供的一种软件加载方法的流程示意图,该软件加载方法涉及计算机技术领域,尤其涉及计算机操作系统技术领域,该方法包括但不限于如下步骤:
步骤201:根据启动模块资源,启动目标软件。
电子设备根据启动模块资源,启动目标软件。
其中,启动模块资源中包括了支持软件运行的基本信息,比如软件格式、大小、权限等,以及可加载模块资源的位置、大小等信息(即可加载模块信息)。启动模块资源可以是随用户下载目标软件后一起下载存储在电子设备中的,也可以是在接收到用户请求启动目标软件后,从网络设备获取的,此处对启动模块资源的来源不做限定。
本申请实施例中的电子设备为搭载了可用于执行计算机执行指令的处理器的设备,可以是终端设备(如计算机)等,具体可以是上述图1所示的软件加载系统中的终端设备,用于执行本申请实施例中的软件加载方法,以实现功能多样性的软件在物理资源较少的轻量级设备上加载执行,减少软件的占用资源,缩短软件的下载安装时间。
步骤202:根据第一模块信息,加载目标软件的第一功能,或者,根据第二模块信息,加载目标软件的第二功能。
电子设备根据用户的实际功能需求,按需加载相应的可加载模块资源,以执行相应的功能。如根据第一模块信息,加载其对应的第一模块资源,执行目标软件的第一功能,或者,根据第二模块信息,加载其对应的第二模块资源,执行目标软件的第二功能。其中,第一功能和第二功能是基于目标软件的功能粒度划分得到的不同功能。
具体的,电子设备根据第一模块信息,加载目标软件的第一功能的实现可以如下:
接收第一请求,该第一请求用于请求加载第一功能。根据启动模块资源确定第一功能对应的第一模块信息,并响应于该第一请求,根据该第一模块信息加载其对应的第一模块资源,执行目标软件的第一功能。通过本申请实施例,可以根据用户的实际功能需求,按需加载相应的可加载模块资源,满足用户的多样性功能需求,并且可以节省软件的资源占用空间,使软件即使在轻量级设备上也能加载执行,且缩短软件的下载安装时间。
类似的,电子设备根据第二模块信息,加载目标软件的第二功能的实现与上述第一功能相似,此处不再赘述。
具体的,电子设备根据第一模块信息,加载目标软件的第一功能的实现还可以如下:
根据第一模块信息确定第一模块资源的位置,再根据第一模块资源加载目标软件的第一功能。其中,在电子设备(终端设备)包括第一模块资源的情况下,根据该第一模块资源执行目标软件的第一功能,在电子设备(终端设备)不包括第一模块资源的情况下,向网络设备发送第一模块资源请求,再根据接收到的第一模块资源执行目标软件的第一功能。通过本申请实施例,对所需的模块资源远程加载,可减少运行软件占用的内存资源,使原本因存储资源不足而无法安装大型软件的轻量级设备也能成功加载执行这类软件,并且,内存中数据越少,被攻击的可能性越低,软件安全性也越高。
类似的,电子设备根据第二模块信息,加载目标软件的第二功能的实现与上述第一功能相似,此处不再赘述。
具体的,电子设备根据第二模块信息,加载目标软件的第二功能的实现还可以如下:
电子设备在执行第一功能的同时,根据第二模块信息加载目标软件的第二功能。通过本申请实施例,可以实现异步加载的功能,即在第一功能正常执行的情况下,能同时在后台根据用户的需求远程加载其他相关功能模块。
可选的,在根据第一模块信息,加载目标软件的第一功能之后,还可以根据第一模块资源的访问次数,对其存储或清除,具体实现可以如下:
针对第一模块资源,可以预设一个第一阈值,如果该第一模块资源在某个时间段内的访问次数超过该第一阈值,则存储该第一模块资源,具体可以是存储在热点模块资源链表的头部。还可以预设一个第二阈值,如果该第一模块资源在某段时间内的访问次数小于该第二阈值,则清除该第一模块资源,即将该第一模块资源从热点模块资源链表中移除,将该第一模块资源占用的内存释放回收。其中,上述第一阈值和第二阈值并不是一个固定的值,可以根据不同的应用场景而调整。
类似的,电子设备根据第二模块资源的访问次数,对其存储或清除的实现与上述第一模块资源相似,此处不再赘述。
通过本申请实施例,根据模块资源访问次数对模块资源存储或清除,可减少运行软件占用的内存资源,使原本因存储资源不足而无法安装大型软件的轻量级设备也能成功加载执行这类软件,并且,内存中数据越少,被攻击的可能性越低,软件安全性也越高。
实施图2所示的软件加载方法,通过根据用户的实际功能需求,按需加载相应的功能模块,可以满足功能多样性的软件在物理资源较少的轻量级设备上加载执行,减少软件的占用资源,大大缩短软件的下载安装时间。
请参阅图3,图3为本申请实施例提供的另一种软件加载方法的流程示意图,也可以理解为是上述图2中的软件加载方法流程图的变形或补充。
如图3所示,对一个软件从下载到运行(加载)的完整过程进行了说明,当用户点击下载并启动软件后,将触发图3中的软件运行流程。该流程具体可以如下:
(1)网络设备将软件切分为启动模块资源与可加载模块资源,并向用户展示当前有哪些软件是完成切分可供下载的。
(2)网络设备线程池创建多个线程,一部分线程监听请求,另一部分等待处理即将到来的请求。
(3)终端设备接收到网络设备提供的启动模块资源,即可开始运行软件。当运行到其他功能时,先在模块缓存管理中查找与该功能对应的功能模块资源,若成功找到,则软件继续运行。若未能在模块缓存管理中找到,则通知守护进程向网络设备发起模块资源加载请求,等待请求被响应。
(4)网络设备监听线程接到模块资源加载请求后,将其转发给处理线程进行处理。
(5)处理线程解析模块资源加载请求中所需的模块资源信息,从存储空间中读入相应模块数据,然后返回给终端设备。
(6)终端设备的守护进程接收到返回的可运行模块资源后,将其存入模块缓存管理中,再由模块缓存管理返回给上层,支持软件继续运行。
若终端设备还需运行其他功能,则按需加载该功能所对应的可加载模块资源,以支持软件继续运行,直至完成用户的使用需求。
应当理解的是,上述模块资源应该包括支持特定功能运行的所有代码以及这些代码需要的数据。不同软件的不同功能本身的大小都有出入,因此,将软件切分为启动模块和多个可加载模块时也应该支持多粒度切分,达到把一个功能对应的代码和所需数据都识别出来的目的。
目前常用的静态分析方法需要源代码的支持,且识别并不精确。而动态分析方法只能识别出单次运行到的代码,难以应对不一致的使用需求,且还需使用反汇编去做代码提取与重组,粒度太细,过于繁琐。
因此,本申请实施例选择结合Linux的分页机制,将不同软件可执行文件自动切分成4KB大小的页,并将相邻或不相邻的页,根据自定义配置组合成不同粒度的模块资源,用以适配软件的加载需求。按照4KB页为单位,也是最满足Linux文件系统的读写方式,能达到较优加载性能。应理解,此处按照4KB页为单位进行多粒度切分仅是一种较优的实现方式,并不应该以此对本申请构成限定。此外,不论模块资源内数据是如何组织的,统一将大小相同的模块资源归为同一粒度。
具体可以参阅图4,图4为本申请实施例提供的一种软件多粒度切分的效果示意图。
如图4所示,一个可执行文件,可以按照用户需求、功能依赖等不同因素,划分成4KB粒度的启动模块资源,以及4KB、8KB、12KB、N*4KB等不同粒度的可加载模块信息。另外,在Linux系统上,可执行与可链接格式(Executable and Linkable Format,ELF)是常见的可执行文件格式。该格式文件的第一个页通常包含支持软件运行的所有重要信息,比如,软件版本、执行入口、软件大小、其他页的位置等,因此,抽取第一个页的内容当作启动模块资源是可行的。
此外,本申请实施例中对模块资源的缓存管理主要目的在于:一是将一些热点模块资源缓存在本地内存中,因为频繁向网络设备请求太过耗时;二是将一些非热点模块资源及时清除,这样可以减少内存占用,也有助于增加软件运行安全性。Linux本身以页为单位去管理页面缓存中的数据,但其粒度太小,不具备针对性,所以并不适用于本申请实施例中的模块资源缓存管理。因此,本申请实施例采取以模块为单位,结合两条最近最少使用(Least Recently Used,LRU)链表(热点链表和及时清除链表),进行模块缓存管理。LRU链表的核心思想是“如果数据最近被访问过,那么它将来被访问的几率也很高”。
具体可以参阅图5,图5为本申请实施例提供的一种模块资源缓存管理的效果示意图。
如图5所示,针对已经存在本地内存中的模块,可以预设一个阈值,如果模块的访问次数超过阈值,就从热点模块链表的头部加入。如果热点链表内模块一段时间内访问次数低于阈值,就得从热点链表移除,加入及时清除链表头部。及时清除链表则预设一个数量阈值,如果链表中模块数量过多,就将链表尾部的模块占用的内存释放回收。
此外,终端设备与网络设备之间的模块远程加载的关键点在于:一是如何知道用户当前缺少的是哪些模块,二是终端设备需通过什么方式才能与网络设备建立连接并请求到模块数据。
针对上述第一个关键点,可以通过内存映射(memory mapping,mmap)加上缺页异常处理进行定位。在Linux系统中,进程地址空间被划分为4KB大小的虚拟页的集合,而Linux也是以页为基本单位去磁盘加载数据。在进程创建后,待加载的可执行文件中的段数据虽然不会立即加载到内存中,但已通过mmap按页与进程地址空间的虚拟页建立了一一对应的映射关系。因此,当用户在使用某个功能模块时,如果内存中缺少数据,就会触发缺页异常,并且出错的虚拟页地址会被写入CR2/FAR寄存器中。之后,系统就能从寄存器中获取缺页信息,再通过mmap建立的映射关系得出所需数据在可执行文件中的偏移。此处,只需对上述机制做了一些改变,将进程地址空间与磁盘文件的映射关系,改为进程地址空间与网络设备上文件的映射关系。由此当发生缺页时,系统就能凭借缺页信息与映射关系定位其属于网络设备上哪个文件的哪个模块。
针对上述第二个关键点,可以在缺页异常流程中添加远程加载分支,结合传输控制协议(Transmission Control Protocol,TCP),提供所需模块远程加载功能。之所以选择TCP协议而不选择用户数据包协议(User Datagram Protocol,UDP),是因为需要严格保障从网络设备加载回来的数据的顺序和正确,而UDP的不可靠特性难以满足要求。
上述详细阐述了本申请实施例的方法,下面提供本申请实施例的装置。
请参阅图6,图6为本申请实施例提供的一种软件加载装置的结构示意图,该软件加载装置60可以包括启动单元601以及加载单元602,其中,各个单元的描述如下:
启动单元601,用于根据启动模块资源,启动目标软件,所述启动模块资源包括支持所述目标软件运行的信息;
加载单元602,用于根据第一模块信息,加载所述目标软件的第一功能,或者,根据第二模块信息,加载所述目标软件的第二功能;其中,所述第一功能和所述第二功能为基于所述目标软件的功能粒度划分得到的不同功能。
在一种可能的实施方式中,所述装置还包括:
接收单元603,用于接收第一请求,所述第一请求用于请求加载所述第一功能;
确定单元604,用于根据所述启动模块资源,确定所述第一功能对应的所述第一模块信息;
在一种可能的实施方式中,所述确定单元604,还用于根据所述第一模块信息,确定第一模块资源;
所述加载单元602,具体用于根据所述第一模块资源,加载所述目标软件的所述第一功能。
在一种可能的实施方式中,所述装置还包括:
执行单元606,具体用于在所述终端设备包括所述第一模块资源的情况下,根据所述第一模块资源,执行所述目标软件的所述第一功能;或者,
发送单元605,用于在所述终端设备不包括所述第一模块资源的情况下,向网络设备发送第一模块资源请求,所述第一模块资源请求用于请求所述网络设备发送所述第一模块资源;
所述执行单元606,具体用于根据接收到的所述第一模块资源,执行所述目标软件的所述第一功能。
在一种可能的实施方式中,所述加载单元602,具体还用于在执行所述第一功能的情况下,根据所述第二模块信息,加载所述目标软件的所述第二功能。
在一种可能的实施方式中,所述装置还包括:
存储单元607,用于在第一模块资源的访问次数大于第一阈值的情况下,存储所述第一模块资源,所述第一模块资源由所述第一模块信息确定;或者,
清除单元608,用于在所述第一模块资源的访问次数小于第二阈值的情况下,清除所述第一模块资源。
根据本申请实施例,图6所示的装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,基于终端设备也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
需要说明的是,各个单元的实现还可以对应参照上述图2、图3所示的方法实施例的相应描述。
在图6所描述的软件加载装置60中,通过根据用户的实际功能需求,按需加载相应的功能模块,可以满足功能多样性的软件在物理资源较少的轻量级设备上加载执行,减少软件的占用资源,大大缩短软件的下载安装时间。
请参阅图7,图7为本申请实施例提供的一种电子设备70的结构示意图。该电子设备70可以包括存储器701、处理器702。进一步可选的,还可以包含通信接口703以及总线704,其中,存储器701、处理器702以及通信接口703通过总线704实现彼此之间的通信连接。通信接口703用于与上述软件加载装置60进行数据交互。
其中,存储器701用于提供存储空间,存储空间中可以存储操作系统和计算机程序等数据。存储器701包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable readonly memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM)。
处理器702是进行算术运算和逻辑运算的模块,可以是中央处理器(centralprocessing unit,CPU)、显卡处理器(graphics processing unit,GPU)或微处理器(microprocessor unit,MPU)等处理模块中的一种或者多种的组合。
存储器701中存储有计算机程序,处理器702调用存储器701中存储的计算机程序,以执行上述图2、图3所示的软件加载方法:
根据启动模块资源,启动目标软件,所述启动模块资源包括支持所述目标软件运行的信息;
根据第一模块信息,加载所述目标软件的第一功能,或者,根据第二模块信息,加载所述目标软件的第二功能;其中,所述第一功能和所述第二功能为基于所述目标软件的功能粒度划分得到的不同功能。
在一种可能的实施方式中,处理器702具体用于执行:
接收第一请求,所述第一请求用于请求加载所述第一功能;
根据所述启动模块资源,确定所述第一功能对应的所述第一模块信息。
在一种可能的实施方式中,处理器702具体用于执行:
根据所述第一模块信息,确定第一模块资源;
根据所述第一模块资源,加载所述目标软件的所述第一功能。
在一种可能的实施方式中,处理器702具体用于执行:
在所述终端设备包括所述第一模块资源的情况下,根据所述第一模块资源,执行所述目标软件的所述第一功能;
或者,
在所述终端设备不包括所述第一模块资源的情况下,向网络设备发送第一模块资源请求,所述第一模块资源请求用于请求所述网络设备发送所述第一模块资源;
根据接收到的所述第一模块资源,执行所述目标软件的所述第一功能。
在一种可能的实施方式中,处理器702具体用于执行:
在执行所述第一功能的情况下,根据所述第二模块信息,加载所述目标软件的所述第二功能。
在一种可能的实施方式中,处理器702还用于执行:
在第一模块资源的访问次数大于第一阈值的情况下,存储所述第一模块资源,所述第一模块资源由所述第一模块信息确定;
或者,
在所述第一模块资源的访问次数小于第二阈值的情况下,清除所述第一模块资源。
上述处理器702执行方法的具体内容可参阅上述图2、图3,此处不再赘述。
相应的,处理器702调用存储器701中存储的计算机程序,还可以用于执行上述图6所示的软件加载装置60中的各个单元所执行的方法步骤,其具体内容可参阅上述图6,此处不再赘述。
在图7所描述的电子设备70中,通过根据用户的实际功能需求,按需加载相应的功能模块,可以满足功能多样性的软件在物理资源较少的轻量级设备上加载执行,减少软件的占用资源,大大缩短软件的下载安装时间。
本申请实施例还提供一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,当上述计算机程序在一个或多个处理器上运行时,可以实现上述图2、图3所示的方法。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括计算机程序,当上述计算机程序产品在处理器上运行时,可以实现上述图2、图3所示的方法。
本申请实施例还提供一种芯片,该芯片包括处理器,所述处理器用于执行指令,当该处理器执行所述指令时,可以实现上述图2、图3所示的方法。可选的,该芯片还包括通信接口,该通信接口用于输入信号或输出信号。
本申请实施例还提供了一种系统,该系统包括了至少一个如上述软件加载装置60或电子设备70或芯片。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序相关的硬件完成,该计算机程序可存储于计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:只读存储器ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储计算机程序代码的介质。
Claims (10)
1.一种软件加载方法,应用于终端设备,其特征在于,包括:
根据启动模块资源,启动目标软件,所述启动模块资源包括支持所述目标软件运行的信息;
根据第一模块信息,加载所述目标软件的第一功能,或者,根据第二模块信息,加载所述目标软件的第二功能;其中,所述第一功能和所述第二功能为基于所述目标软件的功能粒度划分得到的不同功能。
2.根据权利要求1所述的方法,其特征在于,所述根据第一模块信息,加载所述目标软件的第一功能之前,所述方法还包括:
接收第一请求,所述第一请求用于请求加载所述第一功能;
根据所述启动模块资源,确定所述第一功能对应的所述第一模块信息。
3.根据权利要求1或2所述的方法,其特征在于,所述根据第一模块信息,加载所述目标软件的第一功能,包括:
根据所述第一模块信息,确定第一模块资源;
根据所述第一模块资源,加载所述目标软件的所述第一功能。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一模块资源,加载所述目标软件的所述第一功能,包括:
在所述终端设备包括所述第一模块资源的情况下,根据所述第一模块资源,执行所述目标软件的所述第一功能;
或者,
在所述终端设备不包括所述第一模块资源的情况下,向网络设备发送第一模块资源请求,所述第一模块资源请求用于请求所述网络设备发送所述第一模块资源;
根据接收到的所述第一模块资源,执行所述目标软件的所述第一功能。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述根据第二模块信息,加载所述目标软件的第二功能,包括:
在执行所述第一功能的情况下,根据所述第二模块信息,加载所述目标软件的所述第二功能。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
在第一模块资源的访问次数大于第一阈值的情况下,存储所述第一模块资源,所述第一模块资源由所述第一模块信息确定;
或者,
在所述第一模块资源的访问次数小于第二阈值的情况下,清除所述第一模块资源。
7.一种软件加载装置,其特征在于,包括:
启动单元,用于根据启动模块资源,启动目标软件,所述启动模块资源包括支持所述目标软件运行的信息;
加载单元,用于根据第一模块信息,加载所述目标软件的第一功能,或者,根据第二模块信息,加载所述目标软件的第二功能;其中,所述第一功能和所述第二功能为基于所述目标软件的功能粒度划分得到的不同功能。
8.一种电子设备,其特征在于,包括:处理器和存储器;
所述存储器用于存储计算机执行指令;
所述处理器用于执行所述存储器所存储的计算机执行指令,以使所述电子设备执行如权利要求1至6中任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,包括:
所述计算机可读存储介质用于存储指令或计算机程序;当所述指令或所述计算机程序被执行时,使如权利要求1至6中任一项所述的方法被实现。
10.一种计算机程序产品,其特征在于,包括:指令或计算机程序;
所述指令或所述计算机程序被执行时,使如权利要求1至6中任一项所述的方法被实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111581306.7A CN114327508A (zh) | 2022-03-10 | 2022-03-10 | 一种软件加载方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111581306.7A CN114327508A (zh) | 2022-03-10 | 2022-03-10 | 一种软件加载方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114327508A true CN114327508A (zh) | 2022-04-12 |
Family
ID=81053996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111581306.7A Pending CN114327508A (zh) | 2022-03-10 | 2022-03-10 | 一种软件加载方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327508A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741121A (zh) * | 2022-04-14 | 2022-07-12 | 哲库科技(北京)有限公司 | 用于模块加载的方法与装置、电子设备 |
-
2022
- 2022-03-10 CN CN202111581306.7A patent/CN114327508A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741121A (zh) * | 2022-04-14 | 2022-07-12 | 哲库科技(北京)有限公司 | 用于模块加载的方法与装置、电子设备 |
CN114741121B (zh) * | 2022-04-14 | 2023-10-20 | 哲库科技(北京)有限公司 | 用于模块加载的方法与装置、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9875102B2 (en) | Apparatus, system, and method for persistent user-level thread | |
US9223596B1 (en) | Virtual machine fast provisioning based on dynamic criterion | |
JP5673672B2 (ja) | マルチコアプロセッサシステム、制御プログラム、および制御方法 | |
US20190095220A1 (en) | Multicore framework for use in pre-boot environment of a system-on-chip | |
WO2013192236A1 (en) | Profiling application code to identify code portions for fpga implementation | |
US11853767B2 (en) | Inter-core data processing method, system on chip and electronic device | |
CN103853620A (zh) | 一种众核处理器进程间相互通信的方法、装置及系统 | |
US20110219373A1 (en) | Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform | |
US10929187B2 (en) | Processing system and heterogeneous processor acceleration method | |
CN102667714B (zh) | 支持访问由操作系统环境外的资源提供的功能的方法和系统 | |
CN111427596A (zh) | 一种软件升级的方法、装置及终端设备 | |
CN110750744A (zh) | 页面呈现方法及装置 | |
CN110659104B (zh) | 一种业务监控方法及相关设备 | |
US11301297B2 (en) | Processing system for dispatching tasks and memory access method thereof | |
CN114327508A (zh) | 一种软件加载方法及相关装置 | |
CN109388429B (zh) | Mhp异构多流水线处理器的任务分发方法 | |
CN114238236A (zh) | 共享文件的访问方法、电子设备及计算机可读存储介质 | |
CN117724852A (zh) | 一种云电脑计算资源分配方法及装置 | |
CN104714792A (zh) | 多进程共享数据处理方法和装置 | |
CN110858164A (zh) | 进程间通信方法、装置及计算机可读介质 | |
Gough et al. | Kernel scalability—expanding the horizon beyond fine grain locks | |
CN108062224B (zh) | 基于文件句柄的数据读写方法、装置及计算设备 | |
CN116107774A (zh) | Io请求处理方法、装置、电子设备和存储介质 | |
CN113032154B (zh) | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 | |
CN115408105A (zh) | 一种缺页异常处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |