亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

程序運(yùn)行方法及裝置與流程

文檔序號(hào):12063402閱讀:321來(lái)源:國(guó)知局
程序運(yùn)行方法及裝置與流程

本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種程序運(yùn)行方法及裝置。



背景技術(shù):

計(jì)算機(jī)能夠通過(guò)運(yùn)行各種不同的程序來(lái)完成不同的任務(wù),且計(jì)算機(jī)在運(yùn)行程序時(shí),往往是由該計(jì)算機(jī)中的虛擬機(jī)加載該程序?qū)?yīng)的可執(zhí)行文件,來(lái)實(shí)現(xiàn)該程序的運(yùn)行,該可執(zhí)行文件中包括多個(gè)程序信息,該多個(gè)程序信息為運(yùn)行該程序時(shí)所需的信息,例如,該多個(gè)程序信息可以為運(yùn)行該程序時(shí)所需的類(lèi)型信息、方法信息、字段信息等。

目前,提供了一種程序運(yùn)行方法,具體為:獲取多個(gè)程序信息,該多個(gè)程序信息為運(yùn)行某一程序時(shí)所需的信息;將該多個(gè)程序信息按照字典序進(jìn)行排序,得到排序后的多個(gè)程序信息;基于該排序后的多個(gè)程序信息,生成該程序?qū)?yīng)的可執(zhí)行文件;當(dāng)檢測(cè)到針對(duì)該程序的運(yùn)行指令時(shí),將該可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中,以對(duì)該程序進(jìn)行運(yùn)行。

計(jì)算機(jī)在將該可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中時(shí),往往是以內(nèi)存頁(yè)為單位進(jìn)行映射的,換句話說(shuō),計(jì)算機(jī)會(huì)將該所要加載的程序信息以及排列在該所要加載的程序信息之后且在該內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息均映射到該內(nèi)存頁(yè)中,而由于該多個(gè)程序信息在該可執(zhí)行文件中是按照字典序進(jìn)行排列的,因此,排列在該所要加載的程序信息之后且在該內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息并不一定是該程序當(dāng)前運(yùn)行所需要的程序信息,所以,此時(shí)該內(nèi)存頁(yè)所映射的程序信息中可能僅有少量是該程序當(dāng)前運(yùn)行所需要的,也即是此時(shí)該內(nèi)存頁(yè)中含有大量的冗余信息,內(nèi)存利用率較低。



技術(shù)實(shí)現(xiàn)要素:

為了解決相關(guān)技術(shù)的問(wèn)題,本發(fā)明實(shí)施例提供了一種程序運(yùn)行方法及裝置。所述技術(shù)方案如下:

一方面,提供了一種程序運(yùn)行方法,所述方法包括:

獲取多個(gè)程序信息的加載順序,所述多個(gè)程序信息為運(yùn)行目標(biāo)程序時(shí)所需的信息,所述目標(biāo)程序?yàn)閼?yīng)用程序或所述應(yīng)用程序中的功能模塊程序;

基于所述多個(gè)程序信息和所述多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,所述第一可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

當(dāng)檢測(cè)到針對(duì)所述目標(biāo)程序的運(yùn)行指令時(shí),將所述第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中,以對(duì)所述目標(biāo)程序進(jìn)行運(yùn)行。

另一方面,提供了一種程序運(yùn)行裝置,所述裝置包括:

獲取模塊,用于獲取多個(gè)程序信息的加載順序,所述多個(gè)程序信息為運(yùn)行目標(biāo)程序時(shí)所需的信息,所述目標(biāo)程序?yàn)閼?yīng)用程序或所述應(yīng)用程序中的功能模塊程序;

生成模塊,用于基于所述多個(gè)程序信息和所述多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,所述第一可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

映射模塊,用于當(dāng)檢測(cè)到針對(duì)所述目標(biāo)程序的運(yùn)行指令時(shí),將所述第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中,以對(duì)所述目標(biāo)程序進(jìn)行運(yùn)行。

本發(fā)明實(shí)施例提供的技術(shù)方案帶來(lái)的有益效果是:在本發(fā)明實(shí)施例中,獲取多個(gè)程序信息的加載順序,該多個(gè)程序信息為運(yùn)行目標(biāo)程序時(shí)所需的信息,該目標(biāo)程序?yàn)閼?yīng)用程序或應(yīng)用程序中的功能模塊程序,之后,基于該多個(gè)程序信息和該多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,第一可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件,當(dāng)檢測(cè)到針對(duì)目標(biāo)程序的運(yùn)行指令時(shí),將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中,以對(duì)目標(biāo)程序進(jìn)行運(yùn)行。由于第一可執(zhí)行文件是基于該多個(gè)程序信息的加載順序得到的,因此,在將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中時(shí),排列在該所要加載的程序信息之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息很有可能也是該目標(biāo)程序當(dāng)前運(yùn)行所需要的程序信息,從而可以減少該內(nèi)存頁(yè)中的冗余信息,提高內(nèi)存利用率。

附圖說(shuō)明

為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本發(fā)明實(shí)施例提供的一種程序運(yùn)行方法流程圖;

圖2A是本發(fā)明實(shí)施例提供的另一種程序運(yùn)行方法流程圖;

圖2B是本發(fā)明實(shí)施例提供的一種指定文件格式示意圖;

圖2C是本發(fā)明實(shí)施例提供的一種內(nèi)存映射示意圖;

圖2D是本發(fā)明實(shí)施例提供的另一種內(nèi)存映射示意圖;

圖2E是本發(fā)明實(shí)施例提供的又一種內(nèi)存映射示意圖;

圖3A是本發(fā)明實(shí)施例提供的第一種程序運(yùn)行裝置結(jié)構(gòu)示意圖;

圖3B是本發(fā)明實(shí)施例提供的一種獲取模塊結(jié)構(gòu)示意圖;

圖3C是本發(fā)明實(shí)施例提供的一種獲取單元結(jié)構(gòu)示意圖;

圖3D是本發(fā)明實(shí)施例提供的一種生成模塊結(jié)構(gòu)示意圖;

圖4是本發(fā)明實(shí)施例提供的第二種程序運(yùn)行裝置結(jié)構(gòu)示意圖;

圖5是本發(fā)明實(shí)施例提供的第三種程序運(yùn)行裝置結(jié)構(gòu)示意圖。

具體實(shí)施方式

為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。

圖1是本發(fā)明實(shí)施例提供的一種程序運(yùn)行方法流程圖,該方法用于服務(wù)器或者終端中。參見(jiàn)圖1,該方法包括:

