專利名稱:底層消息接口模擬方法及模擬裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)模擬與仿真技術(shù)領(lǐng)域,特別涉及一種底層消息接口模擬方法及模擬裝置。
背景技術(shù):
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)建模是以模擬的方法實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)。通過對計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)建模,研究者能夠用可配置的結(jié)構(gòu)形式來考察目標(biāo)機(jī)軟件在被模擬的系統(tǒng)結(jié)構(gòu)上執(zhí)行時(shí)的行為與特征,使得在真實(shí)計(jì)算機(jī)系統(tǒng)平臺能夠使用以前,盡早發(fā)現(xiàn)該計(jì)算機(jī)結(jié)構(gòu)的設(shè)計(jì)問題,實(shí)施該平臺的軟件開發(fā)與調(diào)試。其中,全結(jié)構(gòu)狀態(tài)模擬和消息模擬是計(jì)算機(jī)結(jié)構(gòu)建模的兩個重要方面。全結(jié)構(gòu)包括用戶態(tài)結(jié)構(gòu)和系統(tǒng)態(tài)結(jié)構(gòu)。系統(tǒng)態(tài)結(jié)構(gòu)包括計(jì)算機(jī)的特權(quán)結(jié)構(gòu)、主存管理單元(MMU,Memory Management Unit)、異常與中斷處理和外部設(shè)備。全結(jié)構(gòu)狀態(tài)模擬支持操作系統(tǒng)(OS,Operating System)的引導(dǎo),能夠模擬考察OS的結(jié)構(gòu)行為,支持OS的模擬調(diào)試,但當(dāng)模擬運(yùn)行用戶程序時(shí),用戶虛地址空間是由被模擬的運(yùn)行時(shí)OS代碼動態(tài)代換為物理地址空間的,不能夠被模擬軟件直接訪問;消息模擬實(shí)現(xiàn)用戶程序節(jié)點(diǎn)間消息通信功能的模擬,能夠模擬多節(jié)點(diǎn)并行計(jì)算機(jī)結(jié)構(gòu)的行為,支持并行軟件的模擬調(diào)試。傳統(tǒng)的模擬技術(shù)包括節(jié)點(diǎn)級模擬、用戶態(tài)模擬和全指令模擬等技術(shù)。節(jié)點(diǎn)級模擬不模型化多節(jié)點(diǎn)并行結(jié)構(gòu),不支持含有消息通信的并行程序模擬;而用戶態(tài)模擬不模型化系統(tǒng)態(tài)結(jié)構(gòu)的行為, 不支持OS結(jié)構(gòu)的模擬。全指令模擬是指模擬應(yīng)用程序代碼中能夠見到的所有指令,特別是既模擬底層消息接口調(diào)用指令,也模擬底層消息子過程實(shí)現(xiàn)的所有指令,消息空間的訪問由被模擬的OS和消息子過程指令來完成。全指令模擬方法需要模擬與消息內(nèi)部實(shí)現(xiàn)有關(guān)的所有結(jié)構(gòu),模擬軟件復(fù)雜,模擬速度慢,這降低了底層消息接口以上各層軟件模擬開發(fā)與調(diào)試的有效性,難以區(qū)分上層軟件和底層消息軟件的模擬行為。由此可見,這些方法都有模擬功能上的不足或者存在模擬軟件復(fù)雜、模擬速度慢的缺陷,不能解決全結(jié)構(gòu)并行計(jì)算機(jī)消息的快速模擬問題。相關(guān)技術(shù)還可參考申請?zhí)枮?8808090. 7的中國專利申請,該專利申請公開了一種指令仿真系統(tǒng)以及一種用宿主處理器來模擬目標(biāo)處理器的方法。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種全結(jié)構(gòu)并行計(jì)算機(jī)狀態(tài)下底層消息接口的模擬方法及模擬裝置,通過全結(jié)構(gòu)虛擬目標(biāo)機(jī)模式下消息接口的識別和消息參數(shù)虛地址的直接代換,直接模擬消息接口的功能,簡化了模擬方式,并提高了消息模擬的效率。為解決上述問題,本發(fā)明提供了一種底層消息接口模擬方法,包括模擬執(zhí)行目標(biāo)機(jī)的操作系統(tǒng);監(jiān)測所述目標(biāo)機(jī)的操作系統(tǒng)代碼中的進(jìn)程切換,并于監(jiān)測到所述進(jìn)程切換后觸發(fā)注釋機(jī)制,生成底層消息子過程索引表;
對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用指令時(shí)執(zhí)行該消息接口的模擬處理,獲取消息參數(shù)虛地址;將所述消息參數(shù)虛地址轉(zhuǎn)換為消息參數(shù)物理地址;調(diào)用所述底層消息子過程索引表執(zhí)行消息功能模擬,根據(jù)所述消息參數(shù)物理地址實(shí)現(xiàn)消息的傳遞??蛇x的,所述注釋機(jī)制包括從所述目標(biāo)機(jī)的操作系統(tǒng)的核心內(nèi)存中讀取將要切換進(jìn)程的進(jìn)程號和進(jìn)程名稱,并于識別出將要切換的進(jìn)程為應(yīng)用進(jìn)程后從其代碼中讀取符號表信息,從中抽取出底層消息子過程名稱和地址,生成底層消息子過程索引表??蛇x的,所述底層消息子過程索引表包括底層消息子過程的名稱、地址以及消息功能模擬調(diào)用入口。可選的,所述調(diào)用所述底層消息子過程索引表執(zhí)行消息功能模擬包括調(diào)用所述底層消息子過程索引表中的所述消息功能模擬調(diào)用入口,啟動消息功能模擬。可選的,所述對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用指令時(shí)執(zhí)行該消息接口的模擬處理,獲取消息參數(shù)虛地址包括對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別為所述指令為轉(zhuǎn)移跳轉(zhuǎn)指令時(shí)取出其轉(zhuǎn)移目標(biāo)地址,將所述轉(zhuǎn)移目標(biāo)地址與所述底層消息子過程索引表中的底層消息子過程的地址進(jìn)行匹配,若匹配成功則識別出所述指令為底層消息子過程調(diào)用指令,執(zhí)行該消息接口的模擬處理,獲取消息參數(shù)虛地址??蛇x的,所述識別出將要切換的進(jìn)程為應(yīng)用進(jìn)程包括調(diào)用進(jìn)程名稱切換處理函數(shù),由其對將要切換的進(jìn)程的進(jìn)程名稱進(jìn)行識別,若將要切換的進(jìn)程不屬于系統(tǒng)進(jìn)程,則將要切換的進(jìn)程為應(yīng)用進(jìn)程。可選的,所述將所述消息參數(shù)虛地址轉(zhuǎn)換為消息參數(shù)物理地址是通過訪問所述目標(biāo)機(jī)的操作系統(tǒng)的多級頁表完成的??蛇x的,所述消息參數(shù)虛地址包括消息參數(shù)中源方和目的方的虛地址。可選的,所述底層消息接口模擬方法基于全結(jié)構(gòu)并行計(jì)算機(jī)狀態(tài)。為解決上述問題,本發(fā)明還提供了一種底層消息接口模擬裝置,包括指令流模擬控制模塊、應(yīng)用代碼底層消息識別模塊、消息接口模擬處理模塊、消息參數(shù)物理地址代換模塊,所述指令流模擬控制模塊用于控制模擬執(zhí)行目標(biāo)機(jī)代碼中的每一條指令,包括調(diào)用所述應(yīng)用代碼底層消息識別模塊并獲取其反饋結(jié)果;所述應(yīng)用代碼底層消息識別模塊用于接受所述指令流模擬控制模塊的調(diào)用,監(jiān)測所述目標(biāo)機(jī)的操作系統(tǒng)代碼中的進(jìn)程切換,并于監(jiān)測到所述進(jìn)程切換后觸發(fā)注釋機(jī)制,生成底層消息子過程索引表;還用于接受所述指令流模擬控制模塊的調(diào)用,對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用指令時(shí)調(diào)用所述消息接口模擬處理模塊使其執(zhí)行該消息接口的模擬處理;所述消息接口模擬處理模塊用于接受所述應(yīng)用代碼底層消息識別模塊的調(diào)用,獲取消息參數(shù)虛地址,調(diào)用所述消息參數(shù)物理地址代換模塊,同時(shí)將所述消息參數(shù)虛地址傳送給所述消息參數(shù)物理地址代換模塊進(jìn)行消息參數(shù)虛地址到消息參數(shù)物理地址的轉(zhuǎn)換;還用于調(diào)用所述底層消息子過程索引表執(zhí)行消息功能模擬,根據(jù)所述消息參數(shù)物理地址代換模塊返回的所述消息參數(shù)物理地址實(shí)現(xiàn)消息的傳遞。所述消息參數(shù)物理地址代換模塊用于接受所述消息接口模擬處理模塊的調(diào)用,將所述消息參數(shù)虛地址轉(zhuǎn)換為消息參數(shù)物理地址,并將所述消息參數(shù)物理地址返回給所述消息接口模擬處理模塊??蛇x的,所述應(yīng)用代碼底層消息識別模塊包括應(yīng)用代碼載入識別單元和底層消息子過程調(diào)用識別單元,所述應(yīng)用代碼載入識別單元用于監(jiān)測目標(biāo)機(jī)的操作系統(tǒng)代碼中的進(jìn)程切換,并于監(jiān)測到所述進(jìn)程切換后觸發(fā)注釋機(jī)制,生成底層消息子過程索引表;所述底層消息子過程調(diào)用識別單元用于對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用時(shí)調(diào)用所述消息接口模擬處理模塊使其執(zhí)行該消息接口的模擬處理??蛇x的,所述注釋機(jī)制包括所述應(yīng)用代碼載入識別單元從所述目標(biāo)機(jī)的操作系統(tǒng)的核心內(nèi)存中讀取將要切換進(jìn)程的進(jìn)程號和進(jìn)程名稱,并于識別出將要切換的進(jìn)程為應(yīng)用進(jìn)程后從其代碼中讀取符號表信息,從中抽取出底層消息子過程名稱和地址,生成底層消息子過程索引表??蛇x的,所述底層消息子過程索引表包括底層消息子過程的名稱、地址以及消息功能模擬調(diào)用入口??蛇x的,所述消息接口模擬處理模塊調(diào)用所述底層消息子過程索引表執(zhí)行消息功能模擬包括調(diào)用所述底層消息子過程索引表中的所述消息功能模擬調(diào)用入口,啟動消息功能模擬。可選的,所述底層消息子過程調(diào)用識別單元對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用指令時(shí)調(diào)用所述消息接口模擬處理模塊使其執(zhí)行該消息接口的模擬處理,包括對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出所述指令為轉(zhuǎn)移跳轉(zhuǎn)指令時(shí)取出其轉(zhuǎn)移目標(biāo)地址,將所述轉(zhuǎn)移目標(biāo)地址與所述底層消息子過程索引表中的底層消息子過程的地址進(jìn)行匹配,若匹配成功則識別出所述指令為底層消息子過程調(diào)用指令,調(diào)用所述消息接口模擬處理模塊使其執(zhí)行該消息接口的模擬處理??蛇x的,所述底層消息子過程調(diào)用識別單元識別出將要切換的進(jìn)程為應(yīng)用進(jìn)程包括調(diào)用進(jìn)程名稱切換處理函數(shù),由其對將要切換的進(jìn)程的進(jìn)程名稱進(jìn)行識別,若將要切換的進(jìn)程不屬于系統(tǒng)進(jìn)程,則將要切換的進(jìn)程為應(yīng)用進(jìn)程??蛇x的,所述消息參數(shù)物理地址代換模塊將所述消息參數(shù)虛地址轉(zhuǎn)換為消息參數(shù)物理地址是通過訪問所述目標(biāo)機(jī)的操作系統(tǒng)的多級頁表完成的??蛇x的,所述消息參數(shù)虛地址包括消息參數(shù)中源方和目的方的虛地址。可選的,所述底層消息接口模擬裝置基于全結(jié)構(gòu)并行計(jì)算機(jī)狀態(tài)。另外,本發(fā)明還提供了一種模擬器,包括上述發(fā)明內(nèi)容任一項(xiàng)所述的底層消息接口模擬裝置。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)不需要進(jìn)行全指令模擬,跳過了消息接口實(shí)現(xiàn)中操作系統(tǒng)行為的模擬;而是在指令流模擬控制模塊的控制下調(diào)用應(yīng)用代碼底層消息識別模塊識別出底層消息子過程調(diào)用指令,由所述應(yīng)用代碼底層消息識別模塊調(diào)用所述消息接口模擬處理模塊使其執(zhí)行該消息接口的模擬處理,獲取消息參數(shù)虛地址并由所述消息接口模擬處理模塊調(diào)用消息參數(shù)物理地址代換模塊,對消息接口參數(shù)中的消息參數(shù)虛地址通過直接訪問目標(biāo)機(jī)的操作系統(tǒng)多級頁表的方法代換成消息功能模擬直接訪問的物理地址。因此,上述技術(shù)方案避免了對消息子過程實(shí)現(xiàn)指令的模擬,不需要引入消息通信指令及相應(yīng)硬件結(jié)構(gòu)的模擬,同時(shí)又基于全結(jié)構(gòu)并行計(jì)算機(jī)狀態(tài)支持了多節(jié)點(diǎn)消息功能的模擬,其模擬方式更為簡單,因而更容易實(shí)施,并且提高了并行應(yīng)用程序的模擬效率。
圖1是本發(fā)明提供的底層消息接口模擬方法流程示意圖;圖2是本發(fā)明提供的底層消息接口模擬裝置的結(jié)構(gòu)示意圖;圖3是本發(fā)明提供的底層消息接口模擬裝置的實(shí)施方式示意圖;圖4是消息參數(shù)虛地址示意圖;圖5是用于消息參數(shù)物理地址代換的多級頁表格式示意圖。
具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更為明顯易懂,下面結(jié)合附圖對本發(fā)明的具體實(shí)施方式
做詳細(xì)的說明。在以下描述中闡述了具體細(xì)節(jié)以便于充分理解本發(fā)明。但是本發(fā)明能夠以多種不同于在此描述的其它方式來實(shí)施,本領(lǐng)域技術(shù)人員可以在不違背本發(fā)明內(nèi)涵的情況下做類似推廣。因此本發(fā)明不受下面公開的具體實(shí)施方式
的限制。圖1是本發(fā)明提供的底層消息接口模擬方法流程示意圖。為解決現(xiàn)有技術(shù)中模擬功能上的不足或者存在模擬軟件復(fù)雜、模擬速度慢的缺陷,不能解決全結(jié)構(gòu)并行計(jì)算機(jī)消息的快速模擬問題,本發(fā)明提供的底層消息接口模擬方法如圖1所示,包括步驟S101,模擬執(zhí)行目標(biāo)機(jī)的操作系統(tǒng);步驟S102,監(jiān)測所述目標(biāo)機(jī)的操作系統(tǒng)代碼中的進(jìn)程切換,并于監(jiān)測到所述進(jìn)程切換后觸發(fā)注釋機(jī)制,生成底層消息子過程索引表;步驟S103,對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用指令時(shí)執(zhí)行該消息接口的模擬處理,獲取消息參數(shù)虛地址;步驟S104,將所述消息參數(shù)虛地址轉(zhuǎn)換為消息參數(shù)物理地址;步驟S105,調(diào)用所述底層消息子過程索引表執(zhí)行消息功能模擬,根據(jù)所述消息參數(shù)物理地址實(shí)現(xiàn)消息的傳遞。對應(yīng)于上述底層消息接口模擬方法,可由本發(fā)明提供的的底層消息接口模擬裝置實(shí)現(xiàn)。圖2是本發(fā)明提供的底層消息接口模擬裝置的結(jié)構(gòu)示意圖,如圖2所示,所述底層消息接口模擬裝置包括指令流模擬控制模塊101、應(yīng)用代碼底層消息識別模塊102、消息接口模擬處理模塊103、消息參數(shù)物理地址代換模塊104。所述指令流模擬控制模塊101用于控制模擬執(zhí)行目標(biāo)機(jī)代碼中的每一條指令,包括調(diào)用所述應(yīng)用代碼底層消息識別模塊102并獲取其反饋結(jié)果。所述應(yīng)用代碼底層消息識別模塊102用于接受所述指令流模擬控制模塊101的調(diào)用,監(jiān)測所述目標(biāo)機(jī)的操作系統(tǒng)代碼中的進(jìn)程切換,并于監(jiān)測到所述進(jìn)程切換后觸發(fā)注釋機(jī)制,生成底層消息子過程索引表;還用于接受所述指令流模擬控制模塊101的調(diào)用,對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用指令時(shí)調(diào)用所述消息接口模擬處理模塊103使其執(zhí)行該消息接口的模擬處理。所述應(yīng)用代碼底層消息識別模塊102包括應(yīng)用代碼載入識別單元10 和底層消息子過程調(diào)用識別單元102b,所述應(yīng)用代碼載入識別單元10 用于監(jiān)測目標(biāo)機(jī)的操作系統(tǒng)代碼中進(jìn)程切換,并于監(jiān)測到所述進(jìn)程切換后觸發(fā)注釋機(jī)制,生成底層消息子過程索引表;所述底層消息子過程調(diào)用識別單元102b用于對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用時(shí)調(diào)用所述消息接口模擬處理模塊103使其執(zhí)行該消息接口的模擬處理。所述消息接口模擬處理模塊103用于接受所述應(yīng)用代碼底層消息識別模塊102的調(diào)用,獲取消息參數(shù)虛地址,調(diào)用所述消息參數(shù)物理地址代換模塊104,同時(shí)將所述消息參數(shù)虛地址傳送給所述消息參數(shù)物理地址代換模塊104進(jìn)行消息參數(shù)虛地址到消息參數(shù)物理地址的轉(zhuǎn)換;還用于調(diào)用所述底層消息子過程索引表執(zhí)行消息功能模擬,根據(jù)所述消息參數(shù)物理地址代換模塊104返回的所述消息參數(shù)物理地址實(shí)現(xiàn)消息的傳遞。所述消息參數(shù)物理地址代換模塊104用于接受所述消息接口模擬處理模塊103的調(diào)用,將所述消息參數(shù)虛地址轉(zhuǎn)換為消息參數(shù)物理地址,并將所述消息參數(shù)物理地址返回給所述消息接口模擬處理模塊103。下面結(jié)合附圖對所述底層消息接口模擬裝置的實(shí)施方式進(jìn)行詳細(xì)說明。圖3是本發(fā)明提供的底層消息接口模擬裝置的實(shí)施方式示意圖。參閱圖3,與圖2所示底層消息接口模擬裝置一致,包括指令流模擬控制模塊101、應(yīng)用代碼底層消息識別模塊102、消息接口模擬處理模塊103、消息參數(shù)物理地址代換模塊104,應(yīng)用代碼底層消息識別模塊102包括應(yīng)用代碼載入識別單元10 和底層消息子過程調(diào)用識別單元102b。所述底層消息接口模擬裝置可基于全結(jié)構(gòu)并行計(jì)算機(jī)狀態(tài),因此支持了多節(jié)點(diǎn)消息功能模擬。在啟動包含所述底層消息接口模擬裝置的模擬器之前,還需要進(jìn)行些啟動前準(zhǔn)備,例如將被模擬應(yīng)用程序目標(biāo)代碼加載到虛擬盤中,之后啟動模擬器,模擬引導(dǎo)目標(biāo)機(jī)的操作系統(tǒng),進(jìn)入操作系統(tǒng)交互界面,等待用戶命令。所述目標(biāo)機(jī)為被模擬的計(jì)算機(jī),目標(biāo)機(jī)的操作系統(tǒng)即為被模擬計(jì)算機(jī)的操作系統(tǒng),可以為LinUX、UniX等操作系統(tǒng)。指令流模擬控制模塊101在模擬過程中是總的控制核心,用于控制模擬執(zhí)行目標(biāo)機(jī)代碼中的每一條指令,包括調(diào)用所述應(yīng)用代碼底層消息識別模塊102并獲取其反饋結(jié)果。所述目標(biāo)機(jī)代碼包括操作系統(tǒng)代碼和應(yīng)用程序代碼,而模擬則是由目標(biāo)機(jī)代碼的執(zhí)行所驅(qū)動的,指令流模擬控制即控制模擬執(zhí)行目標(biāo)機(jī)代碼中的每一條指令,是按目標(biāo)機(jī)代碼中的指令流控制整個模擬過程的驅(qū)動器。指令流模擬控制模塊101調(diào)用所述應(yīng)用代碼底層消息識別模塊102中的應(yīng)用代碼載入識別單元10 對目標(biāo)機(jī)的操作系統(tǒng)加載目標(biāo)機(jī)應(yīng)用程序代碼的過程進(jìn)行識別,具體地,由所述應(yīng)用代碼載入識別單元10 監(jiān)測目標(biāo)機(jī)的操作系統(tǒng)代碼中進(jìn)程切換,參閱圖3,當(dāng)目標(biāo)機(jī)的操作系統(tǒng)代碼109加載目標(biāo)機(jī)應(yīng)用代碼110 時(shí),會執(zhí)行到特定的函數(shù),例如執(zhí)行到flush_thread函數(shù),則表明要進(jìn)行進(jìn)程的切換,即所述應(yīng)用代碼載入識別單元10 監(jiān)測到進(jìn)程的切換,此時(shí)便觸發(fā)注釋機(jī)制。所述注釋機(jī)制包括所述應(yīng)用代碼載入識別單元10 從所述目標(biāo)機(jī)的操作系統(tǒng)的核心內(nèi)存中讀取將要切換進(jìn)程的進(jìn)程號和進(jìn)程名稱,并于識別出將要切換的進(jìn)程為應(yīng)用進(jìn)程后從其代碼中讀取符號表信息,從中抽取出底層消息子過程名稱和地址,生成底層消息子過程索引表。注釋是一個在模擬執(zhí)行過程中不改變目標(biāo)機(jī)指令流模擬處理流程而運(yùn)行任意處理腳本的機(jī)制,它包括事件(觸發(fā)條件)和動作兩個部分。注釋可以被目標(biāo)機(jī)硬件事件或用戶自定義事件所觸發(fā),這些事件,例如新進(jìn)程創(chuàng)建、進(jìn)入空轉(zhuǎn)或執(zhí)行到一個應(yīng)用程序中特定的過程等這樣一些事件。例如annotation set pc kernelfush_thread START{<該事件發(fā)生后的一系列處理動作>}是一個注釋,表示在進(jìn)入“flush_thread”過程的入口處,觸發(fā)識別應(yīng)用程序加載、 讀取符號表信息、建立底層消息子過程索引表等信息的動作。參閱圖3,對所述注釋機(jī)制的過程具體說明當(dāng)觸發(fā)注釋機(jī)制后,所述應(yīng)用代碼載入識別單元10 從目標(biāo)機(jī)的操作系統(tǒng)的核心內(nèi)存中讀取將要切換的進(jìn)程的進(jìn)程號和進(jìn)程名稱,對進(jìn)程名稱進(jìn)行識別,識別將要切換的進(jìn)程是否為應(yīng)用進(jìn)程。所述底層消息子過程調(diào)用識別單元10 識別出將要切換的進(jìn)程為應(yīng)用進(jìn)程是通過調(diào)用進(jìn)程名稱切換處理函數(shù),例如pro^changename函數(shù)(該函數(shù)可以C語言實(shí)現(xiàn)),由其對將要切換的進(jìn)程的進(jìn)程名稱進(jìn)行識別,若將要切換的進(jìn)程不屬于系統(tǒng)進(jìn)禾呈,例如 swapper、Iinuxrc> events、aio、pdflush、migration、ksoftirqd、kswapd、 bdoor, liblockd等系統(tǒng)進(jìn)程,則將要切換的進(jìn)程為應(yīng)用進(jìn)程。當(dāng)然,在實(shí)際實(shí)施時(shí),還會判斷將要切換的進(jìn)程的進(jìn)程名稱是否為當(dāng)前進(jìn)程名稱,如果與當(dāng)前進(jìn)程名稱相同則說明這并非是一次進(jìn)程間的切換。在識別出將要切換的進(jìn)程為應(yīng)用進(jìn)程后從其代碼中讀取符號表信息105,從中抽取出底層消息子過程名稱和地址,生成底層消息子過程索引表106。在模擬環(huán)境中,會靜態(tài)建立包含所有底層消息子過程名稱和相應(yīng)消息功能模擬調(diào)用入口的底層消息子過程信息表,模擬過程中待從符號表信息105中抽取出子過程名稱和地址后,將該子過程名稱與所述底層消息子過程信息表中的所有底層消息子過程名稱逐一進(jìn)行比較,如果名稱相同,則將該子過程名稱和地址連同底層消息子過程信息表中的相應(yīng)消息功能模擬調(diào)用入口作為一個底層消息子過程條目填入所述底層消息子過程索引表106。所述底層消息子過程索引表106中包括底層消息子過程的名稱106a、底層消息子過程的地址106b以及消息功能模擬調(diào)用入口 106c。在生成所述底層消息子過程索引表106后,所述底層消息子過程調(diào)用識別單元10 會將反饋結(jié)果傳送給所述指令流模擬控制模塊101,由其控制繼續(xù)目標(biāo)機(jī)指令流的模擬執(zhí)行。所述指令流模擬控制模塊101在對目標(biāo)機(jī)指令流模擬控制過程中還調(diào)用底層消息子過程調(diào)用識別單元102b,所述底層消息子過程調(diào)用識別單元102b接受所述指令流模擬控制模塊101的調(diào)用后,對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用指令時(shí)調(diào)用所述消息接口模擬處理模塊103使其執(zhí)行該消息接口的模擬處理。具體地,所述底層消息子過程調(diào)用識別單元102b對目標(biāo)機(jī)指令流中的每一條進(jìn)行識別處理,并于識別出所述指令為轉(zhuǎn)移跳轉(zhuǎn)指令時(shí)取出其轉(zhuǎn)移目標(biāo)地址,將所述轉(zhuǎn)移目標(biāo)地址與所述底層消息子過程索引表106中的底層消息子過程的地址106b進(jìn)行匹配,若匹配成功則表明該轉(zhuǎn)移跳轉(zhuǎn)指令為底層消息子過程調(diào)用指令,即識別出所述指令為底層消息子過程調(diào)用指令,則調(diào)用所述消息接口模擬處理模塊103使其執(zhí)行該消息接口的模擬處理。所述消息接口模擬處理模塊103接受所述底層消息子過程調(diào)用識別單元102b的調(diào)用后,從所述目標(biāo)機(jī)的處理器(即被模擬的CPU)的參數(shù)寄存器中獲取消息參數(shù)虛地址,調(diào)用所述消息參數(shù)物理地址代換模塊104,同時(shí)將所述消息參數(shù)虛地址傳送給所述消息參數(shù)物理地址代換模塊104進(jìn)行消息參數(shù)虛地址到消息參數(shù)物理地址的轉(zhuǎn)換。所述消息參數(shù)虛地址包括消息參數(shù)中源方和目的方的虛地址。具體地,所述消息參數(shù)物理地址代換模塊 104將所述消息參數(shù)虛地址轉(zhuǎn)換為消息參數(shù)物理地址是通過訪問所述目標(biāo)機(jī)的操作系統(tǒng)的多級頁表107完成的。實(shí)際實(shí)施中,由于所述多級頁表107的結(jié)構(gòu)取決于目標(biāo)機(jī)的操作系統(tǒng),不同的操作系統(tǒng)則多級頁表107的結(jié)構(gòu)也可能不同,下面舉例對通過訪問所述目標(biāo)機(jī)的操作系統(tǒng)的多級頁表107完成所述消息參數(shù)虛地址轉(zhuǎn)換為消息參數(shù)物理地址的過程進(jìn)行說明。圖4是消息參數(shù)虛地址示意圖,圖4所示的消息參數(shù)虛地址為64位,其中包括消息參數(shù)中源方和目的方的虛地址,將該地址劃分為五個部分,分別為5位(43 47)的L0、 10 位(33 42)的 Ll、10 位(23 32)的 L2、10 位(13 22)的 L3 禾Π 13 位(0 12)的頁內(nèi)偏移Offset。圖5是用于消息參數(shù)物理地址代換的多級頁表格式示意圖,參閱圖5,消息參數(shù)虛地址轉(zhuǎn)換為消息參數(shù)物理地址的具體步驟是1)取模擬器設(shè)置的起始物理地址,以下步驟所述的物理地址均是相對于該起始物理地址的相對地址;2)將包含消息參數(shù)中源方、目的方的虛地址的64位消息參數(shù)虛地址如圖4所示劃分為五個部分,得到L0、L1、L2、L3和Offset ;3)由目標(biāo)機(jī)的處理器號(CPU號)計(jì)算頁表基址寄存器(PTBR,Page-Table Base Register),得到1級頁表區(qū)索引單元;例如PTBR = (0xd008+CPU號*0x200),其中,0xd008 是目標(biāo)機(jī)的操作系統(tǒng)的多級頁表結(jié)構(gòu)起點(diǎn),不同的目標(biāo)機(jī)處理器(不同的目標(biāo)機(jī)CPU號) 的多級頁表結(jié)構(gòu)地址相差0x200個字節(jié)位置;4)從1級頁表區(qū)索引單元取出64位,加上L0,得到2級頁表區(qū)索引單元;5)從2級頁表區(qū)索引單元取出高32位左移13位,加上Li,得到3級頁表區(qū)索引單元;6)從3級頁表區(qū)索引單元取出高32位左移13位,加上L2,得到4級頁表區(qū)索引單元;7)從4級頁表區(qū)索引單元取出高32位左移13位,加上L3,得到最后物理地址代換單元;8)從最后物理地址代換單元取出高32位左移13位,加上頁內(nèi)偏移Offset,得到最終代換出的物理地址。繼續(xù)參閱圖3,所述消息參數(shù)物理地址代換模塊104通過訪問目標(biāo)機(jī)的操作系統(tǒng)的多級頁表107對所述消息參數(shù)虛地址轉(zhuǎn)換獲得消息參數(shù)物理地址108后,并將其返回給所述消息接口模擬處理模塊103,所述消息接口模擬處理模塊103調(diào)用所述底層消息子過程索引表106中的所述消息功能模擬調(diào)用入口 106c,啟動消息功能模擬,根據(jù)所述消息參數(shù)物理地址代換模塊104返回的所述消息參數(shù)物理地址108實(shí)現(xiàn)消息的傳遞。至此,底層消息接口模擬的整個流程結(jié)束。此外,本領(lǐng)域技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計(jì)算機(jī)可讀存儲介質(zhì)中,所述存儲介質(zhì)可以是ROM、RAM、磁碟、光盤等。綜上,本發(fā)明提供的底層消息接口模擬方法及模擬裝置至少具有如下有益效果
不需要進(jìn)行全指令模擬,跳過了消息接口實(shí)現(xiàn)中操作系統(tǒng)行為的模擬;而是在指令流模擬控制模塊的控制下調(diào)用應(yīng)用代碼底層消息識別模塊識別出底層消息子過程調(diào)用指令,由所述應(yīng)用代碼底層消息識別模塊調(diào)用所述消息接口模擬處理模塊使其執(zhí)行該消息接口的模擬處理,獲取消息參數(shù)虛地址并由所述消息接口模擬處理模塊調(diào)用消息參數(shù)物理地址代換模塊,對消息接口參數(shù)中的消息參數(shù)虛地址通過直接訪問目標(biāo)機(jī)的操作系統(tǒng)多級頁表的方法代換成消息功能模擬直接訪問的物理地址。因此,上述技術(shù)方案避免了對消息子過程實(shí)現(xiàn)指令的模擬,不需要引入消息通信指令及相應(yīng)硬件結(jié)構(gòu)的模擬,同時(shí)又基于全結(jié)構(gòu)并行計(jì)算機(jī)狀態(tài)支持了多節(jié)點(diǎn)消息功能的模擬,其模擬方式更為簡單,因而更容易實(shí)施,并且提高了并行應(yīng)用程序的模擬效率。本發(fā)明雖然已以較佳實(shí)施例公開如上,但其并不是用來限定本發(fā)明,任何本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),都可以利用上述揭示的方法和技術(shù)內(nèi)容對本發(fā)明技術(shù)方案做出可能的變動和修改,因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對以上實(shí)施例所作的任何簡單修改、等同變化及修飾,均屬于本發(fā)明技術(shù)方案的保護(hù)范圍。
權(quán)利要求
1.一種底層消息接口模擬方法,其特征在于,包括模擬執(zhí)行目標(biāo)機(jī)的操作系統(tǒng);監(jiān)測所述目標(biāo)機(jī)的操作系統(tǒng)代碼中的進(jìn)程切換,并于監(jiān)測到所述進(jìn)程切換后觸發(fā)注釋機(jī)制,生成底層消息子過程索引表;對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用指令時(shí)執(zhí)行該消息接口的模擬處理,獲取消息參數(shù)虛地址;將所述消息參數(shù)虛地址轉(zhuǎn)換為消息參數(shù)物理地址;調(diào)用所述底層消息子過程索引表執(zhí)行消息功能模擬,根據(jù)所述消息參數(shù)物理地址實(shí)現(xiàn)消息的傳遞。
2.根據(jù)權(quán)利要求1所述的底層消息接口模擬方法,其特征在于,所述注釋機(jī)制包括從所述目標(biāo)機(jī)的操作系統(tǒng)的核心內(nèi)存中讀取將要切換進(jìn)程的進(jìn)程號和進(jìn)程名稱,并于識別出將要切換的進(jìn)程為應(yīng)用進(jìn)程后從其代碼中讀取符號表信息,從中抽取出底層消息子過程名稱和地址,生成底層消息子過程索引表。
3.根據(jù)權(quán)利要求1或2所述的底層消息接口模擬方法,其特征在于,所述底層消息子過程索引表包括底層消息子過程的名稱、地址以及消息功能模擬調(diào)用入口。
4.根據(jù)權(quán)利要求3所述的底層消息接口模擬方法,其特征在于,所述調(diào)用所述底層消息子過程索引表執(zhí)行消息功能模擬包括調(diào)用所述底層消息子過程索引表中的所述消息功能模擬調(diào)用入口,啟動消息功能模擬。
5.根據(jù)權(quán)利要求3所述的底層消息接口模擬方法,其特征在于,所述對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用指令時(shí)執(zhí)行該消息接口的模擬處理,獲取消息參數(shù)虛地址包括對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別為所述指令為轉(zhuǎn)移跳轉(zhuǎn)指令時(shí)取出其轉(zhuǎn)移目標(biāo)地址,將所述轉(zhuǎn)移目標(biāo)地址與所述底層消息子過程索引表中的底層消息子過程的地址進(jìn)行匹配,若匹配成功則識別出所述指令為底層消息子過程調(diào)用指令,執(zhí)行該消息接口的模擬處理,獲取消息參數(shù)虛地址。
6.根據(jù)權(quán)利要求2所述的底層消息接口模擬方法,其特征在于,所述識別出將要切換的進(jìn)程為應(yīng)用進(jìn)程包括調(diào)用進(jìn)程名稱切換處理函數(shù),由其對將要切換的進(jìn)程的進(jìn)程名稱進(jìn)行識別,若將要切換的進(jìn)程不屬于系統(tǒng)進(jìn)程,則將要切換的進(jìn)程為應(yīng)用進(jìn)程。
7.根據(jù)權(quán)利要求1所述的底層消息接口模擬方法,其特征在于,所述將所述消息參數(shù)虛地址轉(zhuǎn)換為消息參數(shù)物理地址是通過訪問所述目標(biāo)機(jī)的操作系統(tǒng)的多級頁表完成的。
8.根據(jù)權(quán)利要求1所述的底層消息接口模擬方法,其特征在于,所述消息參數(shù)虛地址包括消息參數(shù)中源方和目的方的虛地址。
9.根據(jù)權(quán)利要求1所述的底層消息接口模擬方法,其特征在于,所述底層消息接口模擬方法基于全結(jié)構(gòu)并行計(jì)算機(jī)狀態(tài)。
10.一種底層消息接口模擬裝置,其特征在于,包括指令流模擬控制模塊、應(yīng)用代碼底層消息識別模塊、消息接口模擬處理模塊、消息參數(shù)物理地址代換模塊,所述指令流模擬控制模塊用于控制模擬執(zhí)行目標(biāo)機(jī)代碼中的每一條指令,包括調(diào)用所述應(yīng)用代碼底層消息識別模塊并獲取其反饋結(jié)果;所述應(yīng)用代碼底層消息識別模塊用于接受所述指令流模擬控制模塊的調(diào)用,監(jiān)測所述目標(biāo)機(jī)的操作系統(tǒng)代碼中的進(jìn)程切換,并于監(jiān)測到所述進(jìn)程切換后觸發(fā)注釋機(jī)制,生成底層消息子過程索引表;還用于接受所述指令流模擬控制模塊的調(diào)用,對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用指令時(shí)調(diào)用所述消息接口模擬處理模塊使其執(zhí)行該消息接口的模擬處理;所述消息接口模擬處理模塊用于接受所述應(yīng)用代碼底層消息識別模塊的調(diào)用,獲取消息參數(shù)虛地址,調(diào)用所述消息參數(shù)物理地址代換模塊,同時(shí)將所述消息參數(shù)虛地址傳送給所述消息參數(shù)物理地址代換模塊進(jìn)行消息參數(shù)虛地址到消息參數(shù)物理地址的轉(zhuǎn)換;還用于調(diào)用所述底層消息子過程索引表執(zhí)行消息功能模擬,根據(jù)所述消息參數(shù)物理地址代換模塊返回的所述消息參數(shù)物理地址實(shí)現(xiàn)消息的傳遞。所述消息參數(shù)物理地址代換模塊用于接受所述消息接口模擬處理模塊的調(diào)用,將所述消息參數(shù)虛地址轉(zhuǎn)換為消息參數(shù)物理地址,并將所述消息參數(shù)物理地址返回給所述消息接口模擬處理模塊。
11.根據(jù)權(quán)利要求10所述的底層消息接口模擬裝置,其特征在于,所述應(yīng)用代碼底層消息識別模塊包括應(yīng)用代碼載入識別單元和底層消息子過程調(diào)用識別單元,所述應(yīng)用代碼載入識別單元用于監(jiān)測目標(biāo)機(jī)的操作系統(tǒng)代碼中的進(jìn)程切換,并于監(jiān)測到所述進(jìn)程切換后觸發(fā)注釋機(jī)制,生成底層消息子過程索引表;所述底層消息子過程調(diào)用識別單元用于對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用時(shí)調(diào)用所述消息接口模擬處理模塊使其執(zhí)行該消息接口的模擬處理。
12.根據(jù)權(quán)利要求11所述的底層消息接口模擬裝置,其特征在于,所述注釋機(jī)制包括 所述應(yīng)用代碼載入識別單元從所述目標(biāo)機(jī)的操作系統(tǒng)的核心內(nèi)存中讀取將要切換進(jìn)程的進(jìn)程號和進(jìn)程名稱,并于識別出將要切換的進(jìn)程為應(yīng)用進(jìn)程后從其代碼中讀取符號表信息,從中抽取出底層消息子過程名稱和地址,生成底層消息子過程索引表。
13.根據(jù)權(quán)利要求10至12中任一項(xiàng)所述的底層消息接口模擬裝置,其特征在于,所述底層消息子過程索引表包括底層消息子過程的名稱、地址以及消息功能模擬調(diào)用入口。
14.根據(jù)權(quán)利要求13所述的底層消息接口模擬裝置,其特征在于,所述消息接口模擬處理模塊調(diào)用所述底層消息子過程索引表執(zhí)行消息功能模擬包括調(diào)用所述底層消息子過程索引表中的所述消息功能模擬調(diào)用入口,啟動消息功能模擬。
15.根據(jù)權(quán)利要求11所述的底層消息接口模擬裝置,其特征在于,所述底層消息子過程調(diào)用識別單元對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用指令時(shí)調(diào)用所述消息接口模擬處理模塊使其執(zhí)行該消息接口的模擬處理,包括對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出所述指令為轉(zhuǎn)移跳轉(zhuǎn)指令時(shí)取出其轉(zhuǎn)移目標(biāo)地址,將所述轉(zhuǎn)移目標(biāo)地址與所述底層消息子過程索引表中的底層消息子過程的地址進(jìn)行匹配,若匹配成功則識別出所述指令為底層消息子過程調(diào)用指令,調(diào)用所述消息接口模擬處理模塊使其執(zhí)行該消息接口的模擬處理。
16.根據(jù)權(quán)利要求11所述的底層消息接口模擬裝置,其特征在于,所述底層消息子過程調(diào)用識別單元識別出將要切換的進(jìn)程為應(yīng)用進(jìn)程包括調(diào)用進(jìn)程名稱切換處理函數(shù),由其對將要切換的進(jìn)程的進(jìn)程名稱進(jìn)行識別,若將要切換的進(jìn)程不屬于系統(tǒng)進(jìn)程,則將要切換的進(jìn)程為應(yīng)用進(jìn)程。
17.根據(jù)權(quán)利要求10所述的底層消息接口模擬裝置,其特征在于,所述消息參數(shù)物理地址代換模塊將所述消息參數(shù)虛地址轉(zhuǎn)換為消息參數(shù)物理地址是通過訪問所述目標(biāo)機(jī)的操作系統(tǒng)的多級頁表完成的。
18.根據(jù)權(quán)利要求10所述的底層消息接口模擬裝置,其特征在于,所述消息參數(shù)虛地址包括消息參數(shù)中源方和目的方的虛地址。
19.根據(jù)權(quán)利要求10所述的底層消息接口模擬裝置,其特征在于,所述底層消息接口模擬裝置基于全結(jié)構(gòu)并行計(jì)算機(jī)狀態(tài)。
20.一種模擬器,其特征在于,包括權(quán)利要求10至19中任一項(xiàng)所述的底層消息接口模擬裝置。
全文摘要
一種底層消息接口模擬方法,包括模擬執(zhí)行目標(biāo)機(jī)的操作系統(tǒng);監(jiān)測所述目標(biāo)機(jī)的操作系統(tǒng)代碼中的進(jìn)程切換,并于監(jiān)測到所述進(jìn)程切換后觸發(fā)注釋機(jī)制,生成底層消息子過程索引表;對目標(biāo)機(jī)指令流中的每一條指令進(jìn)行識別處理,并于識別出底層消息子過程調(diào)用時(shí)執(zhí)行該消息接口的模擬處理,獲取消息參數(shù)虛地址;將所述消息參數(shù)虛地址轉(zhuǎn)換為消息參數(shù)物理地址;調(diào)用所述底層消息子過程索引表執(zhí)行消息功能模擬,根據(jù)所述消息參數(shù)物理地址實(shí)現(xiàn)消息的傳遞?;谏鲜龇椒ǎ€提供了一種底層消息接口模擬裝置。本發(fā)明能夠基于全結(jié)構(gòu)并行計(jì)算機(jī)狀態(tài)支持多節(jié)點(diǎn)消息功能的模擬,簡化了模擬方式,提高并行應(yīng)用程序的模擬效率。
文檔編號G06F9/455GK102446113SQ20101050886
公開日2012年5月9日 申請日期2010年10月12日 優(yōu)先權(quán)日2010年10月12日
發(fā)明者李岱峰, 楊金才, 潘治, 王丹云, 谷洪峰 申請人:無錫江南計(jì)算技術(shù)研究所