本發(fā)明實(shí)施例涉及內(nèi)存管理,尤其涉及一種運(yùn)行時(shí)內(nèi)存管理方法、裝置、操作系統(tǒng)、虛擬機(jī)、設(shè)備、終端、介質(zhì)及程序。
背景技術(shù):
1、wasm(webassembly,網(wǎng)絡(luò)組裝)是一種使用非javascript(簡稱js,一種具有函數(shù)優(yōu)先的輕量級(jí),解釋型或即時(shí)編譯型的編程語言)腳本代碼,并使其在瀏覽器中運(yùn)行的方法,非javascript代碼包括c語言、c++或rust(rust?programming?language,一種內(nèi)存安全的編程語言,專注于性能和并發(fā)性)等。在非javascript代碼加載到客戶端瀏覽器后,可以接近原生的速度運(yùn)行。通過將程序模塊的程序代碼通過二進(jìn)制中間文件(binaryintermediate?representation)wasm技術(shù)進(jìn)行編譯,并通過轉(zhuǎn)換工具進(jìn)行轉(zhuǎn)換后可以獲得模塊程序數(shù)據(jù)。模塊程序數(shù)據(jù)能夠加載到支持wasm虛擬機(jī)平臺(tái)的資源受限設(shè)備中,例如智能卡安全芯片。資源受限設(shè)備的ram(random?access?memory,隨機(jī)存取存儲(chǔ)器)資源有限。在轉(zhuǎn)換工具對(duì)程序代碼進(jìn)行轉(zhuǎn)換后,由于不同模塊的程序數(shù)據(jù)中全局變量起始位置都是相同的,在轉(zhuǎn)換工具中預(yù)先設(shè)置的編譯分配起始地址也都相同,由此導(dǎo)致在轉(zhuǎn)換后各模塊的全局變量起始地址都是相同的。所以,需要解決多模塊或同模塊間的變量定位尋址問題,及變量數(shù)據(jù)的邏輯通道間和模塊間的安全隔離問題。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明實(shí)施例提供一種運(yùn)行時(shí)內(nèi)存管理方法、裝置、操作系統(tǒng)、虛擬機(jī)、設(shè)備、終端、介質(zhì)及程序,能夠確保邏輯通道間以及模塊間變量數(shù)據(jù)的安全隔離,同時(shí)提高內(nèi)存訪問效率。
2、根據(jù)本發(fā)明的一方面,提供了一種運(yùn)行時(shí)內(nèi)存管理方法,包括:
3、選擇應(yīng)用時(shí),調(diào)用當(dāng)前選擇應(yīng)用的入口函數(shù),建立所述當(dāng)前選擇應(yīng)用導(dǎo)入的所有模塊的模塊內(nèi)存鏈接;其中,所述模塊內(nèi)存鏈接為二進(jìn)制可執(zhí)行文件的程序運(yùn)行時(shí)訪問的全局?jǐn)?shù)據(jù)內(nèi)存或局部數(shù)據(jù)內(nèi)存的內(nèi)存空間分配、內(nèi)存地址定位以及內(nèi)存訪問控制的過程;
4、所述當(dāng)前選擇應(yīng)用代碼執(zhí)行時(shí),在虛擬機(jī)執(zhí)行目標(biāo)數(shù)據(jù)指令訪問內(nèi)存地址對(duì)應(yīng)的字節(jié)碼處理過程中,對(duì)字節(jié)碼包括的內(nèi)存地址進(jìn)行解析,得到訪問內(nèi)存所在目標(biāo)模塊的模塊信息和內(nèi)存類型;
5、根據(jù)所述目標(biāo)模塊的模塊信息和內(nèi)存類型以及所述模塊內(nèi)存鏈接,確定所述目標(biāo)模塊的實(shí)際內(nèi)存空間的起始地址;
6、根據(jù)所述目標(biāo)模塊的實(shí)際內(nèi)存空間的起始地址進(jìn)行地址空間訪問。
7、根據(jù)本發(fā)明的另一方面,提供了一種運(yùn)行時(shí)內(nèi)存管理裝置,包括:
8、模塊內(nèi)存鏈接建立模塊,用于選擇應(yīng)用時(shí),調(diào)用當(dāng)前選擇應(yīng)用的入口函數(shù),建立所述當(dāng)前選擇應(yīng)用導(dǎo)入的所有模塊的模塊內(nèi)存鏈接;其中,所述模塊內(nèi)存鏈接為二進(jìn)制可執(zhí)行文件的程序運(yùn)行時(shí)訪問的全局?jǐn)?shù)據(jù)內(nèi)存或局部數(shù)據(jù)內(nèi)存的內(nèi)存空間分配、內(nèi)存地址定位以及內(nèi)存訪問控制的過程;
9、第一內(nèi)存地址解析模塊,用于所述當(dāng)前選擇應(yīng)用代碼執(zhí)行時(shí),在虛擬機(jī)執(zhí)行目標(biāo)數(shù)據(jù)指令訪問內(nèi)存地址對(duì)應(yīng)的字節(jié)碼處理過程中,將字節(jié)碼包括的內(nèi)存地址解析為訪問內(nèi)存所在目標(biāo)模塊的模塊信息和內(nèi)存類型;
10、起始地址確定模塊,用于根據(jù)所述目標(biāo)模塊的模塊信息和內(nèi)存類型以及所述模塊內(nèi)存鏈接,確定所述目標(biāo)模塊的實(shí)際內(nèi)存空間的起始地址;
11、地址空間訪問模塊,用于根據(jù)所述目標(biāo)模塊的實(shí)際內(nèi)存空間的起始地址進(jìn)行地址空間訪問。
12、根據(jù)本發(fā)明的另一方面,提供了一種操作系統(tǒng),所述操作系統(tǒng)中執(zhí)行有運(yùn)行時(shí)環(huán)境,所述操作系統(tǒng)通過所述運(yùn)行時(shí)環(huán)境執(zhí)行本發(fā)明任一實(shí)施例所述的運(yùn)行時(shí)內(nèi)存管理方法。
13、根據(jù)本發(fā)明的另一方面,提供了一種虛擬機(jī),所述虛擬機(jī)運(yùn)行于操作系統(tǒng),所述操作系統(tǒng)中執(zhí)行有運(yùn)行時(shí)環(huán)境,所述操作系統(tǒng)通過所述運(yùn)行時(shí)環(huán)境執(zhí)行本發(fā)明任一實(shí)施例所述的運(yùn)行時(shí)內(nèi)存管理方法。
14、根據(jù)本發(fā)明的另一方面,提供了一種電子設(shè)備,所述電子設(shè)備上安裝有上述所述的操作系統(tǒng),所述電子設(shè)備包括:
15、至少一個(gè)處理器;以及
16、與所述至少一個(gè)處理器通信連接的存儲(chǔ)器;其中,
17、所述存儲(chǔ)器存儲(chǔ)有可被所述至少一個(gè)處理器執(zhí)行的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被所述至少一個(gè)處理器執(zhí)行,以使所述至少一個(gè)處理器能夠執(zhí)行本發(fā)明任一實(shí)施例所述的運(yùn)行時(shí)內(nèi)存管理方法。
18、根據(jù)本發(fā)明的另一方面,提供了一種終端,包括上述所述的電子設(shè)備。
19、根據(jù)本發(fā)明的另一方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)指令,所述計(jì)算機(jī)指令用于使處理器執(zhí)行時(shí)實(shí)現(xiàn)本發(fā)明任一實(shí)施例所述的運(yùn)行時(shí)內(nèi)存管理方法。
20、根據(jù)本發(fā)明的另一方面,還提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序在被處理器執(zhí)行時(shí)實(shí)現(xiàn)本發(fā)明任一實(shí)施例所述的運(yùn)行時(shí)內(nèi)存管理方法。
21、本發(fā)明實(shí)施例通過在選擇應(yīng)用時(shí),調(diào)用當(dāng)前選擇應(yīng)用的入口函數(shù),建立當(dāng)前選擇應(yīng)用導(dǎo)入的所有模塊的模塊內(nèi)存鏈接。當(dāng)前選擇應(yīng)用代碼執(zhí)行時(shí),在虛擬機(jī)執(zhí)行目標(biāo)內(nèi)存指令訪問內(nèi)存地址,對(duì)應(yīng)的字節(jié)碼處理過程中,對(duì)字節(jié)碼初步解析得到的內(nèi)存地址進(jìn)行解析,得到訪問內(nèi)存所在目標(biāo)模塊的模塊信息和內(nèi)存類型,從而根據(jù)目標(biāo)模塊的模塊信息和內(nèi)存類型以及模塊內(nèi)存鏈接信息,確定目標(biāo)模塊的實(shí)際內(nèi)存空間的起始地址,進(jìn)而根據(jù)目標(biāo)模塊的實(shí)際內(nèi)存空間的起始地址進(jìn)行地址空間訪問,解決現(xiàn)有多模塊或同模塊間的變量定位尋址問題,及,邏輯通道間以及模塊間變量數(shù)據(jù)的安全隔離問題,能夠確保邏輯通道間以及模塊間變量數(shù)據(jù)的安全隔離,同時(shí)提高內(nèi)存訪問效率。
22、應(yīng)當(dāng)理解,本部分所描述的內(nèi)容并非旨在標(biāo)識(shí)本發(fā)明的實(shí)施例的關(guān)鍵或重要特征,也不用于限制本發(fā)明的范圍。本發(fā)明的其它特征將通過以下的說明書而變得容易理解。
1.一種運(yùn)行時(shí)內(nèi)存管理方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述根據(jù)所述目標(biāo)模塊的模塊信息和內(nèi)存類型以及所述模塊內(nèi)存鏈接,確定所述目標(biāo)模塊的實(shí)際內(nèi)存空間的起始地址,包括:
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,還包括:
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述建立所述當(dāng)前選擇應(yīng)用導(dǎo)入的所有模塊的模塊內(nèi)存鏈接,包括:
6.一種運(yùn)行時(shí)內(nèi)存管理裝置,其特征在于,包括:
7.一種操作系統(tǒng),其特征在于,所述操作系統(tǒng)中執(zhí)行有運(yùn)行時(shí)環(huán)境,所述操作系統(tǒng)通過所述運(yùn)行時(shí)環(huán)境執(zhí)行權(quán)利要求1-5中任一項(xiàng)的運(yùn)行時(shí)內(nèi)存管理方法。
8.一種虛擬機(jī),其特征在于,所述虛擬機(jī)運(yùn)行于操作系統(tǒng)上,所述操作系統(tǒng)中執(zhí)行有運(yùn)行時(shí)環(huán)境,所述操作系統(tǒng)通過所述運(yùn)行時(shí)環(huán)境執(zhí)行權(quán)利要求1-5中任一項(xiàng)的運(yùn)行時(shí)內(nèi)存管理方法。
9.一種電子設(shè)備,其特征在于,所述電子設(shè)備上安裝有權(quán)利要求7所述的操作系統(tǒng),所述電子設(shè)備包括:
10.一種終端,其特征在于,包含如權(quán)利要求9所述的電子設(shè)備。