步驟101:獲取多個(gè)程序信息的加載順序,多個(gè)程序信息為運(yùn)行目標(biāo)程序時(shí)所需的信息,目標(biāo)程序?yàn)閼?yīng)用程序或應(yīng)用程序中的功能模塊程序。

步驟102:基于多個(gè)程序信息和多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,第一可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

步驟103:當(dāng)檢測(cè)到針對(duì)目標(biāo)程序的運(yùn)行指令時(shí),將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中,以對(duì)目標(biāo)程序進(jìn)行運(yùn)行。

在本發(fā)明實(shí)施例中,獲取多個(gè)程序信息的加載順序,該多個(gè)程序信息為運(yùn)行目標(biāo)程序時(shí)所需的信息,該目標(biāo)程序?yàn)閼?yīng)用程序或應(yīng)用程序中的功能模塊程序,之后,基于該多個(gè)程序信息和該多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,第一可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件,當(dāng)檢測(cè)到針對(duì)目標(biāo)程序的運(yùn)行指令時(shí),將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中,以對(duì)目標(biāo)程序進(jìn)行運(yùn)行。由于第一可執(zhí)行文件是基于該多個(gè)程序信息的加載順序得到的,因此,在將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中時(shí),排列在該所要加載的程序信息之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息很有可能也是該目標(biāo)程序當(dāng)前運(yùn)行所需要的程序信息,從而可以減少該內(nèi)存頁(yè)中的冗余信息,提高內(nèi)存利用率。

可選地,獲取多個(gè)程序信息的加載順序,包括:

基于多個(gè)程序信息和多個(gè)程序信息的字典序,生成第二可執(zhí)行文件,第二可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

通過(guò)運(yùn)行第二可執(zhí)行文件,獲取多個(gè)程序信息的加載順序。

可選地,通過(guò)運(yùn)行第二可執(zhí)行文件,獲取多個(gè)程序信息的加載順序,包括:

在運(yùn)行第二可執(zhí)行文件的過(guò)程中,基于第二可執(zhí)行文件的信息加載日志,獲取多個(gè)程序信息的加載順序;或者,

在運(yùn)行第二可執(zhí)行文件的過(guò)程中,通過(guò)鉤子HOOK技術(shù)獲取多個(gè)程序信息的加載順序。

可選地,基于多個(gè)程序信息和多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,包括:

按照多個(gè)程序信息的加載順序,基于指定文件格式對(duì)多個(gè)程序信息進(jìn)行打包,得到第一可執(zhí)行文件,指定文件格式為第一可執(zhí)行文件的文件格式。

可選地,基于多個(gè)程序信息和多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,包括:

按照多個(gè)程序信息的加載順序,從多個(gè)程序信息中選擇指定數(shù)值個(gè)程序信息;

基于指定數(shù)值個(gè)程序信息,生成主文件,主文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

基于多個(gè)程序信息中除指定數(shù)值個(gè)程序信息之外的程序信息,生成副文件,副文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

將主文件和副文件組合成第一可執(zhí)行文件。

上述所有可選技術(shù)方案,均可按照任意結(jié)合形成本發(fā)明的可選實(shí)施例,本發(fā)明實(shí)施例對(duì)此不再一一贅述。

圖2A是本發(fā)明實(shí)施例提供的一種程序運(yùn)行方法流程圖,該方法用于服務(wù)器或終端中。參見(jiàn)圖2A,該方法包括:

步驟201:獲取多個(gè)程序信息的加載順序,該多個(gè)程序信息為運(yùn)行目標(biāo)程序時(shí)所需的信息,目標(biāo)程序?yàn)閼?yīng)用程序或應(yīng)用程序中的功能模塊程序。

需要說(shuō)明的是,該多個(gè)程序信息可以為運(yùn)行該目標(biāo)程序時(shí)所需的類(lèi)型信息、方法信息、字段信息等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

另外,該多個(gè)程序信息的加載順序?yàn)樵摱鄠€(gè)程序信息在目標(biāo)程序的運(yùn)行過(guò)程中進(jìn)行加載的順序。

具體地,獲取多個(gè)程序信息的加載順序時(shí),可以先基于該多個(gè)程序信息和該多個(gè)程序信息的字典序,生成第二可執(zhí)行文件,再通過(guò)運(yùn)行第二可執(zhí)行文件,獲取該多個(gè)程序信息的加載順序。當(dāng)然,實(shí)際應(yīng)用中,也可以以其它方式獲取多個(gè)程序信息的加載順序,本發(fā)明實(shí)施例對(duì)此不做具體限定。

由于目標(biāo)程序的運(yùn)行是通過(guò)運(yùn)行該目標(biāo)程序?qū)?yīng)的可執(zhí)行文件實(shí)現(xiàn)的,因此,可以先基于該多個(gè)程序信息生成第二可執(zhí)行文件,第二可執(zhí)行文件即為目標(biāo)程序?qū)?yīng)的可執(zhí)行文件。又由于該多個(gè)程序信息的加載順序?yàn)樵摱鄠€(gè)程序信息在目標(biāo)程序的運(yùn)行過(guò)程中進(jìn)行加載的順序,因此,在生成第二可執(zhí)行文件后,可以通過(guò)運(yùn)行第二可執(zhí)行文件來(lái)獲取該多個(gè)程序信息的加載順序。

需要說(shuō)明的是,第二可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件,如當(dāng)該虛擬機(jī)為Dalvik虛擬機(jī)時(shí),第二可執(zhí)行文件可以為dex文件等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

其中,基于該多個(gè)程序信息和該多個(gè)程序信息的字典序,生成第二可執(zhí)行文件時(shí),可以按照該多個(gè)程序信息的字典序,基于指定文件格式對(duì)該多個(gè)程序信息進(jìn)行打包,得到第二可執(zhí)行文件。

需要說(shuō)明的是,該多個(gè)程序信息的字典序?yàn)閷⒃摱鄠€(gè)程序信息按照字典序進(jìn)行排序后得到的順序。其中,字典序是指字典的順序A-Z和1-9。如該多個(gè)程序信息為程序信息A、程序信息C、程序信息B和程序信息D,則該多個(gè)程序信息的字典序?yàn)槌绦蛐畔、程序信息B、程序信息C、程序信息D。

