本發(fā)明涉及計(jì)算機(jī)仿真領(lǐng)域。更具體地說(shuō),本發(fā)明涉及一種跨平臺(tái)非侵入式仿真模型調(diào)度方法及其裝置。
背景技術(shù):
1、一般仿真系統(tǒng)均需要運(yùn)行調(diào)度各類仿真模型,通過(guò)周期推進(jìn)仿真模型解算來(lái)實(shí)現(xiàn)仿真功能。仿真模型的使用和維護(hù)是仿真系統(tǒng)部署實(shí)施的重要內(nèi)容。隨著業(yè)務(wù)需求的發(fā)展,越來(lái)越多的仿真系統(tǒng)需要兼容不同操作系統(tǒng)平臺(tái)的運(yùn)行模式,但是跨平臺(tái)的仿真模型集成增加了維護(hù)的工作量。且在現(xiàn)有仿真系統(tǒng)中,仿真模型的運(yùn)行一般采用動(dòng)態(tài)庫(kù)調(diào)用方式,不同操作系統(tǒng)平臺(tái)(windows或linux)上運(yùn)行的動(dòng)態(tài)庫(kù)是不相同的,如在windows中運(yùn)行的模型動(dòng)態(tài)庫(kù)是dll格式,需要重新編譯成linux中的so格式動(dòng)態(tài)庫(kù)才能集成到linux中使用,對(duì)于仿真模型的授權(quán)和版本升級(jí)帶來(lái)了諸多不便。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明提供一種跨平臺(tái)非侵入式仿真模型調(diào)度方法及其裝置,其能夠采用非侵入式模型封裝調(diào)度方法,無(wú)需重新編譯改變格式,直接在linux操作系統(tǒng)中調(diào)度dll格式的動(dòng)態(tài)庫(kù),且運(yùn)行功能和效率不受影響。
2、為了實(shí)現(xiàn)本發(fā)明的這些目的和其它優(yōu)點(diǎn),第一方面,本發(fā)明提供了一種跨平臺(tái)非侵入式仿真模型調(diào)度方法,在linux操作系統(tǒng)下調(diào)用dll格式的仿真模型動(dòng)態(tài)庫(kù)的步驟包括:
3、在加載仿真模型動(dòng)態(tài)庫(kù)時(shí),按照windows?pe?binary規(guī)范對(duì)仿真模型的dll二進(jìn)制文件進(jìn)行解析,獲取資源配置文件,其中,所述資源配置文件包括函數(shù)導(dǎo)入表和函數(shù)導(dǎo)出表,heap內(nèi)存映射關(guān)系表,線程相關(guān)資源表;
4、對(duì)獲取的函數(shù)導(dǎo)入表進(jìn)行解析,建立到內(nèi)部實(shí)現(xiàn)的windows相關(guān)函數(shù)映射;
5、對(duì)線程相關(guān)資源進(jìn)行初始化以實(shí)現(xiàn)線程創(chuàng)建的資源申請(qǐng);
6、修改linux操作系統(tǒng)平臺(tái)的寄存器內(nèi)容,根據(jù)windows函數(shù)規(guī)范,修改函數(shù)調(diào)用寄存器方式和壓棧方式;
7、創(chuàng)建或分配計(jì)算機(jī)的cpu內(nèi)核、內(nèi)存資源,初始化dll入口函數(shù);
8、通過(guò)dll接口實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出,完成對(duì)仿真模型動(dòng)態(tài)庫(kù)的調(diào)度。
9、優(yōu)選的是,所述的跨平臺(tái)非侵入式仿真模型調(diào)度方法,所述線程相關(guān)資源包括:程序計(jì)數(shù)器、寄存器集合和堆??臻g。
10、優(yōu)選的是,所述的跨平臺(tái)非侵入式仿真模型調(diào)度方法,所述修改linux操作系統(tǒng)平臺(tái)的寄存器內(nèi)容具體為:修改程序寄存器和棧指針的值,以及修改狀態(tài)寄存器的值,以實(shí)現(xiàn)調(diào)整仿真模型動(dòng)態(tài)庫(kù)函數(shù)的運(yùn)行狀態(tài)。
11、優(yōu)選的是,所述的跨平臺(tái)非侵入式仿真模型調(diào)度方法,所述函數(shù)調(diào)用寄存器方式包括:段位、標(biāo)志位、指令指針和尋址;所述壓棧方式包括:參數(shù)傳遞、返回地址、分配棧幀和保存寄存器狀態(tài)。
12、優(yōu)選的是,所述的跨平臺(tái)非侵入式仿真模型調(diào)度方法,所述初始化dll入口函數(shù)具體包括:初始化變量宏,修改調(diào)用前內(nèi)存,映射調(diào)用函數(shù)。
13、第二方面,本發(fā)明還提供了一種跨平臺(tái)非侵入式仿真模型調(diào)度裝置,應(yīng)用于所述的跨平臺(tái)非侵入式仿真模型調(diào)度方法,包括:
14、分析器模塊,其用于按照windows?pe?binary規(guī)范對(duì)仿真模型的dll二進(jìn)制文件進(jìn)行解析,獲取資源配置文件;
15、解析器模塊,其用于對(duì)獲取的函數(shù)導(dǎo)入表進(jìn)行解析,建立到內(nèi)部實(shí)現(xiàn)的windows相關(guān)函數(shù)映射;
16、前處理模塊,其用于對(duì)線程相關(guān)資源進(jìn)行初始化以實(shí)現(xiàn)線程創(chuàng)建的資源申請(qǐng);修改linux操作系統(tǒng)平臺(tái)的寄存器內(nèi)容,并根據(jù)windows函數(shù)規(guī)范,修改函數(shù)調(diào)用寄存器方式和壓棧方式;創(chuàng)建或分配計(jì)算機(jī)的cpu內(nèi)核、內(nèi)存資源,初始化dll入口函數(shù);
17、調(diào)用模塊,其通過(guò)dll接口實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出,完成對(duì)仿真模型動(dòng)態(tài)庫(kù)的調(diào)度。
18、第三方面,本發(fā)明還提供了一種電子設(shè)備,包括:一個(gè)或多個(gè)處理器;以及與所述至少一個(gè)處理器通信連接的存儲(chǔ)器,其中,所述存儲(chǔ)器存儲(chǔ)有可被所述至少一個(gè)處理器執(zhí)行的指令,所述指令被所述至少一個(gè)處理器執(zhí)行,以使所述至少一個(gè)處理器執(zhí)行所述跨平臺(tái)非侵入式仿真模型調(diào)度方法。
19、第四方面,本發(fā)明還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,該程序被處理器執(zhí)行時(shí),實(shí)現(xiàn)所述的所述跨平臺(tái)非侵入式仿真模型調(diào)度方法。
20、本發(fā)明至少包括以下有益效果:本發(fā)明在linux操作系統(tǒng)下調(diào)用dll格式的仿真模型動(dòng)態(tài)庫(kù)時(shí),在加載仿真模型動(dòng)態(tài)庫(kù)過(guò)程中,分析器模塊先按照windows?pe?binary規(guī)范對(duì)仿真模型的dll二進(jìn)制文件進(jìn)行解析,獲取資源配置文件,然后解析器模塊對(duì)獲取的函數(shù)導(dǎo)入表進(jìn)行解析,建立到內(nèi)部實(shí)現(xiàn)的windows相關(guān)函數(shù)映射;然后前處理模塊再對(duì)線程相關(guān)資源進(jìn)行初始化以實(shí)現(xiàn)線程創(chuàng)建的資源申請(qǐng);修改linux操作系統(tǒng)平臺(tái)的寄存器內(nèi)容,根據(jù)windows函數(shù)規(guī)范,修改函數(shù)調(diào)用寄存器方式和壓棧方式;創(chuàng)建或分配計(jì)算機(jī)的cpu內(nèi)核、內(nèi)存資源,初始化dll入口函數(shù);最后調(diào)用模塊通過(guò)dll接口實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出,完成對(duì)仿真模型動(dòng)態(tài)庫(kù)的調(diào)度。因此,本發(fā)明在加載仿真模型dll格式的動(dòng)態(tài)庫(kù)時(shí),未采用接口或類引用方法集成,降低了編譯期依賴;調(diào)度dll運(yùn)行時(shí),軟件程序不控制dll進(jìn)程,只通過(guò)訪問(wèn)其內(nèi)存和寄存器信息實(shí)現(xiàn)數(shù)據(jù)的交互,實(shí)現(xiàn)了對(duì)dll的非侵入性調(diào)度。經(jīng)實(shí)際測(cè)試,在linux操作系統(tǒng)中調(diào)度運(yùn)行dll格式的仿真模型動(dòng)態(tài)庫(kù),執(zhí)行效率等價(jià)或略優(yōu)于windows中dll的運(yùn)行情況(3%左右)。綜上,本發(fā)明針對(duì)跨平臺(tái)的仿真模型運(yùn)行和維護(hù)問(wèn)題,通過(guò)類似裝載器的手段,在不影響模型運(yùn)行穩(wěn)定性的前提下,采用非侵入式模型封裝調(diào)度方法,實(shí)現(xiàn)了同一個(gè)仿真模型dll格式的動(dòng)態(tài)庫(kù),能夠在不同操作系統(tǒng)平臺(tái)中運(yùn)行調(diào)度。
21、本發(fā)明的其它優(yōu)點(diǎn)、目標(biāo)和特征將部分通過(guò)下面的說(shuō)明體現(xiàn),部分還將通過(guò)對(duì)本發(fā)明的研究和實(shí)踐而為本領(lǐng)域的技術(shù)人員所理解。
1.跨平臺(tái)非侵入式仿真模型調(diào)度方法,其特征在于,在linux操作系統(tǒng)下調(diào)用dll格式的仿真模型動(dòng)態(tài)庫(kù)的步驟包括:
2.如權(quán)利要求1所述的跨平臺(tái)非侵入式仿真模型調(diào)度方法,其特征在于,所述線程相關(guān)資源包括:程序計(jì)數(shù)器、寄存器集合和堆??臻g。
3.如權(quán)利要求1所述的跨平臺(tái)非侵入式仿真模型調(diào)度方法,其特征在于,所述修改linux操作系統(tǒng)平臺(tái)的寄存器內(nèi)容具體為:修改程序寄存器和棧指針的值,以及修改狀態(tài)寄存器的值,以實(shí)現(xiàn)調(diào)整仿真模型動(dòng)態(tài)庫(kù)函數(shù)的運(yùn)行狀態(tài)。
4.如權(quán)利要求1所述的跨平臺(tái)非侵入式仿真模型調(diào)度方法,其特征在于,所述函數(shù)調(diào)用寄存器方式包括:段位、標(biāo)志位、指令指針和尋址;所述壓棧方式包括:參數(shù)傳遞、返回地址、分配棧幀和保存寄存器狀態(tài)。
5.如權(quán)利要求1所述的跨平臺(tái)非侵入式仿真模型調(diào)度方法,其特征在于,所述初始化dll入口函數(shù)具體包括:初始化變量宏,修改調(diào)用前內(nèi)存,映射調(diào)用函數(shù)。
6.跨平臺(tái)非侵入式仿真模型調(diào)度裝置,應(yīng)用于權(quán)利要求1~5任一所述的跨平臺(tái)非侵入式仿真模型調(diào)度方法,其特征在于,包括:
7.電子設(shè)備,其特征在于,包括:一個(gè)或多個(gè)處理器;以及與所述至少一個(gè)處理器通信連接的存儲(chǔ)器,其中,所述存儲(chǔ)器存儲(chǔ)有可被所述至少一個(gè)處理器執(zhí)行的指令,所述指令被所述至少一個(gè)處理器執(zhí)行,以使所述至少一個(gè)處理器執(zhí)行權(quán)利要求1~5任一項(xiàng)所述跨平臺(tái)非侵入式仿真模型調(diào)度方法。
8.計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,該程序被處理器執(zhí)行時(shí),實(shí)現(xiàn)權(quán)利要求1~5任一項(xiàng)所述的跨平臺(tái)非侵入式仿真模型調(diào)度方法。