另外,指定文件格式為第二可執(zhí)行文件的文件格式,如當(dāng)?shù)诙蓤?zhí)行文件為dex文件時(shí),該指定文件格式可以為如圖2B所示的文件格式,其中,該指定文件格式中可以包括:文件頭、索引區(qū)、類(lèi)定義區(qū)、數(shù)據(jù)區(qū)和映射表,且文件頭中可以包括header字段,索引區(qū)中可以包括string_ids(字符串索引)字段、type_ids(類(lèi)型索引)字段、proto_ids(方法原型索引)字段、filed_ids(域索引)字段、method_ids(方法索引)字段,類(lèi)定義區(qū)中可以包括class_defs字段,數(shù)據(jù)區(qū)中可以包括data字段,映射表中可以包括map字段。

再者,按照該多個(gè)程序信息的字典序,基于指定文件格式對(duì)該多個(gè)程序信息進(jìn)行打包,生成第二可執(zhí)行文件的操作可以通過(guò)指定打包工具實(shí)現(xiàn),具體地,可以先將該指定打包工具中的排序規(guī)則設(shè)置為按照該多個(gè)程序信息的字典序排序,再通過(guò)該指定打包工具基于指定文件格式對(duì)該多個(gè)程序信息進(jìn)行打包,生成第二可執(zhí)行文件。其中,該指定打包工具用于生成具有指定文件格式的可執(zhí)行文件,如當(dāng)?shù)诙蓤?zhí)行文件為dex文件時(shí),該指定打包工具可以為Android Sdk Tool(安卓開(kāi)發(fā)工具)中提供的打包工具dx.jar等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

其中,通過(guò)運(yùn)行第二可執(zhí)行文件,獲取該多個(gè)程序信息的加載順序時(shí),可以在運(yùn)行第二可執(zhí)行文件的過(guò)程中,基于第二可執(zhí)行文件的信息加載日志,獲取該多個(gè)程序信息的加載順序;或者,在運(yùn)行第二可執(zhí)行文件的過(guò)程中,通過(guò)HOOK(鉤子)技術(shù)獲取該多個(gè)程序信息的加載順序。當(dāng)然,實(shí)際應(yīng)用中,也可以通過(guò)運(yùn)行第二可執(zhí)行文件,以其它方式獲取該多個(gè)程序信息的加載順序,本發(fā)明實(shí)施例對(duì)此不做具體限定。

其中,在運(yùn)行第二可執(zhí)行文件的過(guò)程中,基于第二可執(zhí)行文件的信息加載日志,獲取該多個(gè)程序信息的加載順序時(shí),可以在運(yùn)行第二可執(zhí)行文件的過(guò)程中,從第二可執(zhí)行文件的信息加載日志中,獲取該多個(gè)程序信息的加載記錄,基于該多個(gè)程序信息的加載記錄,確定該多個(gè)程序信息的加載順序。

需要說(shuō)明的是,信息加載日志用于記錄在運(yùn)行第二可執(zhí)行文件的過(guò)程中該多個(gè)程序信息的加載情況,如當(dāng)?shù)诙蓤?zhí)行文件為dex文件時(shí),該信息加載日志可以為java.lang.ClassLoader類(lèi)中的loadClass方法日志等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

其中,在運(yùn)行第二可執(zhí)行文件的過(guò)程中,通過(guò)HOOK技術(shù)獲取該多個(gè)程序信息的加載順序時(shí),可以在運(yùn)行第二可執(zhí)行文件的過(guò)程中,通過(guò)指定HOOK工具捕獲加載消息,該加載消息用于指示所要加載的程序信息,基于該加載消息,確定該多個(gè)程序信息的加載順序。

需要說(shuō)明的是,HOOK技術(shù)是一種針對(duì)目標(biāo)對(duì)象或者目標(biāo)函數(shù)的劫持機(jī)制,其可以改變?cè)谐绦虻膱?zhí)行邏輯,也即是,HOOK技術(shù)可以在程序運(yùn)行的過(guò)程中攔截某些特定消息,并對(duì)這些特定消息進(jìn)行處理。

另外,指定HOOK工具用于捕獲加載消息,如該指定HOOK工具可以為cydia框架、xposed框架等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

再者,加載消息用于指示所要加載的程序信息,如當(dāng)?shù)诙蓤?zhí)行文件為dex文件時(shí),該加載消息可以為ClassLoader類(lèi)中的loadClass方法所產(chǎn)生的消息等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

步驟202:基于該多個(gè)程序信息和該多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件。

需要說(shuō)明的是,第一可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件,如當(dāng)該虛擬機(jī)為Dalvik虛擬機(jī)時(shí),第一可執(zhí)行文件可以為dex文件等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

具體地,基于該多個(gè)程序信息和該多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件的操作可以通過(guò)如下兩種方式實(shí)現(xiàn):

第一種方式:按照該多個(gè)程序信息的加載順序,基于指定文件格式對(duì)該多個(gè)程序信息進(jìn)行打包,得到第一可執(zhí)行文件。

需要說(shuō)明的是,指定文件格式為第一可執(zhí)行文件的文件格式,也即是,第一可執(zhí)行文件的文件格式可以與第二可執(zhí)行文件的文件格式相同。

另外,按照該多個(gè)程序信息的加載順序,基于指定文件格式對(duì)該多個(gè)程序信息進(jìn)行打包,得到第一可執(zhí)行文件的操作可以通過(guò)指定打包工具實(shí)現(xiàn),具體地,可以先將該指定打包工具中的排序規(guī)則設(shè)置為按照該多個(gè)程序信息的加載順序排序,再通過(guò)該指定打包工具基于指定文件格式對(duì)該多個(gè)程序信息進(jìn)行打包,生成第一可執(zhí)行文件。

第二種方式:按照該多個(gè)程序信息的加載順序,從該多個(gè)程序信息中選擇指定數(shù)值個(gè)程序信息;基于該指定數(shù)值個(gè)程序信息,生成主文件;基于該多個(gè)程序信息中除該指定數(shù)值個(gè)程序信息之外的程序信息,生成副文件;將主文件和副文件組合成第一可執(zhí)行文件。

需要說(shuō)明的是,指定數(shù)值可以預(yù)先設(shè)置,如該指定數(shù)值可以為10、11等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

另外,主文件和副文件均為可以在虛擬機(jī)中加載運(yùn)行的文件,如當(dāng)該虛擬機(jī)為Dalvik虛擬機(jī)時(shí),主文件和副文件均可以為dex文件等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

再者,基于上述第二種方式生成的主文件中包括的程序信息一般為目標(biāo)程序進(jìn)行基礎(chǔ)運(yùn)行時(shí)所需要的程序信息,而基于上述第二種方式生成的副文件中包括的程序信息一般為目標(biāo)程序運(yùn)行到特定模塊或者特定路徑時(shí)所需要的程序信息。

其中,基于該指定數(shù)值個(gè)程序信息,生成主文件時(shí),可以基于該指定數(shù)值個(gè)程序信息和該指定數(shù)值個(gè)程序信息的字典序,生成主文件,或者,可以基于該指定數(shù)值個(gè)程序信息和該指定數(shù)值個(gè)程序信息的加載順序,生成主文件,本發(fā)明實(shí)施例對(duì)此不做具體限定。

需要說(shuō)明的是,基于該指定數(shù)值個(gè)程序信息和該指定數(shù)值個(gè)程序信息的字典序,生成主文件的操作與上述步驟201中生成第二可執(zhí)行文件的操作類(lèi)似,本發(fā)明實(shí)施例對(duì)此不再贅述。另外,基于該指定數(shù)值個(gè)程序信息和該指定數(shù)值個(gè)程序信息的加載順序,生成主文件的操作與上述步驟202中生成第一可執(zhí)行文件的操作類(lèi)似,本發(fā)明實(shí)施例同樣對(duì)此不再贅述。

其中,基于該多個(gè)程序信息中除該指定數(shù)值個(gè)程序信息之外的程序信息,生成副文件的操作與上述生成主文件的操作類(lèi)似,本發(fā)明實(shí)施例對(duì)此不再贅述。

其中,將主文件和副文件組合成第一可執(zhí)行文件時(shí),可以將主文件和副文件進(jìn)行打包,得到第一可執(zhí)行文件,當(dāng)然,也可以以其它方式將主文件和副文件組合成第一可執(zhí)行文件,本發(fā)明實(shí)施例對(duì)此不做具體限定。

步驟203:當(dāng)檢測(cè)到針對(duì)目標(biāo)程序的運(yùn)行指令時(shí),將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中,以對(duì)目標(biāo)程序進(jìn)行運(yùn)行。

需要說(shuō)明的是,運(yùn)行指令用于指示對(duì)目標(biāo)程序進(jìn)行運(yùn)行,且該運(yùn)行指令可以由用戶觸發(fā),該用戶可以通過(guò)指定操作觸發(fā),該指定操作可以為單擊操作、雙擊操作、語(yǔ)音操作等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

另外,將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中時(shí),可以通過(guò)指定函數(shù)將該所要加載的程序信息映射到內(nèi)存中,當(dāng)然,實(shí)際應(yīng)用中,也可以以其它方式將所要加載的程序信息映射到內(nèi)存中,本發(fā)明實(shí)施例對(duì)此不做具體限定。其中,指定函數(shù)用于將所要加載的程序信息映射到內(nèi)存中,如該指定函數(shù)可以為mmap函數(shù)等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

進(jìn)一步地,對(duì)本發(fā)明實(shí)施例中生成的第一可執(zhí)行文件在目標(biāo)程序運(yùn)行過(guò)程中所帶來(lái)的有益效果進(jìn)行說(shuō)明。

由于在將所要加載的程序信息映射到內(nèi)存中時(shí),往往是以內(nèi)存頁(yè)為單位進(jìn)行映射的,換句話說(shuō),在將所要加載的程序信息映射到內(nèi)存中時(shí),往往會(huì)將所要加載的程序信息以及排列在該所要加載的程序信息之后且在該內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息均映射到該內(nèi)存頁(yè)中,例如,如圖2C所示,所要加載的程序信息為A2,排列在A2之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息為A3、A4、A5,則在將A2映射到內(nèi)存中時(shí),會(huì)將A2、A3、A4、A5均映射到該內(nèi)存頁(yè)中。

相關(guān)技術(shù)中,由于多個(gè)程序信息是按照字典序進(jìn)行排列的,因此,排列在該所要加載的程序信息之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息并不一定是目標(biāo)程序當(dāng)前運(yùn)行所需要的程序信息,所以,此時(shí)該內(nèi)存頁(yè)所映射的程序信息中可能僅有少量是該目標(biāo)程序當(dāng)前運(yùn)行所需要的,也即是此時(shí)該內(nèi)存頁(yè)中會(huì)含有大量的冗余信息,內(nèi)存利用率較低。

例如,該多個(gè)程序信息按照字典序進(jìn)行排列,且該多個(gè)程序信息的字典序?yàn)锳1、A2、A3、A4、A5、A6、B1、B2、B3、B4、B5、C1、C2、C3、C4、C5,假設(shè)所要加載的程序信息為A2、B1、C1,排列在A2之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息為A3、A4、A5,排列在B1之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息為B2、B3、B4,排列在C1之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息為C2、C3、C4。如圖2D所示,在將A2、B1、C1映射到內(nèi)存中時(shí),會(huì)將A2、A3、A4、A5映射到第一個(gè)內(nèi)存頁(yè)中,將B1、B2、B3、B4映射到第二個(gè)內(nèi)存頁(yè)中,將C1、C2、C3、C4映射到第三個(gè)內(nèi)存頁(yè)中。由于目標(biāo)程序當(dāng)前運(yùn)行所需要的程序信息僅為A2、B1、C1,所以第一個(gè)內(nèi)存頁(yè)、第二個(gè)內(nèi)存頁(yè)和第三個(gè)內(nèi)存頁(yè)中均含有大量的冗余信息,從而降低了內(nèi)存利用率,且增加了沒(méi)有必要的內(nèi)存占用。

而在本發(fā)明實(shí)施例中,當(dāng)?shù)谝豢蓤?zhí)行文件是按照該多個(gè)程序信息的加載順序,基于指定文件格式對(duì)該多個(gè)程序信息進(jìn)行打包得到時(shí),由于該多個(gè)程序信息是按照加載順序進(jìn)行排列的,因此,排列在該所要加載的程序信息之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息很有可能也是該目標(biāo)程序當(dāng)前運(yùn)行所需要的程序信息,此時(shí)該內(nèi)存頁(yè)中的冗余信息較少,內(nèi)存利用率較高。

例如,該多個(gè)程序信息按照加載順序進(jìn)行排列,且該多個(gè)程序信息的加載順序?yàn)锳2、B1、C1、A1、A3、B2、A4、A5、C2、A6、B3、B4、B5、C5、C3、C4,假設(shè)所要加載的程序信息為A2、B1、C1,排列在A2之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息為B1、C1、A1,排列在B1之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息為C1、A1,排列在C1之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息為A1。如圖2E所示,當(dāng)將A2、B1、C1映射到內(nèi)存中時(shí),會(huì)將A2、B1、C1、A1映射到同一內(nèi)存頁(yè)中,由于目標(biāo)程序當(dāng)前運(yùn)行所需要的程序信息為A2、B1、C1,所以該內(nèi)存頁(yè)中只含有一個(gè)冗余信息A1,從而提高了內(nèi)存利用率,且此時(shí)只需要一個(gè)內(nèi)存頁(yè)即可完成對(duì)A2、B1、C1的映射,相比于相關(guān)技術(shù)中需要三個(gè)內(nèi)存頁(yè)才能完成對(duì)A2、B1、C1映射的情況,本發(fā)明可以大大減少?zèng)]有必要的內(nèi)存占用。

當(dāng)?shù)谝豢蓤?zhí)行文件是由主文件和副文件組合得到時(shí),由于主文件中包括的程序信息一般為目標(biāo)程序進(jìn)行基礎(chǔ)運(yùn)行時(shí)所需要的程序信息,而副文件中包括的程序信息一般為目標(biāo)程序運(yùn)行到特定模塊或者特定路徑時(shí)所需要的程序信息,因此,當(dāng)檢測(cè)到針對(duì)目標(biāo)程序的運(yùn)行指令時(shí),可以先加載主文件,當(dāng)執(zhí)行到特定模塊或特定路徑時(shí)再加載副文件。

由于主文件是基于指定數(shù)值個(gè)程序信息得到的,且該指定數(shù)值個(gè)程序信息是按照該多個(gè)程序信息的加載順序選擇得到的,所以在加載主文件時(shí),目標(biāo)程序當(dāng)前運(yùn)行所需要的程序信息在主文件中所占的比例較高,因此,排列在該所要加載的程序信息之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息很有可能也是該目標(biāo)程序當(dāng)前運(yùn)行所需要的程序信息,此時(shí)該內(nèi)存頁(yè)中的冗余信息較少,內(nèi)存利用率較高。且由于在未執(zhí)行到特定模塊或特定路徑時(shí)不加載副文件,因此,可以減少?zèng)]有必要的內(nèi)存占用。

在本發(fā)明實(shí)施例中,獲取多個(gè)程序信息的加載順序,該多個(gè)程序信息為運(yùn)行目標(biāo)程序時(shí)所需的信息,該目標(biāo)程序?yàn)閼?yīng)用程序或應(yīng)用程序中的功能模塊程序,之后,基于該多個(gè)程序信息和該多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,第一可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件,當(dāng)檢測(cè)到針對(duì)目標(biāo)程序的運(yùn)行指令時(shí),將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中,以對(duì)目標(biāo)程序進(jìn)行運(yùn)行。由于第一可執(zhí)行文件是基于該多個(gè)程序信息的加載順序得到的,因此,在將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中時(shí),排列在該所要加載的程序信息之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息很有可能也是該目標(biāo)程序當(dāng)前運(yùn)行所需要的程序信息,從而可以減少該內(nèi)存頁(yè)中的冗余信息,提高內(nèi)存利用率。

參見(jiàn)圖3A,本發(fā)明實(shí)施例提供了一種程序運(yùn)行裝置,該裝置包括獲取模塊301和生成模塊302。

獲取模塊301,用于獲取多個(gè)程序信息的加載順序,所述多個(gè)程序信息為運(yùn)行目標(biāo)程序時(shí)所需的信息,所述目標(biāo)程序?yàn)閼?yīng)用程序或所述應(yīng)用程序中的功能模塊程序;

生成模塊302,用于基于所述多個(gè)程序信息和所述多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,所述第一可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

映射模塊303,用于當(dāng)檢測(cè)到針對(duì)目標(biāo)程序的運(yùn)行指令時(shí),將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中,以對(duì)目標(biāo)程序進(jìn)行運(yùn)行。

可選地,參見(jiàn)圖3B,該獲取模塊301包括第一生成單元3011和獲取單元3012。

第一生成單元3011,用于基于所述多個(gè)程序信息和所述多個(gè)程序信息的字典序,生成第二可執(zhí)行文件,所述第二可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

獲取單元3012,用于通過(guò)運(yùn)行所述第二可執(zhí)行文件,獲取所述多個(gè)程序信息的加載順序。

可選地,參見(jiàn)圖3C,該獲取單元3012包括第一獲取子單元30121和第二獲取子單元30122。

第一獲取子單元30121,用于在運(yùn)行所述第二可執(zhí)行文件的過(guò)程中,基于所述第二可執(zhí)行文件的信息加載日志,獲取所述多個(gè)程序信息的加載順序;或者,

第二獲取子單元30122,用于在運(yùn)行所述第二可執(zhí)行文件的過(guò)程中,通過(guò)鉤子HOOK技術(shù)獲取所述多個(gè)程序信息的加載順序。

可選地,該生成模塊302包括打包單元。

打包單元,用于按照所述多個(gè)程序信息的加載順序,基于指定文件格式對(duì)所述多個(gè)程序信息進(jìn)行打包,得到所述第一可執(zhí)行文件,所述指定文件格式為所述第一可執(zhí)行文件的文件格式。

可選地,參見(jiàn)圖3D,該生成模塊302包括選擇單元3021,第二生成單元3022,第三生成單元3023和組合單元3024。

選擇單元3021,用于按照所述多個(gè)程序信息的加載順序,從所述多個(gè)程序信息中選擇指定數(shù)值個(gè)程序信息;

第二生成單元3022,用于基于所述指定數(shù)值個(gè)程序信息,生成主文件,所述主文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

第三生成單元3023,用于基于所述多個(gè)程序信息中除所述指定數(shù)值個(gè)程序信息之外的程序信息,生成副文件,所述副文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

組合單元3024,用于將所述主文件和所述副文件組合成所述第一可執(zhí)行文件。

在本發(fā)明實(shí)施例中,獲取多個(gè)程序信息的加載順序,該多個(gè)程序信息為運(yùn)行目標(biāo)程序時(shí)所需的信息,該目標(biāo)程序?yàn)閼?yīng)用程序或應(yīng)用程序中的功能模塊程序,之后,基于該多個(gè)程序信息和該多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,第一可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件,當(dāng)檢測(cè)到針對(duì)目標(biāo)程序的運(yùn)行指令時(shí),將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中,以對(duì)目標(biāo)程序進(jìn)行運(yùn)行。由于第一可執(zhí)行文件是基于該多個(gè)程序信息的加載順序得到的,因此,在將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中時(shí),排列在該所要加載的程序信息之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息很有可能也是該目標(biāo)程序當(dāng)前運(yùn)行所需要的程序信息,從而可以減少該內(nèi)存頁(yè)中的冗余信息,提高內(nèi)存利用率。

需要說(shuō)明的是:上述實(shí)施例提供的程序運(yùn)行裝置在程序運(yùn)行時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說(shuō)明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的程序運(yùn)行裝置與程序運(yùn)行方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過(guò)程詳見(jiàn)方法實(shí)施例,這里不再贅述。

圖4和圖5是本發(fā)明實(shí)施例提供的程序運(yùn)行裝置的結(jié)構(gòu)示意圖。該程序運(yùn)行裝置可以為服務(wù)器或者終端。

圖4是本發(fā)明實(shí)施例提供的一種程序運(yùn)行裝置的服務(wù)器結(jié)構(gòu)示意圖。該服務(wù)器可以是后臺(tái)服務(wù)器集群中的服務(wù)器。具體來(lái)講:

服務(wù)器400包括中央處理單元(CPU)401、包括隨機(jī)存取存儲(chǔ)器(RAM)402和只讀存儲(chǔ)器(ROM)403的系統(tǒng)存儲(chǔ)器404,以及連接系統(tǒng)存儲(chǔ)器404和中央處理單元401的系統(tǒng)總線405。服務(wù)器400還包括幫助計(jì)算機(jī)內(nèi)的各個(gè)器件之間傳輸信息的基本輸入/輸出系統(tǒng)(I/O系統(tǒng))406,和用于存儲(chǔ)操作系統(tǒng)413、應(yīng)用程序414和其他程序模塊415的大容量存儲(chǔ)設(shè)備407。

基本輸入/輸出系統(tǒng)406包括有用于顯示信息的顯示器408和用于用戶輸入信息的諸如鼠標(biāo)、鍵盤(pán)之類(lèi)的輸入設(shè)備409。其中顯示器408和輸入設(shè)備409都通過(guò)連接到系統(tǒng)總線405的輸入輸出控制器410連接到中央處理單元401?;据斎?輸出系統(tǒng)406還可以包括輸入輸出控制器410以用于接收和處理來(lái)自鍵盤(pán)、鼠標(biāo)、或電子觸控筆等多個(gè)其他設(shè)備的輸入。類(lèi)似地,輸入輸出控制器410還提供輸出到顯示屏、打印機(jī)或其他類(lèi)型的輸出設(shè)備。

大容量存儲(chǔ)設(shè)備407通過(guò)連接到系統(tǒng)總線405的大容量存儲(chǔ)控制器(未示出)連接到中央處理單元401。大容量存儲(chǔ)設(shè)備407及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為服務(wù)器400提供非易失性存儲(chǔ)。也就是說(shuō),大容量存儲(chǔ)設(shè)備407可以包括諸如硬盤(pán)或者CD-ROM驅(qū)動(dòng)器之類(lèi)的計(jì)算機(jī)可讀介質(zhì)(未示出)。

不失一般性,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括RAM、ROM、EPROM、EEPROM、閃存或其他固態(tài)存儲(chǔ)其技術(shù),CD-ROM、DVD或其他光學(xué)存儲(chǔ)、磁帶盒、磁帶、磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備。當(dāng)然,本領(lǐng)域技術(shù)人員可知計(jì)算機(jī)存儲(chǔ)介質(zhì)不局限于上述幾種。上述的系統(tǒng)存儲(chǔ)器404和大容量存儲(chǔ)設(shè)備407可以統(tǒng)稱(chēng)為存儲(chǔ)器。

根據(jù)本發(fā)明的各種實(shí)施例,服務(wù)器400還可以通過(guò)諸如因特網(wǎng)等網(wǎng)絡(luò)連接到網(wǎng)絡(luò)上的遠(yuǎn)程計(jì)算機(jī)運(yùn)行。也即服務(wù)器400可以通過(guò)連接在系統(tǒng)總線405上的網(wǎng)絡(luò)接口單元411連接到網(wǎng)絡(luò)412,或者說(shuō),也可以使用網(wǎng)絡(luò)接口單元411來(lái)連接到其他類(lèi)型的網(wǎng)絡(luò)或遠(yuǎn)程計(jì)算機(jī)系統(tǒng)(未示出)。

上述存儲(chǔ)器還包括一個(gè)或者一個(gè)以上的程序,一個(gè)或者一個(gè)以上程序存儲(chǔ)于存儲(chǔ)器中,被配置由CPU執(zhí)行。所述一個(gè)或者一個(gè)以上程序包含用于進(jìn)行本發(fā)明實(shí)施例提供的如下所述的程序運(yùn)行方法的指令,包括:

獲取多個(gè)程序信息的加載順序,多個(gè)程序信息為運(yùn)行目標(biāo)程序時(shí)所需的信息,目標(biāo)程序?yàn)閼?yīng)用程序或應(yīng)用程序中的功能模塊程序;

基于多個(gè)程序信息和多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,第一可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

當(dāng)檢測(cè)到針對(duì)目標(biāo)程序的運(yùn)行指令時(shí),將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中,以對(duì)目標(biāo)程序進(jìn)行運(yùn)行。

可選地,獲取多個(gè)程序信息的加載順序,包括:

基于多個(gè)程序信息和多個(gè)程序信息的字典序,生成第二可執(zhí)行文件,第二可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

通過(guò)運(yùn)行第二可執(zhí)行文件,獲取多個(gè)程序信息的加載順序。

可選地,通過(guò)運(yùn)行第二可執(zhí)行文件,獲取多個(gè)程序信息的加載順序,包括:

在運(yùn)行第二可執(zhí)行文件的過(guò)程中,基于第二可執(zhí)行文件的信息加載日志,獲取多個(gè)程序信息的加載順序;或者,

在運(yùn)行第二可執(zhí)行文件的過(guò)程中,通過(guò)鉤子HOOK技術(shù)獲取多個(gè)程序信息的加載順序。

可選地,基于多個(gè)程序信息和多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,包括:

按照多個(gè)程序信息的加載順序,基于指定文件格式對(duì)多個(gè)程序信息進(jìn)行打包,得到第一可執(zhí)行文件,指定文件格式為第一可執(zhí)行文件的文件格式。

可選地,基于多個(gè)程序信息和多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,包括:

按照多個(gè)程序信息的加載順序,從多個(gè)程序信息中選擇指定數(shù)值個(gè)程序信息;

基于指定數(shù)值個(gè)程序信息,生成主文件,主文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

基于多個(gè)程序信息中除指定數(shù)值個(gè)程序信息之外的程序信息,生成副文件,副文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

將主文件和副文件組合成第一可執(zhí)行文件。

在本發(fā)明實(shí)施例中,獲取多個(gè)程序信息的加載順序,該多個(gè)程序信息為運(yùn)行目標(biāo)程序時(shí)所需的信息,該目標(biāo)程序?yàn)閼?yīng)用程序或應(yīng)用程序中的功能模塊程序,之后,基于該多個(gè)程序信息和該多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,第一可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件,當(dāng)檢測(cè)到針對(duì)目標(biāo)程序的運(yùn)行指令時(shí),將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中,以對(duì)目標(biāo)程序進(jìn)行運(yùn)行。由于第一可執(zhí)行文件是基于該多個(gè)程序信息的加載順序得到的,因此,在將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中時(shí),排列在該所要加載的程序信息之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息很有可能也是該目標(biāo)程序當(dāng)前運(yùn)行所需要的程序信息,從而可以減少該內(nèi)存頁(yè)中的冗余信息,提高內(nèi)存利用率。

圖5是本發(fā)明實(shí)施例提供的一種程序運(yùn)行裝置的終端結(jié)構(gòu)示意圖。參見(jiàn)圖5,終端500可以包括通信單元510、包括有一個(gè)或一個(gè)以上計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的存儲(chǔ)器520、輸入單元530、顯示單元540、傳感器550、音頻電路560、WIFI(Wireless Fidelity,無(wú)線保真)模塊570、包括有一個(gè)或者一個(gè)以上處理核心的處理器580、以及電源590等部件。本領(lǐng)域技術(shù)人員可以理解,圖5中示出的終端結(jié)構(gòu)并不構(gòu)成對(duì)終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:

通信單元510可用于收發(fā)信息或通話過(guò)程中,信號(hào)的接收和發(fā)送,該通信單元510可以為RF(Radio Frequency,射頻)電路、路由器、調(diào)制解調(diào)器、等網(wǎng)絡(luò)通信設(shè)備。特別地,當(dāng)通信單元510為RF電路時(shí),將基站的下行信息接收后,交由一個(gè)或者一個(gè)以上處理器580處理;另外,將涉及上行的數(shù)據(jù)發(fā)送給基站。通常,作為通信單元的RF電路包括但不限于天線、至少一個(gè)放大器、調(diào)諧器、一個(gè)或多個(gè)振蕩器、用戶身份模塊(SIM)卡、收發(fā)信機(jī)、耦合器、LNA(Low Noise Amplifier,低噪聲放大器)、雙工器等。此外,通信單元510還可以通過(guò)無(wú)線通信與網(wǎng)絡(luò)和其他設(shè)備通信。所述無(wú)線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于GSM(Global System of Mobile communication,全球移動(dòng)通訊系統(tǒng))、GPRS(General Packet Radio Service,通用分組無(wú)線服務(wù))、CDMA(Code Division Multiple Access,碼分多址)、WCDMA(Wideband Code Division Multiple Access,寬帶碼分多址)、LTE(Long Term Evolution,長(zhǎng)期演進(jìn))、電子郵件、SMS(Short Messaging Service,短消息服務(wù))等。存儲(chǔ)器520可用于存儲(chǔ)軟件程序以及模塊,處理器580通過(guò)運(yùn)行存儲(chǔ)在存儲(chǔ)器520的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲(chǔ)器520可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)終端500的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲(chǔ)器520可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤(pán)存儲(chǔ)器件、閃存器件、或其他易失性固態(tài)存儲(chǔ)器件。相應(yīng)地,存儲(chǔ)器520還可以包括存儲(chǔ)器控制器,以提供處理器580和輸入單元530對(duì)存儲(chǔ)器520的訪問(wèn)。

輸入單元530可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設(shè)置以及功能控制有關(guān)的鍵盤(pán)、鼠標(biāo)、操作桿、光學(xué)或者軌跡球信號(hào)輸入。優(yōu)選地,輸入單元530可包括觸敏表面531以及其他輸入設(shè)備532。觸敏表面531,也稱(chēng)為觸摸顯示屏或者觸控板,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸敏表面531上或在觸敏表面531附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動(dòng)相應(yīng)的連接裝置??蛇x的,觸敏表面531可包括觸摸檢測(cè)裝置和觸摸控制器兩個(gè)部分。其中,觸摸檢測(cè)裝置檢測(cè)用戶的觸摸方位,并檢測(cè)觸摸操作帶來(lái)的信號(hào),將信號(hào)傳送給觸摸控制器;觸摸控制器從觸摸檢測(cè)裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給處理器580,并能接收處理器580發(fā)來(lái)的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類(lèi)型實(shí)現(xiàn)觸敏表面531。除了觸敏表面531,輸入單元530還可以包括其他輸入設(shè)備532。優(yōu)選地,其他輸入設(shè)備532可以包括但不限于物理鍵盤(pán)、功能鍵(比如音量控制按鍵、開(kāi)關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。

顯示單元540可用于顯示由用戶輸入的信息或提供給用戶的信息以及終端500的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標(biāo)、視頻和其任意組合來(lái)構(gòu)成。顯示單元540可包括顯示面板541,可選的,可以采用LCD(Liquid Crystal Display,液晶顯示器)、OLED(Organic Light-Emitting Diode,有機(jī)發(fā)光二極管)等形式來(lái)配置顯示面板541。進(jìn)一步的,觸敏表面531可覆蓋顯示面板541,當(dāng)觸敏表面531檢測(cè)到在其上或附近的觸摸操作后,傳送給處理器580以確定觸摸事件的類(lèi)型,隨后處理器580根據(jù)觸摸事件的類(lèi)型在顯示面板541上提供相應(yīng)的視覺(jué)輸出。雖然在圖5中,觸敏表面531與顯示面板541是作為兩個(gè)獨(dú)立的部件來(lái)實(shí)現(xiàn)輸入和輸入功能,但是在某些實(shí)施例中,可以將觸敏表面531與顯示面板541集成而實(shí)現(xiàn)輸入和輸出功能。

終端500還可包括至少一種傳感器550,比如光傳感器、運(yùn)動(dòng)傳感器以及其他傳感器。光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來(lái)調(diào)節(jié)顯示面板541的亮度,接近傳感器可在終端500移動(dòng)到耳邊時(shí),關(guān)閉顯示面板541和/或背光。作為運(yùn)動(dòng)傳感器的一種,重力加速度傳感器可檢測(cè)各個(gè)方向上(一般為三軸)加速度的大小,靜止時(shí)可檢測(cè)出重力的大小及方向,可用于識(shí)別手機(jī)姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計(jì)姿態(tài)校準(zhǔn))、振動(dòng)識(shí)別相關(guān)功能(比如計(jì)步器、敲擊)等;至于終端500還可配置的陀螺儀、氣壓計(jì)、濕度計(jì)、溫度計(jì)、紅外線傳感器等其他傳感器,在此不再贅述。

音頻電路560、揚(yáng)聲器561,傳聲器562可提供用戶與終端500之間的音頻接口。音頻電路560可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號(hào),傳輸?shù)綋P(yáng)聲器561,由揚(yáng)聲器561轉(zhuǎn)換為聲音信號(hào)輸出;另一方面,傳聲器562將收集的聲音信號(hào)轉(zhuǎn)換為電信號(hào),由音頻電路560接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器580處理后,經(jīng)通信單元510以發(fā)送給比如另一終端,或者將音頻數(shù)據(jù)輸出至存儲(chǔ)器520以便進(jìn)一步處理。音頻電路560還可能包括耳塞插孔,以提供外設(shè)耳機(jī)與終端500的通信。

為了實(shí)現(xiàn)無(wú)線通信,該終端上可以配置有無(wú)線通信單元570,該無(wú)線通信單元570可以為WIFI模塊。WIFI屬于短距離無(wú)線傳輸技術(shù),終端500通過(guò)無(wú)線通信單元570可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁(yè)和訪問(wèn)流式媒體等,它為用戶提供了無(wú)線的寬帶互聯(lián)網(wǎng)訪問(wèn)。雖然圖中示出了無(wú)線通信單元570,但是可以理解的是,其并不屬于終端500的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。

處理器580是終端500的控制中心,利用各種接口和線路連接整個(gè)手機(jī)的各個(gè)部分,通過(guò)運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器520內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器520內(nèi)的數(shù)據(jù),執(zhí)行終端500的各種功能和處理數(shù)據(jù),從而對(duì)手機(jī)進(jìn)行整體監(jiān)控??蛇x的,處理器580可包括一個(gè)或多個(gè)處理核心;優(yōu)選的,處理器580可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無(wú)線通信??梢岳斫獾氖?,上述調(diào)制解調(diào)處理器也可以不集成到處理器580中。

終端500還包括給各個(gè)部件供電的電源590(比如電池),優(yōu)選的,電源可以通過(guò)電源管理系統(tǒng)與處理器580邏輯相連,從而通過(guò)電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。電源560還可以包括一個(gè)或一個(gè)以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測(cè)電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。

盡管未示出,終端500還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。

在本實(shí)施例中,終端還包括有一個(gè)或者一個(gè)以上的程序,這一個(gè)或者一個(gè)以上程序存儲(chǔ)于存儲(chǔ)器中,且經(jīng)配置以由一個(gè)或者一個(gè)以上處理器執(zhí)行,所述一個(gè)或者一個(gè)以上程序包含用于進(jìn)行本發(fā)明實(shí)施例提供的如下所述的程序運(yùn)行方法的指令,包括:

獲取多個(gè)程序信息的加載順序,多個(gè)程序信息為運(yùn)行目標(biāo)程序時(shí)所需的信息,目標(biāo)程序?yàn)閼?yīng)用程序或應(yīng)用程序中的功能模塊程序;

基于多個(gè)程序信息和多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,第一可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

當(dāng)檢測(cè)到針對(duì)目標(biāo)程序的運(yùn)行指令時(shí),將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中,以對(duì)目標(biāo)程序進(jìn)行運(yùn)行。

可選地,獲取多個(gè)程序信息的加載順序,包括:

基于多個(gè)程序信息和多個(gè)程序信息的字典序,生成第二可執(zhí)行文件,第二可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

通過(guò)運(yùn)行第二可執(zhí)行文件,獲取多個(gè)程序信息的加載順序。

可選地,通過(guò)運(yùn)行第二可執(zhí)行文件,獲取多個(gè)程序信息的加載順序,包括:

在運(yùn)行第二可執(zhí)行文件的過(guò)程中,基于第二可執(zhí)行文件的信息加載日志,獲取多個(gè)程序信息的加載順序;或者,

在運(yùn)行第二可執(zhí)行文件的過(guò)程中,通過(guò)鉤子HOOK技術(shù)獲取多個(gè)程序信息的加載順序。

可選地,基于多個(gè)程序信息和多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,包括:

按照多個(gè)程序信息的加載順序,基于指定文件格式對(duì)多個(gè)程序信息進(jìn)行打包,得到第一可執(zhí)行文件,指定文件格式為第一可執(zhí)行文件的文件格式。

可選地,基于多個(gè)程序信息和多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,包括:

按照多個(gè)程序信息的加載順序,從多個(gè)程序信息中選擇指定數(shù)值個(gè)程序信息;

基于指定數(shù)值個(gè)程序信息,生成主文件,主文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

基于多個(gè)程序信息中除指定數(shù)值個(gè)程序信息之外的程序信息,生成副文件,副文件為能夠在虛擬機(jī)中加載運(yùn)行的文件;

將主文件和副文件組合成第一可執(zhí)行文件。

在本發(fā)明實(shí)施例中,獲取多個(gè)程序信息的加載順序,該多個(gè)程序信息為運(yùn)行目標(biāo)程序時(shí)所需的信息,該目標(biāo)程序?yàn)閼?yīng)用程序或應(yīng)用程序中的功能模塊程序,之后,基于該多個(gè)程序信息和該多個(gè)程序信息的加載順序,生成第一可執(zhí)行文件,第一可執(zhí)行文件為能夠在虛擬機(jī)中加載運(yùn)行的文件,當(dāng)檢測(cè)到針對(duì)目標(biāo)程序的運(yùn)行指令時(shí),將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中,以對(duì)目標(biāo)程序進(jìn)行運(yùn)行。由于第一可執(zhí)行文件是基于該多個(gè)程序信息的加載順序得到的,因此,在將第一可執(zhí)行文件中所要加載的程序信息映射到內(nèi)存中時(shí),排列在該所要加載的程序信息之后且在內(nèi)存頁(yè)的映射范圍內(nèi)的程序信息很有可能也是該目標(biāo)程序當(dāng)前運(yùn)行所需要的程序信息,從而可以減少該內(nèi)存頁(yè)中的冗余信息,提高內(nèi)存利用率。

本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過(guò)硬件來(lái)完成,也可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。

以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1