專利名稱:一種聯(lián)合模擬系統(tǒng)及其工作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及模擬系統(tǒng)加速的技術(shù)領(lǐng)域,特別是涉及一種聯(lián)合模擬系統(tǒng)及其 工作方法。
背景技術(shù):
模擬器可以理解為"用純軟件的手段來仿真某一種硬件機(jī)能的機(jī)器",它是 研究新型高性能計(jì)算機(jī)體系結(jié)構(gòu)的一種快速、有效的手段,是計(jì)算機(jī)體系結(jié)構(gòu) 研究者的重要工具。當(dāng)構(gòu)建一個(gè)新系統(tǒng)時(shí),模擬器可以有效地測(cè)試和驗(yàn)證新系 統(tǒng)的正確性并對(duì)其性能進(jìn)行驗(yàn)證,可以大大降低開發(fā)的成本和時(shí)間。利用模擬 器,可以使得硬件生產(chǎn)廠商在構(gòu)建系統(tǒng)之前對(duì)硬件驗(yàn)證,還可以使得軟件開發(fā) 商在樣機(jī)生產(chǎn)之前就能夠進(jìn)行軟件開發(fā),從而使軟、硬件同時(shí)面世成為可能。 另外,模擬器可以在程序運(yùn)行時(shí)收集機(jī)器的運(yùn)行信息,幫助分析系統(tǒng)的行為, 從而進(jìn)行相關(guān)的優(yōu)化。由于模擬器的直觀性和易用性,它在計(jì)算機(jī)組成和體系 結(jié)構(gòu)教學(xué)領(lǐng)域也有廣泛的應(yīng)用。
目前,軟件模擬器的應(yīng)用最為廣泛,但軟件模擬器的主要弱點(diǎn)就是執(zhí)行速
度較低,模擬的規(guī)模有限。Derek Chiou提出了軟硬結(jié)合的模擬器FAST,用于 實(shí)現(xiàn)一個(gè)運(yùn)行速度快、模擬精度高的單節(jié)點(diǎn)模擬器。由于硬件的執(zhí)行速度很快, 所以相對(duì)于純軟件模擬器,這種混合模擬技術(shù)可以起到加速作用。
模擬器FAST將功能模擬和時(shí)序模擬分離開來,對(duì)于功能模擬部分使用軟 件模擬器QEMU來實(shí)現(xiàn),而對(duì)于時(shí)序模擬部分使用現(xiàn)場(chǎng)可編程門陣列模擬器來 實(shí)現(xiàn)。軟件模擬器只提供指令集架構(gòu),確保程序可以正確運(yùn)行。現(xiàn)場(chǎng)可編程門 陣列模擬器模擬微結(jié)構(gòu),模擬分支預(yù)測(cè)、緩存狀態(tài)等。功能級(jí)模擬器和時(shí)序級(jí) 模擬器之間通過一個(gè)緩沖區(qū)來交互。功能級(jí)模擬器產(chǎn)生執(zhí)行的蹤跡信息,時(shí)序 級(jí)模擬器從緩沖區(qū)中讀出蹤跡信息進(jìn)行微結(jié)構(gòu)模擬。可以看出,模擬器FAST 的技術(shù)特點(diǎn)在于將一次指令模擬分為兩個(gè)部分,重點(diǎn)關(guān)注的部分,即需要詳細(xì) 模擬的部分,利用硬件加速;非關(guān)注部分由軟件處理。相比于其它軟件模擬器,模擬器FAST由于硬件的輔助可以更快地獲取到
詳細(xì)的時(shí)序模擬信息。但是模擬器FAST定位于單機(jī)模擬的加速,而對(duì)于大規(guī)
模并行應(yīng)用程序來說,單機(jī)模擬的加速對(duì)整體的加速效果影響十分有限,隨著 模擬規(guī)模的擴(kuò)展,單機(jī)模擬加速手段不具備可擴(kuò)展性。
現(xiàn)有的模擬器對(duì)大規(guī)模并行應(yīng)用模擬時(shí)會(huì)模擬應(yīng)用程序各個(gè)進(jìn)程在所有 目標(biāo)節(jié)點(diǎn)上運(yùn)行行為的細(xì)節(jié),當(dāng)各個(gè)進(jìn)程采用的工作集相近的時(shí)候,獲取所有 節(jié)點(diǎn)的模擬細(xì)節(jié)信息意義不大,因?yàn)檫@些信息反映的行為特征相近,具有冗余 信息。另外,對(duì)大規(guī)模并行應(yīng)用模擬時(shí),模擬周期通常很長(zhǎng)。而希望通過模擬 獲取到的信息種類又很多,例如訪存行為特種、指令執(zhí)行的時(shí)序特征等。 一般 來說, 一種模擬器獲取的信息種類越多其模擬速度越慢,所以僅采用一種模擬 器很難既快速又詳細(xì)的獲取多種行為特征信息。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種聯(lián)合模擬系統(tǒng)及其工作方法,能夠加速模擬異 構(gòu)系統(tǒng)中的并行應(yīng)用程序,達(dá)到既快速又詳細(xì)的獲取多種行為的特征信息的目 的。
為實(shí)現(xiàn)本發(fā)明的目的而提供的一種聯(lián)合模擬系統(tǒng),包括至少兩臺(tái)物理計(jì) 算機(jī)、系統(tǒng)主控進(jìn)程模塊和進(jìn)程庫,其中
至少一臺(tái)物理計(jì)算機(jī),包括宿主機(jī)系統(tǒng)模塊和管理進(jìn)程模塊,其中 所述宿主機(jī)系統(tǒng)模塊,用于運(yùn)行宿主機(jī)進(jìn)程;
所述管理進(jìn)程模塊,用于管理其所在物理計(jì)算機(jī)上的宿主機(jī)進(jìn)程;
至少一臺(tái)物理計(jì)算機(jī),包括一種或多種類型的模擬器,代理進(jìn)程模塊,以
及目標(biāo)機(jī)操作系統(tǒng)模塊,其中
所述模擬器,用于模擬目標(biāo)機(jī),并獲取在所述目標(biāo)機(jī)上運(yùn)行的目標(biāo)機(jī)進(jìn)程
的具體行為的特征信息;
所述代理進(jìn)程模塊,用于管理其所在物理計(jì)算機(jī)上的所述模擬器; 所述目標(biāo)機(jī)操作系統(tǒng)模塊,用于運(yùn)行目標(biāo)機(jī)進(jìn)程;
系統(tǒng)主控進(jìn)程模塊,位于任意一臺(tái)所述物理計(jì)算機(jī)上,用于將控制命令傳 遞給所述代理進(jìn)程模塊和所述管理進(jìn)程模塊;
進(jìn)程庫,位于每一臺(tái)所述物理計(jì)算機(jī)上,用于聯(lián)合模擬系統(tǒng)的通信操作。所述模擬器,包括一虛擬設(shè)備,所述虛擬設(shè)備使用虛擬設(shè)備所在模擬器的
資源;所述虛擬設(shè)備所在物理計(jì)算機(jī)上的代理進(jìn)程模塊通過控制所述虛擬設(shè)備
間接控制所述模擬器。
所述目標(biāo)機(jī)操作系統(tǒng)模塊包括驅(qū)動(dòng)程序模塊和后臺(tái)進(jìn)程模塊,其中 所述驅(qū)動(dòng)程序模塊,用于在所述虛擬設(shè)備和目標(biāo)機(jī)進(jìn)程之間傳遞消息; 所述后臺(tái)進(jìn)程模塊,用于控制該后臺(tái)進(jìn)程模塊所在的目標(biāo)機(jī)操作系統(tǒng)模塊
上運(yùn)行的目標(biāo)機(jī)進(jìn)程。
所述目標(biāo)機(jī)操作系統(tǒng)模塊,根據(jù)所述模擬器的不同類型實(shí)現(xiàn)不同的目標(biāo)機(jī)
操作系統(tǒng)。
所述目標(biāo)機(jī)操作系統(tǒng)模塊,根據(jù)所述模擬器的不同類型實(shí)現(xiàn)相同的目標(biāo)機(jī) 操作系統(tǒng)。
為實(shí)現(xiàn)本發(fā)明的目的還一種聯(lián)合模擬系統(tǒng),包括一臺(tái)物理計(jì)算機(jī),其特征 在于,所述物理計(jì)算機(jī)包括宿主機(jī)系統(tǒng)模塊、管理進(jìn)程模塊、模擬器、代理 進(jìn)程模塊、目標(biāo)機(jī)操作系統(tǒng)模塊、系統(tǒng)主控進(jìn)程模塊和進(jìn)程庫,其中
所述宿主機(jī)系統(tǒng)模塊,用于運(yùn)行宿主機(jī)進(jìn)程;
所述管理進(jìn)程模塊,用于管理宿主機(jī)進(jìn)程;
所述模擬器,用于模擬目標(biāo)機(jī),并獲取在所述目標(biāo)機(jī)上運(yùn)行的目標(biāo)機(jī)進(jìn)程
的具體行為的特征信息;
所述代理進(jìn)程模塊,用于管理所述模擬器; 所述目標(biāo)機(jī)操作系統(tǒng)模塊,用于運(yùn)行目標(biāo)機(jī)進(jìn)程;
所述系統(tǒng)主控進(jìn)程模塊,用于將控制命令傳遞給所述代理進(jìn)程模塊和所述 管理進(jìn)程模塊;
所述進(jìn)程庫,負(fù)責(zé)代理進(jìn)程模塊和所述管理進(jìn)程模塊通信操作。 所述模擬器,包括一虛擬設(shè)備,所述虛擬設(shè)備使用虛擬設(shè)備所在模擬器的 資源;所述代理進(jìn)程模塊通過控制所述虛擬設(shè)備間接控制所述模擬器。
所述目標(biāo)機(jī)操作系統(tǒng)模塊包括驅(qū)動(dòng)程序模塊和后臺(tái)進(jìn)程模塊,其中 所述驅(qū)動(dòng)程序模塊,用于在所述虛擬設(shè)備和目標(biāo)機(jī)進(jìn)程之間傳遞消息; 所述后臺(tái)進(jìn)程模塊,用于控制所述目標(biāo)機(jī)操作系統(tǒng)模塊上運(yùn)行的目標(biāo)機(jī)進(jìn)程。
所述目標(biāo)機(jī)操作系統(tǒng)模塊,根據(jù)所述模擬器的類型確定目標(biāo)機(jī)操作系統(tǒng)。所述宿主機(jī)進(jìn)程,包括SHELL程序的進(jìn)程,用于發(fā)出控制命令;所述SHELL 程序由用戶根據(jù)所需的功能自行編寫,是根據(jù)用戶輸入的命令調(diào)用系統(tǒng)提供的 接口。
相應(yīng)于一種聯(lián)合模擬系統(tǒng),本發(fā)明提供應(yīng)用于該聯(lián)合模擬系統(tǒng)的工作方 法,包括下列步驟
步驟A、確定聯(lián)合模擬系統(tǒng)中的模擬器的類型并為聯(lián)合模擬系統(tǒng)編寫任務(wù) 分配腳本;
步驟B、根據(jù)所述任務(wù)分配腳本,啟動(dòng)聯(lián)合模擬系統(tǒng),為聯(lián)合模擬系統(tǒng)中 運(yùn)行的應(yīng)用程序的進(jìn)程統(tǒng)一分配系統(tǒng)進(jìn)程ID,并利用所述任務(wù)分配腳本為聯(lián) 合模擬系統(tǒng)創(chuàng)建并加載、銷毀聯(lián)合模擬系統(tǒng)中運(yùn)行的應(yīng)用程序的進(jìn)程;
步驟C、根據(jù)所述任務(wù)分配腳本和所述系統(tǒng)進(jìn)程ID,實(shí)現(xiàn)所述聯(lián)合模擬系 統(tǒng)中運(yùn)行的應(yīng)用程序的進(jìn)程自由通信。
所述步驟A,包括下列步驟
步驟A1、確定聯(lián)合模擬系統(tǒng)中模擬器的類型;
步驟A2、為聯(lián)合模擬系統(tǒng)編寫任務(wù)分配腳本。
步驟A2中,所述任務(wù)分配腳本的語法格式是
物理機(jī)名進(jìn)程類型 子進(jìn)程數(shù)。
所述步驟B包括下列步驟
步驟Bl、為聯(lián)合模擬系統(tǒng)中運(yùn)行的應(yīng)用程序的進(jìn)程統(tǒng)一分配系統(tǒng)進(jìn)程ID;
步驟B2、利用所述任務(wù)分配腳本為聯(lián)合模擬系統(tǒng)創(chuàng)建并加載、銷毀聯(lián)合 模擬系統(tǒng)中運(yùn)行的應(yīng)用程序的進(jìn)程;
步驟B1中,所述統(tǒng)一分配系統(tǒng)進(jìn)程ID,需要確定進(jìn)程空間范圍,所述確 定進(jìn)程空間范圍,方法是若一進(jìn)程空間范圍是1 N,另一進(jìn)程空間范圍是l M,而宿主機(jī)上的進(jìn)程空間是1 P,那么所述聯(lián)合模擬系統(tǒng)能夠提供范圍在l (M+N+P)的進(jìn)程空間。
所述創(chuàng)建并加載包括下列步驟
步驟B21、使用任務(wù)分配腳本創(chuàng)建并加載宿主機(jī)進(jìn)程、目標(biāo)機(jī)進(jìn)程。 步驟B21中,所述創(chuàng)建并加載宿主機(jī)進(jìn)程,方法是用戶輸入創(chuàng)建宿主機(jī) 進(jìn)程請(qǐng)求,通過S服LL程序?qū)?chuàng)建請(qǐng)求提交給管理進(jìn)程,該管理進(jìn)程根據(jù)任務(wù) 分配腳本確定創(chuàng)建的宿主機(jī)進(jìn)程對(duì)應(yīng)的管理進(jìn)程,將創(chuàng)建請(qǐng)求轉(zhuǎn)交給與創(chuàng)建的宿主機(jī)進(jìn)程對(duì)應(yīng)的管理進(jìn)程,該管理進(jìn)程利用宿主機(jī)系統(tǒng)提供的進(jìn)程創(chuàng)建和加載機(jī)制實(shí)現(xiàn)宿主機(jī)進(jìn)程的創(chuàng)建和加載。
所述SHELL程序是應(yīng)用程序,用于發(fā)出控制命令;SHELL程序由用戶根據(jù)
所需的功能自行編寫,是根據(jù)用戶輸入的命令調(diào)用系統(tǒng)提供的接口。
步驟B21中,所述創(chuàng)建并加載目標(biāo)機(jī)進(jìn)程,方法是用戶輸入創(chuàng)建目標(biāo)機(jī)
進(jìn)程的請(qǐng)求,通過SHELL程序?qū)?chuàng)建請(qǐng)求傳遞給將要運(yùn)行目標(biāo)機(jī)進(jìn)程的模擬器對(duì)應(yīng)的代理進(jìn)程,該代理進(jìn)程則將目標(biāo)機(jī)進(jìn)程創(chuàng)建請(qǐng)求轉(zhuǎn)交給該模擬器的虛擬設(shè)備;虛擬設(shè)備通過中斷程序通知驅(qū)動(dòng)程序提取目標(biāo)機(jī)進(jìn)程創(chuàng)建請(qǐng)求,而驅(qū)動(dòng)程序則將提取的目標(biāo)機(jī)進(jìn)程創(chuàng)建請(qǐng)求轉(zhuǎn)給目標(biāo)機(jī)的后臺(tái)進(jìn)程;目標(biāo)機(jī)的后臺(tái)進(jìn)程利用目標(biāo)機(jī)操作系統(tǒng)提供的機(jī)制創(chuàng)建并加載目標(biāo)機(jī)進(jìn)程。
所述加載分為兩種情況若目標(biāo)機(jī)進(jìn)程未指定模擬器,聯(lián)合模擬系統(tǒng)將從目標(biāo)機(jī)進(jìn)程空間中隨機(jī)選取一個(gè)系統(tǒng)進(jìn)程ID分配給該目標(biāo)機(jī)進(jìn)程,將該目標(biāo)機(jī)進(jìn)程加載到隨機(jī)選擇的模擬器上運(yùn)行,相應(yīng)改變?nèi)蝿?wù)分配腳本中的數(shù)據(jù);若目標(biāo)機(jī)進(jìn)程指定模擬器,那么聯(lián)合模擬系統(tǒng)將在該模擬器映射的進(jìn)程空間范圍內(nèi)為該目標(biāo)機(jī)進(jìn)程選擇一個(gè)系統(tǒng)進(jìn)程ID,將該目標(biāo)機(jī)進(jìn)程將被加載到指定的模擬器上,相應(yīng)改變?nèi)蝿?wù)分配腳本中的數(shù)據(jù)。
步驟C中,所述通信分為兩個(gè)層面首先是系統(tǒng)主控進(jìn)程、代理進(jìn)程、管理進(jìn)程之間的通信;其次是宿主機(jī)的應(yīng)用程序的進(jìn)程之間、目標(biāo)機(jī)的應(yīng)用程序的進(jìn)程之間、宿主機(jī)的應(yīng)用程序的進(jìn)程與目標(biāo)機(jī)的應(yīng)用程序的進(jìn)程之間通信。
所述步驟C還進(jìn)一步包括
步驟Cl、位于同一宿主機(jī)上的不同宿主機(jī)進(jìn)程之間進(jìn)行通信;步驟C2、位于同一目標(biāo)機(jī)上的不同目標(biāo)機(jī)進(jìn)程之間進(jìn)行通信;步驟C3、位于不同目標(biāo)機(jī)上的目標(biāo)機(jī)進(jìn)程之間進(jìn)行通信;步驟C4、位于不同宿主機(jī)上的宿主機(jī)進(jìn)程之間進(jìn)行通信;步驟C5、位于宿主機(jī)上宿主機(jī)進(jìn)程與位于目標(biāo)機(jī)上的目標(biāo)機(jī)進(jìn)程之間進(jìn)行通信。
所述步驟C3包括下列步驟
步驟C31,發(fā)送端的目標(biāo)機(jī)進(jìn)程,將數(shù)據(jù)提交給已經(jīng)編譯到發(fā)送端目標(biāo)機(jī)的通信庫;
步驟C32,所述通信庫將數(shù)據(jù)封裝成可以用于轉(zhuǎn)發(fā)的數(shù)據(jù)包,然后將數(shù)據(jù)包提交給發(fā)送端的驅(qū)動(dòng)程序;
步驟C33,所述驅(qū)動(dòng)程序不對(duì)數(shù)據(jù)包進(jìn)一步處理,直接傳遞給發(fā)送端的模擬器的虛擬設(shè)備;
步驟C34,所述虛擬設(shè)備需要根據(jù)傳輸網(wǎng)絡(luò)的情況將大數(shù)據(jù)包劃分為若干數(shù)據(jù)包分片然后再傳遞給相應(yīng)代理進(jìn)程;
步驟C35,所述代理進(jìn)程根據(jù)聯(lián)合模擬系統(tǒng)的進(jìn)程樹確定將請(qǐng)求轉(zhuǎn)交的代理進(jìn)程,然后轉(zhuǎn)發(fā)數(shù)據(jù)包分片;
步驟C36,所述代理進(jìn)程接收到數(shù)據(jù)包分片后,根據(jù)聯(lián)合模擬系統(tǒng)的進(jìn)程樹確定將請(qǐng)求轉(zhuǎn)交的代理進(jìn)程,然后轉(zhuǎn)發(fā)數(shù)據(jù)包分片;
步驟C37,接收數(shù)據(jù)包分片的代理進(jìn)程將數(shù)據(jù)包分片轉(zhuǎn)發(fā)給根據(jù)目的系統(tǒng)進(jìn)程ID找到的目標(biāo)機(jī)進(jìn)程所在的模擬器的虛擬設(shè)備,該虛擬設(shè)備此時(shí)不會(huì)重組數(shù)據(jù)包分片,而是將數(shù)據(jù)包分片通知給接收端的驅(qū)動(dòng)程序;
步驟C38,接收端的驅(qū)動(dòng)程序接收數(shù)據(jù)包分片并將數(shù)據(jù)包分片重組回原來的數(shù)據(jù)包提交給接收端的通信庫;
步驟C39,接收端通信庫接收到數(shù)據(jù)包后將數(shù)據(jù)包提交給接收端的根據(jù)目的系統(tǒng)進(jìn)程ID找到的目標(biāo)機(jī)進(jìn)程,完成數(shù)據(jù)傳輸過程。
所述步驟C4包括下列步驟
步驟C41,發(fā)送端的宿主機(jī)進(jìn)程,將數(shù)據(jù)提交給己經(jīng)編譯到發(fā)送端的宿主機(jī)的通信庫;
步驟C42,所述通信庫將數(shù)據(jù)封裝成用于轉(zhuǎn)發(fā)的數(shù)據(jù)包,然后將數(shù)據(jù)包提交給發(fā)送端的宿主機(jī)的管理進(jìn)程;
步驟C43,所述管理進(jìn)程根據(jù)聯(lián)合模擬系統(tǒng)的進(jìn)程樹確定將請(qǐng)求轉(zhuǎn)交的管理進(jìn)程,然后轉(zhuǎn)發(fā)數(shù)據(jù)包;
步驟C44,所述管理進(jìn)程接收數(shù)據(jù)包后將數(shù)據(jù)包提交給接收端的進(jìn)程庫;
步驟C45,所述接收端的通信庫接收到數(shù)據(jù)包后將數(shù)據(jù)提交給接收端的根據(jù)目的系統(tǒng)進(jìn)程ID找到的宿主機(jī)進(jìn)程,完成數(shù)據(jù)傳輸過程。
所述步驟C5包括下列步驟
步驟C51,發(fā)送端的宿主機(jī)進(jìn)程,將數(shù)據(jù)提交給已經(jīng)編譯到發(fā)送端的宿主機(jī)的通信庫;
步驟C52,所述通信庫將數(shù)據(jù)封裝成用于轉(zhuǎn)發(fā)的數(shù)據(jù)包,然后將數(shù)據(jù)包提交給發(fā)送端的宿主機(jī)的管理進(jìn)程;
步驟C53,所述管理進(jìn)程根據(jù)聯(lián)合模擬系統(tǒng)的進(jìn)程樹確定將轉(zhuǎn)發(fā)的代理進(jìn) 程,并根據(jù)傳輸網(wǎng)絡(luò)的情況將大數(shù)據(jù)包劃分為若干數(shù)據(jù)包分片轉(zhuǎn)發(fā)給確定的代 理進(jìn)程;
步驟C54,所述代理進(jìn)程接收數(shù)據(jù)包分片,并根據(jù)目的系統(tǒng)進(jìn)程ID找到 目標(biāo)機(jī)進(jìn)程所在模擬器的虛擬設(shè)備,并轉(zhuǎn)發(fā)數(shù)據(jù)包分片;
步驟C55,所述虛擬設(shè)備此時(shí)不會(huì)重組數(shù)據(jù)包分片,而是將數(shù)據(jù)包分片通 知給接收端的目標(biāo)機(jī)操作系統(tǒng)的驅(qū)動(dòng)程序;
步驟C56,所述驅(qū)動(dòng)程序接收數(shù)據(jù)包分片并將數(shù)據(jù)包分片重組回原來的數(shù) 據(jù)包提交給接收端的進(jìn)程庫;
步驟C57,所述接收端的進(jìn)程庫將接收的數(shù)據(jù)包提交給根據(jù)目的系統(tǒng)進(jìn)程 ID找到的目標(biāo)機(jī)進(jìn)程,完成數(shù)據(jù)傳輸過程。
所述進(jìn)程樹,與所述任務(wù)分配腳本對(duì)應(yīng),其中所述系統(tǒng)主控進(jìn)程位于根節(jié) 點(diǎn),葉節(jié)點(diǎn)是運(yùn)行在所述聯(lián)合模擬系統(tǒng)中的應(yīng)用程序的進(jìn)程,其它節(jié)點(diǎn)對(duì)應(yīng)的 是所述模擬器的虛擬設(shè)備和所述代理進(jìn)程或所述管理進(jìn)程。
本發(fā)明采用多種形式模擬器聯(lián)合模擬的方法運(yùn)行大規(guī)模應(yīng)用程序的進(jìn)程, 將應(yīng)用程序的進(jìn)程劃分為若干類別,每種類別的進(jìn)程運(yùn)行在一類模擬器上,由 于每個(gè)模擬器單獨(dú)模擬的規(guī)模變小,所以達(dá)到快速整理模擬過程的效果,同時(shí) 實(shí)現(xiàn)獲取多種類型的行為特征信息。
圖1是本發(fā)明聯(lián)合模擬系統(tǒng)一實(shí)施例的組成結(jié)構(gòu)圖2是本發(fā)明聯(lián)合模擬系統(tǒng)的實(shí)施例說明圖3是本發(fā)明聯(lián)合模擬系統(tǒng)的工作方法的流程圖4是聯(lián)合模擬系統(tǒng)中模塊間關(guān)系示意圖5是本發(fā)明中進(jìn)程空間的映射關(guān)系圖6是本發(fā)明中進(jìn)程的樹形結(jié)構(gòu)圖7是本發(fā)明聯(lián)合模擬系統(tǒng)另一實(shí)施例的組成結(jié)構(gòu)圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí) 施例,對(duì)本發(fā)明的一種聯(lián)合模擬系統(tǒng)及其工作方法進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng) 理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明的一種聯(lián)合模擬系統(tǒng)及其工作方法,能夠加速模擬異構(gòu)系統(tǒng)中的并 行應(yīng)用程序,達(dá)到既快速又詳細(xì)的獲取多種行為的特征信息的目的?,F(xiàn)有的模 擬器對(duì)大規(guī)模并行應(yīng)用程序模擬時(shí)會(huì)模擬應(yīng)用程序的各個(gè)進(jìn)程在所有目標(biāo)節(jié) 點(diǎn)上運(yùn)行行為的細(xì)節(jié),當(dāng)各個(gè)進(jìn)程采用的工作集相近的時(shí)候,獲取所有節(jié)點(diǎn)的 模擬細(xì)節(jié)信息意義不大,因?yàn)檫@些信息反映的行為特征相近,具有冗余信息, 所以本發(fā)明的本質(zhì)是將所有目標(biāo)節(jié)點(diǎn)上運(yùn)行的實(shí)現(xiàn)主要行為與細(xì)節(jié)行為的應(yīng) 用程序的進(jìn)程分開,只對(duì)主要行為模擬,從而實(shí)現(xiàn)了模擬系統(tǒng)的加速,進(jìn)而實(shí) 現(xiàn)快速獲取特征信息。
同時(shí),本發(fā)明采用多種形式模擬器聯(lián)合模擬的方法模擬大規(guī)模應(yīng)用程序的 進(jìn)程,將應(yīng)用程序的進(jìn)程劃分為若干類別,每種類別的進(jìn)程運(yùn)行在一類模擬器 上,由于每個(gè)模擬器單獨(dú)模擬的規(guī)模變小,所以也達(dá)到快速整理模擬過程的效 果,另一方面,由于多種模擬器共同模擬,從而實(shí)現(xiàn)同時(shí)獲取到多種類型的行 為特征信息。
為了更好的描述本發(fā)明,首先說明有關(guān)本發(fā)明的一些概念 宿主機(jī),是指實(shí)際的物理計(jì)算機(jī); 目標(biāo)機(jī),是指模擬器模擬出的計(jì)算機(jī); 主要行為,是指應(yīng)用程序的進(jìn)程中受關(guān)注的行為; 細(xì)節(jié)行為,是指應(yīng)用程序的進(jìn)程中不受關(guān)注的行為; 宿主機(jī)進(jìn)程,是指實(shí)現(xiàn)細(xì)節(jié)行為的應(yīng)用程序的進(jìn)程; 目標(biāo)機(jī)進(jìn)程,是指實(shí)現(xiàn)主要行為的應(yīng)用程序的進(jìn)程。
圖l是本發(fā)明聯(lián)合模擬系統(tǒng)一實(shí)施例的組成結(jié)構(gòu)圖,參照?qǐng)Dl,本發(fā)明的 聯(lián)合模擬系統(tǒng)包括一臺(tái)物理計(jì)算機(jī),所述物理計(jì)算機(jī)包括宿主機(jī)系統(tǒng)模塊、 管理進(jìn)程模塊、模擬器、代理進(jìn)程模塊、目標(biāo)機(jī)操作系統(tǒng)模塊、進(jìn)程庫以及系 統(tǒng)主控進(jìn)程模塊,其中
所述宿主機(jī)系統(tǒng)模塊,用于直接運(yùn)行宿主機(jī)進(jìn)程,而不獲取該宿主機(jī)進(jìn)程 的具體行為的特征信息;所述宿主機(jī)系統(tǒng)模塊,直接運(yùn)行宿主機(jī)進(jìn)程,所以不會(huì)獲取到該宿主機(jī)進(jìn) 程的細(xì)節(jié)行為信息,但可以快速執(zhí)行,輔助聯(lián)合模擬系統(tǒng)中的其他進(jìn)程完成任 務(wù)從而對(duì)整個(gè)模擬過程起到加速作用。
本發(fā)明中,在宿主機(jī)系統(tǒng)模塊上運(yùn)行的宿主機(jī)進(jìn)程中包括sm^LL程序的進(jìn)
程,所述SHELL程序是一種特殊的應(yīng)用程序,僅用于發(fā)出控制命令;SHELL程 序由用戶根據(jù)所需的功能自行編寫,是根據(jù)用戶輸入的命令調(diào)用系統(tǒng)提供的接 Pl。
所述管理進(jìn)程模塊,用于管理在宿主機(jī)系統(tǒng)模塊上運(yùn)行的宿主機(jī)進(jìn)程,對(duì) 宿主機(jī)進(jìn)程之間的消息傳遞起到路由作用;
所述模擬器,用于模擬目標(biāo)機(jī),并獲取在所述目標(biāo)機(jī)上運(yùn)行的目標(biāo)機(jī)進(jìn)程 的具體行為的特征信息;
所述模擬器只獲取應(yīng)用程序中主要行為的特征信息,減少了模擬器的模擬 規(guī)模,實(shí)現(xiàn)了整體模擬過程的加速。
所述模擬器可以是一臺(tái)模擬器,也可以是多種類型的多臺(tái)模擬器;在多臺(tái) 模擬器的情況下,每一臺(tái)模擬器只獲取與模擬器本身具有相同類型的具體行為 的特征信息,保證了一次執(zhí)行后能夠同時(shí)獲取到多種行為特征。
所述代理進(jìn)程模塊,用于管理所述模擬器,對(duì)所述模擬器或在所述模擬器 上運(yùn)行的目標(biāo)機(jī)進(jìn)程之間的消息傳遞起到路由作用;
所述模擬器還包括虛擬設(shè)備,所述虛擬設(shè)備由其所在的模擬器調(diào)用;所述 虛擬設(shè)備是一種模擬技術(shù)領(lǐng)域通用的虛擬設(shè)備。
對(duì)于模擬器而言,此虛擬設(shè)備是其組成部分,虛擬設(shè)備可以利用模擬器的 資源;對(duì)于代理進(jìn)程模塊而言,虛擬設(shè)備是模擬器的代理人,通過控制虛擬設(shè) 備可以間接控制模擬器。
所述目標(biāo)機(jī)操作系統(tǒng)模塊,用于運(yùn)行目標(biāo)機(jī)進(jìn)程;
所述目標(biāo)機(jī)操作系統(tǒng)模塊,既可以根據(jù)所述模擬器的不同類型實(shí)現(xiàn)不同的 目標(biāo)機(jī)操作系統(tǒng)模塊,也可以實(shí)現(xiàn)相同的目標(biāo)機(jī)操作系統(tǒng)。
所述目標(biāo)機(jī)操作系統(tǒng)模塊還包括驅(qū)動(dòng)程序模塊和后臺(tái)進(jìn)程模塊。 所述驅(qū)動(dòng)程序模塊位于目標(biāo)機(jī)操作系統(tǒng)模塊中,負(fù)責(zé)驅(qū)動(dòng)程序與目標(biāo)機(jī)進(jìn) 程直接通信。為了使軟硬件方便溝通,在目標(biāo)機(jī)操作系統(tǒng)中需要為模擬器中的虛擬設(shè)備 編寫驅(qū)動(dòng)程序供驅(qū)動(dòng)程序模塊調(diào)用,消息可以通過驅(qū)動(dòng)程序在虛擬設(shè)備和驅(qū)動(dòng) 程序模塊之間自由傳遞。
另外,可以在目標(biāo)機(jī)操作系統(tǒng)之上通過后臺(tái)進(jìn)程模塊啟動(dòng)一個(gè)后臺(tái)進(jìn)程
(demon進(jìn)程)。通過后臺(tái)進(jìn)程可以實(shí)現(xiàn)對(duì)目標(biāo)機(jī)進(jìn)程的創(chuàng)建和銷毀等操作。 所述代理進(jìn)程模塊,負(fù)責(zé)與虛擬設(shè)備直接通信。
所述系統(tǒng)主控進(jìn)程模塊,通過系統(tǒng)主控進(jìn)程負(fù)責(zé)將控制命令傳遞給所述管 理進(jìn)程模塊和代理進(jìn)程模塊,實(shí)現(xiàn)全局的控制;
所述進(jìn)程庫,主要用于負(fù)責(zé)系統(tǒng)請(qǐng)求的創(chuàng)建、重組、轉(zhuǎn)發(fā)等與通信相關(guān)的 操作,也稱作通信庫。它可以鏈接到所述驅(qū)動(dòng)程序中或應(yīng)用程序中,當(dāng)鏈接到 應(yīng)用程序中時(shí)可以稱作應(yīng)用程序庫。應(yīng)用程序利用應(yīng)用程序庫實(shí)現(xiàn)與模擬器模 擬的目標(biāo)機(jī)進(jìn)程通信。
所述系統(tǒng)主控進(jìn)程、所述代理進(jìn)程以及所述管理進(jìn)程都被編譯成一般意義 上的可執(zhí)行文件,可以獨(dú)立運(yùn)行;所述虛擬設(shè)備、所述進(jìn)程庫以及所述驅(qū)動(dòng)程 序都被編譯成通信庫。
所述后臺(tái)進(jìn)程既可以是一般意義上的可執(zhí)行程序也可以是通信庫。如果是 作為可執(zhí)行程序,那么后臺(tái)進(jìn)程運(yùn)行在目標(biāo)機(jī)操作系統(tǒng)上,以用戶態(tài)執(zhí)行;如 果后臺(tái)進(jìn)程是作為通信庫,則鏈接到指定的目標(biāo)機(jī)進(jìn)程中形成運(yùn)行在目標(biāo)機(jī)操 作系統(tǒng)中的核心態(tài)程序。
圖7是本發(fā)明聯(lián)合模擬系統(tǒng)另一實(shí)施例的組成結(jié)構(gòu)圖,參照?qǐng)D7,作為一 種可實(shí)施方式,本發(fā)明所述的聯(lián)合模擬系統(tǒng)還可以以多個(gè)物理計(jì)算機(jī)的形式組 成,所述聯(lián)合模擬系統(tǒng)包括至少兩臺(tái)物理計(jì)算機(jī)、系統(tǒng)主控進(jìn)程模塊和進(jìn)程 庫,其中
至少一臺(tái)物理計(jì)算機(jī),包括宿主機(jī)系統(tǒng)模塊和管理進(jìn)程模塊,其中 所述宿主機(jī)系統(tǒng)模塊,用于直接運(yùn)行宿主機(jī)進(jìn)程,而不獲取該宿主機(jī)進(jìn)程
的具體行為的特征信息;
本發(fā)明中,在宿主機(jī)系統(tǒng)模塊上運(yùn)行的宿主機(jī)進(jìn)程中包括SHELL程序的進(jìn)
程,所述SHELL程序是一種特殊的應(yīng)用程序,僅用于發(fā)出控制命令;SHELL程
序由用戶根據(jù)所需的功能自行編寫,是根據(jù)用戶輸入的命令調(diào)用系統(tǒng)提供的接□。所述管理進(jìn)程模塊,負(fù)責(zé)管理宿主機(jī)進(jìn)程,對(duì)宿主機(jī)進(jìn)程之間的消息傳遞 起到路由作用;
至少一臺(tái)物理計(jì)算機(jī),包括 一種或多種類型的模擬器,代理進(jìn)程模塊, 以及目標(biāo)機(jī)操作系統(tǒng)模塊,其中
所述模擬器,用于模擬目標(biāo)機(jī),并獲取所述目標(biāo)機(jī)上運(yùn)行的目標(biāo)機(jī)進(jìn)程的 具體行為的特征信息;
所述模擬器包括一個(gè)虛擬設(shè)備;
所述代理進(jìn)程模塊,用于管理其所在物理計(jì)算機(jī)上的模擬器,對(duì)所述模擬 器或在模擬器上運(yùn)行的目標(biāo)機(jī)進(jìn)程之間的消息傳遞起到路由作用;
所述目標(biāo)機(jī)操作系統(tǒng)模塊,用于運(yùn)行目標(biāo)機(jī)進(jìn)程。
所述目標(biāo)機(jī)操作系統(tǒng)模塊,既可以根據(jù)目標(biāo)機(jī)進(jìn)程的具體行為的類型相應(yīng) 改變目標(biāo)機(jī)操作系統(tǒng),也可以不改變目標(biāo)機(jī)操作系統(tǒng)。
所述目標(biāo)機(jī)操作系統(tǒng)模塊,包括后臺(tái)進(jìn)程模塊和驅(qū)動(dòng)程序模塊。
系統(tǒng)主控進(jìn)程模塊,可位于任意一臺(tái)所述物理計(jì)算機(jī)上,通過系統(tǒng)主控進(jìn) 程將控制命令傳遞給代理進(jìn)程模塊和管理進(jìn)程模塊,實(shí)現(xiàn)全局的控制。
進(jìn)程庫,位于每一臺(tái)所述物理計(jì)算機(jī)上,用于負(fù)責(zé)請(qǐng)求的創(chuàng)建、重組、轉(zhuǎn) 發(fā)等與通信相關(guān)的操作。
包含多個(gè)物理計(jì)算機(jī)的聯(lián)合模擬系統(tǒng)中的各組成部分之間的關(guān)系和通信 方式與包含一個(gè)物理計(jì)算機(jī)的聯(lián)合模擬系統(tǒng)的情況一致,在此不再一一贅述。
本發(fā)明一種聯(lián)合模擬系統(tǒng),可以多種形式組成,包括但不限于以上所述兩 種方式,用戶可根據(jù)具體需要,決定聯(lián)合模擬系統(tǒng)的組成形式。
圖2是本發(fā)明聯(lián)合模擬系統(tǒng)的另一實(shí)施例說明圖,參照?qǐng)D2,作為一種實(shí) 施方式,在這個(gè)聯(lián)合模擬系統(tǒng)虛擬出來的目標(biāo)系統(tǒng)上模擬由6個(gè)應(yīng)用程序的進(jìn) 程構(gòu)成的Li叩ack并行程序。可以看到,如果這六個(gè)應(yīng)用程序的進(jìn)程僅在訪存 模擬器上運(yùn)行,那么由于規(guī)模增加,整個(gè)模擬周期至少是圖1中配置的3倍。 而最終獲取到的信息也僅僅是訪存信息。采用異構(gòu)系統(tǒng)聯(lián)合模擬系統(tǒng)后,將訪 存模擬器和指令時(shí)序模擬器整合在一起后,保證了 一次執(zhí)行后同時(shí)獲取到訪存 行為信息和指令時(shí)序信息。另外,由于將一部分任務(wù)分配給宿主機(jī)快速執(zhí)行, 從而減少了模擬器的模擬規(guī)模,實(shí)現(xiàn)了整體模擬過程的加速。本發(fā)明的聯(lián)合模擬系統(tǒng)將現(xiàn)有的模擬器技術(shù)及通信技術(shù)集成在一起達(dá)到 聯(lián)合模擬的效果,從而達(dá)到了一次執(zhí)行后同時(shí)獲取多種行為的特征信息的目 的;系統(tǒng)內(nèi)部的機(jī)制沒有參與加速,但系統(tǒng)結(jié)構(gòu)保證了參與的模擬器所要模擬 的任務(wù)規(guī)模變小,從而達(dá)到了加速效果。
相應(yīng)于一種聯(lián)合模擬系統(tǒng),本發(fā)明還提供一種聯(lián)合模擬系統(tǒng)的工作方法。 圖3是本發(fā)明聯(lián)合模擬系統(tǒng)的工作方法的流程圖,圖4是聯(lián)合模擬系統(tǒng)中
模塊間關(guān)系示意圖,參照?qǐng)D3、圖4,本發(fā)明聯(lián)合模擬系統(tǒng)的工作方法包括下
列步驟
步驟SIOO,確定聯(lián)合模擬系統(tǒng)中的模擬器的類型并為聯(lián)合模擬系統(tǒng)編寫 任務(wù)分配腳本;
進(jìn)一步地,所述步驟S100,包括下列步驟 步驟110,確定聯(lián)合模擬系統(tǒng)中模擬器的類型;
根據(jù)模擬器模擬目標(biāo)機(jī)進(jìn)程的具體行為,確定模擬器的類型,不同類型的 模擬器獲取不同類型的行為的特征信息,多臺(tái)模擬器共同模擬保證了一次執(zhí)行 后能夠同時(shí)獲取多種行為的特征信息。
舉例說明,若模擬器模擬目標(biāo)機(jī)進(jìn)程的具體行為是訪存行為,則模擬器的 類型是訪存模擬器,獲取到訪存行為的特征信息。
歩驟120,為聯(lián)合模擬系統(tǒng)編寫任務(wù)分配腳本;
為了易于聯(lián)合模擬系統(tǒng)的使用人員配置聯(lián)合模擬系統(tǒng)及系統(tǒng)中每個(gè)模擬 器所負(fù)責(zé)的任務(wù),使用人員只需編寫簡(jiǎn)單的任務(wù)分配腳本,就可以在指定的模 擬器上執(zhí)行所要求的目標(biāo)機(jī)進(jìn)程。
所述配置任務(wù)分配腳本的語法格式如下
物理機(jī)名進(jìn)程類型 子進(jìn)程數(shù)。
如圖4所示, 一個(gè)模擬器的目標(biāo)機(jī)上運(yùn)行三個(gè)應(yīng)用程序,代理進(jìn)程運(yùn)行在
物理機(jī)0上,管理進(jìn)程運(yùn)行于物理機(jī)1和物理機(jī)2上,各管理兩個(gè)應(yīng)用程序。
主控進(jìn)程不會(huì)直接參與應(yīng)用程序的管理,所以這個(gè)配置腳本是 物理機(jī)1 主控進(jìn)程 0
物理機(jī)0代理進(jìn)程 3 物理機(jī)1 管理進(jìn)程1 2 物理機(jī)2管理進(jìn)程2 2歩驟200,根據(jù)任務(wù)分配腳本,啟動(dòng)聯(lián)合模擬系統(tǒng),為聯(lián)合模擬系統(tǒng)中運(yùn) 行的應(yīng)用程序的進(jìn)程統(tǒng)一分配系統(tǒng)進(jìn)程ID,并利用所述任務(wù)分配腳本為聯(lián)合
模擬系統(tǒng)創(chuàng)建并加載、銷毀聯(lián)合模擬系統(tǒng)中運(yùn)行的應(yīng)用程序的進(jìn)程;
根據(jù)任務(wù)分配腳本啟動(dòng)聯(lián)合模擬系統(tǒng),在對(duì)應(yīng)物理計(jì)算機(jī)上運(yùn)行宿主機(jī)的 操作系統(tǒng)、代理進(jìn)程、管理進(jìn)程、目標(biāo)機(jī)操作系統(tǒng)和系統(tǒng)主控進(jìn)程。
進(jìn)一步地,所述步驟S200包括下列步驟
步驟S210,為聯(lián)合模擬系統(tǒng)中運(yùn)行的應(yīng)用程序的進(jìn)程統(tǒng)一分配系統(tǒng)進(jìn)程
ID;
為了便于支持模擬器整合到基于異構(gòu)系統(tǒng)的聯(lián)合模擬系統(tǒng)中,聯(lián)合模擬系 統(tǒng)需要提供單一進(jìn)程空間,即運(yùn)行在聯(lián)合模擬系統(tǒng)上的應(yīng)用程序的進(jìn)程被統(tǒng)一
分配系統(tǒng)進(jìn)程ID,運(yùn)行在聯(lián)合模擬系統(tǒng)上的應(yīng)用程序的進(jìn)程通過系統(tǒng)進(jìn)程ID 進(jìn)行合作而無需關(guān)心進(jìn)程所處的環(huán)境(即所述應(yīng)用程序的進(jìn)程是在宿主機(jī)系統(tǒng) 上運(yùn)行,還是在模擬機(jī)的操作系統(tǒng)上運(yùn)行)。
為了支持單一進(jìn)程空間,聯(lián)合模擬系統(tǒng)首先需要知道進(jìn)程空間的范圍。由 于每個(gè)集成到聯(lián)合模擬系統(tǒng)中的模擬器本身也存在一個(gè)進(jìn)程空間范圍,所以聯(lián) 合模擬系統(tǒng)需要從更高的層次管理進(jìn)程空間,從而形成一個(gè)全局進(jìn)程空間到局 部進(jìn)程空間的映射關(guān)系。
所述模擬器為現(xiàn)有技術(shù)中的模擬器,包括指令模擬器、訪存模擬器、指 令時(shí)序模擬器等模擬器。
圖5是本發(fā)明中全部進(jìn)程空間的映射關(guān)系圖,下面以圖5為例來說明此映
射關(guān)系。
假設(shè)指令模擬器的進(jìn)程空間范圍是1 N,訪存模擬器的空間范圍是1 M, 而宿主機(jī)上允許的進(jìn)程空間是1 P,這些信息通過基于異構(gòu)系統(tǒng)的聯(lián)合模擬 系統(tǒng)的任務(wù)分配腳本傳遞給基于異構(gòu)系統(tǒng)的聯(lián)合模擬系統(tǒng)。那么基于異構(gòu)系統(tǒng) 的聯(lián)合模擬系統(tǒng)可以提供一個(gè)范圍在l (M+N+P)的進(jìn)程空間。
步驟220,利用所述任務(wù)分配腳本為聯(lián)合模擬系統(tǒng)創(chuàng)建并加載、銷毀聯(lián)合 模擬系統(tǒng)中運(yùn)行的應(yīng)用程序的進(jìn)程;
所述進(jìn)程的創(chuàng)建并加載和銷毀根據(jù)上述任務(wù)分配腳本實(shí)現(xiàn),所述步驟 S220包括下列步驟
步驟S221,使用任務(wù)分配腳本,創(chuàng)建并加載運(yùn)行在聯(lián)合模擬系統(tǒng)上的應(yīng)用程序的進(jìn)程;
所述進(jìn)程又分為宿主機(jī)進(jìn)程和目標(biāo)機(jī)進(jìn)程兩類,模擬器只獲取所述目標(biāo)機(jī) 進(jìn)程的具體行為的特征信息,而不獲取宿主機(jī)進(jìn)程的具體行為的特征信息,從 而減少了模擬器的模擬規(guī)模,實(shí)現(xiàn)了整體模擬過程的加速。
步驟S2211,使用任務(wù)分配腳本創(chuàng)建并加載宿主機(jī)進(jìn)程;
用戶輸入創(chuàng)建宿主機(jī)進(jìn)程請(qǐng)求,通過SHELL程序?qū)?chuàng)建請(qǐng)求提交給相應(yīng)的 管理進(jìn)程,該管理進(jìn)程根據(jù)任務(wù)分配腳本確定創(chuàng)建的宿主機(jī)進(jìn)程對(duì)應(yīng)的管理進(jìn) 程,所以將創(chuàng)建請(qǐng)求轉(zhuǎn)交給與創(chuàng)建的宿主機(jī)進(jìn)程對(duì)應(yīng)的管理進(jìn)程,該管理進(jìn)程 利用宿主機(jī)系統(tǒng)提供的進(jìn)程創(chuàng)建和加載機(jī)制實(shí)現(xiàn)宿主機(jī)進(jìn)程的創(chuàng)建和加載。
例如,如圖4所示,創(chuàng)建宿主機(jī)的應(yīng)用程序4的進(jìn)程時(shí),SHELL程序?qū)?chuàng) 建請(qǐng)求提交給管理進(jìn)程1,管理進(jìn)程1根據(jù)任務(wù)分配腳本確定應(yīng)用程序4由管 理進(jìn)程2管理,所以將創(chuàng)建請(qǐng)求轉(zhuǎn)交給管理進(jìn)程2。管理進(jìn)程2利用宿主機(jī)操 作系統(tǒng)提供的進(jìn)程創(chuàng)建機(jī)制實(shí)現(xiàn)應(yīng)用程序4的進(jìn)程的創(chuàng)建和加載。
步驟S2212,使用任務(wù)分配腳本創(chuàng)建并加載目標(biāo)機(jī)進(jìn)程;
用戶輸入創(chuàng)建目標(biāo)機(jī)進(jìn)程的請(qǐng)求,通過SHELL程序?qū)?chuàng)建請(qǐng)求傳遞給將要 運(yùn)行目標(biāo)機(jī)進(jìn)程的模擬器對(duì)應(yīng)的代理進(jìn)程,該代理進(jìn)程則將目標(biāo)機(jī)進(jìn)程創(chuàng)建請(qǐng) 求轉(zhuǎn)交給該模擬器的虛擬設(shè)備。虛擬設(shè)備通過中斷程序通知驅(qū)動(dòng)程序提取目標(biāo) 機(jī)進(jìn)程創(chuàng)建請(qǐng)求,而驅(qū)動(dòng)程序則將提取的目標(biāo)機(jī)進(jìn)程創(chuàng)建請(qǐng)求轉(zhuǎn)給目標(biāo)機(jī)的后 臺(tái)進(jìn)程。由于目標(biāo)機(jī)的后臺(tái)進(jìn)程根據(jù)目標(biāo)機(jī)操作系統(tǒng)特點(diǎn)而設(shè)計(jì),所以可以利 用目標(biāo)機(jī)操作系統(tǒng)的機(jī)制創(chuàng)建目標(biāo)機(jī)進(jìn)程。
例如,如圖4所示,創(chuàng)建目標(biāo)機(jī)的應(yīng)用程序2的過程與消息傳遞的過程類 似,只是驅(qū)動(dòng)程序最終將創(chuàng)建請(qǐng)求發(fā)送給后臺(tái)進(jìn)程,由后臺(tái)進(jìn)程利用目標(biāo)機(jī)操 作系統(tǒng)的機(jī)制完成目標(biāo)機(jī)的應(yīng)用程序2的進(jìn)程創(chuàng)建與加載。
目標(biāo)機(jī)操作系統(tǒng)的現(xiàn)有機(jī)制支持進(jìn)程創(chuàng)建后的加載,所以后臺(tái)進(jìn)程將直接 根據(jù)請(qǐng)求中的應(yīng)用程序名稱和參數(shù)調(diào)用目標(biāo)機(jī)操作系統(tǒng)的函數(shù)完成進(jìn)程的加 載。
加載目標(biāo)機(jī)進(jìn)程的時(shí)候,分為兩種情況
一種情況是如果目標(biāo)機(jī)進(jìn)程未指定模擬器,聯(lián)合模擬系統(tǒng)將從目標(biāo)機(jī)進(jìn) 程空間中隨機(jī)選取一個(gè)系統(tǒng)進(jìn)程ID分配給該目標(biāo)機(jī)進(jìn)程,相當(dāng)于該目標(biāo)機(jī)進(jìn) 程加載到隨機(jī)選擇的模擬器上運(yùn)行,那么相應(yīng)改變?nèi)蝿?wù)分配腳本中的數(shù)據(jù)。另一種情況是如果目標(biāo)機(jī)進(jìn)程指定模擬器,那么聯(lián)合模擬系統(tǒng)將在該模 擬器映射的進(jìn)程空間范圍內(nèi)為該目標(biāo)機(jī)進(jìn)程選擇一個(gè)系統(tǒng)進(jìn)程ID,于是在加 載的時(shí)候該目標(biāo)機(jī)進(jìn)程將被加載到指定的模擬器上,同樣相應(yīng)改變?nèi)蝿?wù)分配腳 本中的數(shù)據(jù)。
步驟S222,使用任務(wù)分配腳本,銷毀運(yùn)行在聯(lián)合模擬系統(tǒng)上的應(yīng)用程序 的進(jìn)程;
所述進(jìn)程銷毀過程與創(chuàng)建過程一致,只是傳遞的請(qǐng)求類型是銷毀請(qǐng)求。
步驟S300,根據(jù)任務(wù)分配腳本和系統(tǒng)進(jìn)程ID,實(shí)現(xiàn)所述聯(lián)合模擬系統(tǒng)中 運(yùn)行的應(yīng)用程序的進(jìn)程自由通信;
為了方便聯(lián)合模擬系統(tǒng)中運(yùn)行的應(yīng)用程序的進(jìn)程自由通信,聯(lián)合模擬系統(tǒng) 中所有運(yùn)行的進(jìn)程以進(jìn)程樹結(jié)構(gòu)組織,該進(jìn)程樹與任務(wù)分配腳本對(duì)應(yīng)。圖6 是本發(fā)明中進(jìn)程的樹形結(jié)構(gòu)圖,參照?qǐng)D6,其中主控進(jìn)程位于根節(jié)點(diǎn),葉節(jié)點(diǎn) 就是運(yùn)行在基于異構(gòu)系統(tǒng)的聯(lián)合模擬系統(tǒng)中的各種應(yīng)用程序的進(jìn)程,其它節(jié)點(diǎn) 對(duì)應(yīng)的是模擬器的虛擬設(shè)備和代理進(jìn)程(或管理進(jìn)程)。進(jìn)程樹結(jié)構(gòu)有效地將 異構(gòu)系統(tǒng)聯(lián)合模擬框架中所有進(jìn)程統(tǒng)一組織在一起。根據(jù)進(jìn)程樹可以快速確定 兩個(gè)葉節(jié)點(diǎn)之間的路徑,為消息的路由提供了基礎(chǔ)。
數(shù)據(jù)的路由策略根據(jù)進(jìn)程樹結(jié)構(gòu)而確定,其路由遵循兩個(gè)原則
1. 如果當(dāng)前進(jìn)程與目標(biāo)進(jìn)程具有兄弟關(guān)系,則將數(shù)據(jù)直接發(fā)送給目標(biāo)進(jìn)程;
2. 否則,將數(shù)據(jù)直接發(fā)送給父進(jìn)程,由父進(jìn)程轉(zhuǎn)發(fā)。 根據(jù)此路由策略,數(shù)據(jù)的發(fā)送鏈路可以很容易且靈活的確定。 所述統(tǒng)一通信機(jī)制分為兩個(gè)層面首先是所述系統(tǒng)主控進(jìn)程、所述代理進(jìn)
程、所述管理進(jìn)程之間的通信,由于這些模塊運(yùn)行于物理機(jī)上,所以可以利用 現(xiàn)有比較成熟的通信庫,例如MPICH通信庫;其次是宿主機(jī)進(jìn)程之間、目標(biāo)機(jī) 的進(jìn)程之間、宿主機(jī)與目標(biāo)機(jī)的進(jìn)程之間通信。又分為以下幾種情況
1. 位于同一宿主機(jī)上的不同宿主機(jī)進(jìn)程之間進(jìn)行通信;
2. 位于同一目標(biāo)機(jī)上的不同目標(biāo)機(jī)進(jìn)程之間進(jìn)行通信; 上述兩種可以利用現(xiàn)有的通信技術(shù)實(shí)現(xiàn),例如共享內(nèi)存通信、socket套
接字通信。
3. 位于不同目標(biāo)機(jī)上的目標(biāo)機(jī)進(jìn)程之伺進(jìn)行通信;4. 位于不同宿主機(jī)上的宿主機(jī)進(jìn)程之間進(jìn)行通信;
例如,如圖4所示,應(yīng)用程序3和應(yīng)用程序4,他們通信必須通過管理進(jìn)
程中轉(zhuǎn)。應(yīng)用程序3與應(yīng)用程序4通信時(shí),首先將請(qǐng)求發(fā)送給管理進(jìn)程l,然 后由管理進(jìn)程1找到應(yīng)用程序4的管理進(jìn)程,將請(qǐng)求轉(zhuǎn)發(fā)給該管理進(jìn)程,最后 才到達(dá)應(yīng)用程序4。
5. 位于宿主機(jī)上宿主機(jī)進(jìn)程與位于目標(biāo)機(jī)上的目標(biāo)機(jī)進(jìn)程之間進(jìn)行通信。 例W,如圖4所示,應(yīng)用程序3與應(yīng)用程序2通信,由于他們分別位于宿
主機(jī)和目標(biāo)機(jī)上,所以請(qǐng)求先由管理進(jìn)程l轉(zhuǎn)交給代理進(jìn)程。由于代理進(jìn)程與 虛擬設(shè)備位于相同宿主機(jī)上,所以可以利用現(xiàn)有技術(shù)直接通信。請(qǐng)求由代理進(jìn) 程轉(zhuǎn)到虛擬設(shè)備后,將利用模擬器系統(tǒng)自身的通信機(jī)制將請(qǐng)求提交給目標(biāo)機(jī)操 作系統(tǒng)的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序負(fù)責(zé)將請(qǐng)求最終提交給應(yīng)用程序2。
步驟S310,位于不同目標(biāo)機(jī)上的目標(biāo)機(jī)進(jìn)程之間進(jìn)行通信時(shí),具體過程 如下
步驟S311,發(fā)送端的目標(biāo)機(jī)進(jìn)程,將數(shù)據(jù)提交給已經(jīng)編譯到發(fā)送端目標(biāo) 機(jī)的通信庫;
步驟S312,所述通信庫將數(shù)據(jù)封裝成可以用于轉(zhuǎn)發(fā)的數(shù)據(jù)包,然后將數(shù) 據(jù)包提交給發(fā)送端的驅(qū)動(dòng)程序;
步驟S313,所述驅(qū)動(dòng)程序不會(huì)對(duì)數(shù)據(jù)包進(jìn)一步處理,直接傳遞給發(fā)送端 的模擬器的虛擬設(shè)備;
步驟S314,所述虛擬設(shè)備需要根據(jù)傳輸網(wǎng)絡(luò)的情況將大數(shù)據(jù)包劃分為若 干小數(shù)據(jù)包然后再傳遞給相應(yīng)代理進(jìn)程(即與該模擬器位于相同物理計(jì)算機(jī)上 的代理進(jìn)程);
由于在后續(xù)傳輸中,位于不同物理計(jì)算機(jī)上的代理進(jìn)程可以一次接收的最 大數(shù)據(jù)包長(zhǎng)度不同,所述虛擬設(shè)備在將數(shù)據(jù)發(fā)送給相應(yīng)代理進(jìn)程前需要根據(jù)傳 輸網(wǎng)絡(luò)的情況將大數(shù)據(jù)包劃分為若干小數(shù)據(jù)包(即數(shù)據(jù)包分片)。
步驟S315,所述代理進(jìn)程根據(jù)聯(lián)合模擬系統(tǒng)的進(jìn)程樹確定將請(qǐng)求轉(zhuǎn)交的 代理進(jìn)程,然后轉(zhuǎn)發(fā)數(shù)據(jù)包分片;
步驟S316,所述代理進(jìn)程接收到數(shù)據(jù)包分片后,根據(jù)聯(lián)合模擬系統(tǒng)的進(jìn) 程樹確定將請(qǐng)求轉(zhuǎn)交的代理進(jìn)程,然后轉(zhuǎn)發(fā)數(shù)據(jù)包分片;
步驟S317,接收數(shù)據(jù)包分片的代理進(jìn)程將數(shù)據(jù)包分片轉(zhuǎn)發(fā)給根據(jù)目的系統(tǒng)進(jìn)程ID找到地目標(biāo)機(jī)進(jìn)程所在的模擬器的虛擬設(shè)備,該虛擬設(shè)備此時(shí)不會(huì) 重組數(shù)據(jù)包分片,而是將數(shù)據(jù)包分片通知給接收端的驅(qū)動(dòng)程序;
步驟S318,接收端的驅(qū)動(dòng)程序接收數(shù)據(jù)包分片并將數(shù)據(jù)包分片重組回原 來的數(shù)據(jù)包提交給接收端的通信庫;
步驟S319,接收端通信庫接收到數(shù)據(jù)包后將數(shù)據(jù)包提交給接收端的根據(jù) 目的系統(tǒng)進(jìn)程ID找到的目標(biāo)機(jī)進(jìn)程,完成數(shù)據(jù)傳輸過程。
步驟S320,位于不同宿主機(jī)上的宿主機(jī)進(jìn)程之間進(jìn)行通信;
步驟S321,發(fā)送端的宿主機(jī)進(jìn)程,將數(shù)據(jù)提交給已經(jīng)編譯到發(fā)送端的宿 主機(jī)的通信庫;
歩驟S322,所述通信庫將數(shù)據(jù)封裝成用于轉(zhuǎn)發(fā)的數(shù)據(jù)包,然后將數(shù)據(jù)包 提交給發(fā)送端的宿主機(jī)的管理進(jìn)程;
步驟S323,所述管理進(jìn)程根據(jù)聯(lián)合模擬系統(tǒng)的進(jìn)程樹確定將請(qǐng)求轉(zhuǎn)交的 管理進(jìn)程,然后轉(zhuǎn)發(fā)數(shù)據(jù)包;
步驟S324,所述管理進(jìn)程接收數(shù)據(jù)包后將數(shù)據(jù)包提交給接收端的進(jìn)程庫;
步驟S325,所述接收端的通信庫接收到數(shù)據(jù)包后將數(shù)據(jù)提交給接收端的 根據(jù)目的系統(tǒng)進(jìn)程ID找到的宿主機(jī)進(jìn)程,完成數(shù)據(jù)傳輸過程。
步驟S330,位于宿主機(jī)上宿主機(jī)進(jìn)程與位于目標(biāo)機(jī)上的目標(biāo)機(jī)進(jìn)程之間 進(jìn)行通信。
步驟S331,發(fā)送端的宿主機(jī)進(jìn)程,將數(shù)據(jù)提交給已經(jīng)編譯到發(fā)送端的宿 主機(jī)的通信庫;
步驟S332,所述通信庫將數(shù)據(jù)封裝成用于轉(zhuǎn)發(fā)的數(shù)據(jù)包,然后將數(shù)據(jù)包 提交給發(fā)送端的宿主機(jī)的管理進(jìn)程;
步驟S333,所述管理進(jìn)程根據(jù)聯(lián)合模擬系統(tǒng)的進(jìn)程樹確定將轉(zhuǎn)發(fā)的代理 進(jìn)程,并根據(jù)傳輸網(wǎng)絡(luò)的情況將大數(shù)據(jù)包劃分為若干數(shù)據(jù)包分片轉(zhuǎn)發(fā)給確定的 代理進(jìn)程;
步驟S334,所述代理進(jìn)程接收數(shù)據(jù)包分片,并根據(jù)目的系統(tǒng)進(jìn)程ID找到 目標(biāo)機(jī)進(jìn)程所在模擬器的虛擬設(shè)備,并轉(zhuǎn)發(fā)數(shù)據(jù)包分片;
步驟S335,所述虛擬設(shè)備此時(shí)不會(huì)重組數(shù)據(jù)包分片,而是將數(shù)據(jù)包分片 通知給接收端的目標(biāo)機(jī)操作系統(tǒng)的驅(qū)動(dòng)程序;
步驟S336,所述驅(qū)動(dòng)程序接收數(shù)據(jù)包分片并將數(shù)據(jù)包分片重組回原來的
24數(shù)據(jù)包提交給接收端的進(jìn)程庫;
步驟S337,所述接收端的進(jìn)程庫將接收的數(shù)據(jù)包提交給根據(jù)目的系統(tǒng)進(jìn) 程ID找到的目標(biāo)機(jī)進(jìn)程,完成數(shù)據(jù)傳輸過程。
本發(fā)明的有益效果在于
1. 本發(fā)明一種聯(lián)合模擬系統(tǒng)及其工作方法,具有很強(qiáng)的靈活性,可以支持 多種類型執(zhí)行應(yīng)用程序的資源,易于添加新的資源,為以后的擴(kuò)展提供了便利
條件;
2. 本發(fā)明一種聯(lián)合模擬系統(tǒng)及其工作方法,具有較高的可擴(kuò)展性,各個(gè)進(jìn) 程各自相對(duì)獨(dú)立,不完全依賴于根節(jié)點(diǎn),保證了系統(tǒng)的可擴(kuò)展性;
3. 本發(fā)明一種聯(lián)合模擬系統(tǒng)及其工作方法,具有較高的穩(wěn)定性,每個(gè)程序 執(zhí)行在獨(dú)立的進(jìn)程空間中,不會(huì)因?yàn)槟硞€(gè)進(jìn)程崩潰而導(dǎo)致整個(gè)模擬失??;
4. 本發(fā)明一種聯(lián)合模擬系統(tǒng)及其工作方法,能夠既快速又詳細(xì)地獲取多 種行為的特征信息。
通過結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的描述,本發(fā)明的其它方面及特征對(duì)本 領(lǐng)域的技術(shù)人員而言是顯而易見的。
以上對(duì)本發(fā)明的具體實(shí)施例進(jìn)行了描述和說明,這些實(shí)施例應(yīng)被認(rèn)為其只 是示例性的,并不用于對(duì)本發(fā)明進(jìn)行限制,本發(fā)明應(yīng)根據(jù)所附的權(quán)利要求進(jìn)行 解釋。
權(quán)利要求
1、一種聯(lián)合模擬系統(tǒng),用于加速模擬異構(gòu)系統(tǒng)中的并行應(yīng)用程序的進(jìn)程并獲取多種行為的特征信息,其特征在于,包括至少兩臺(tái)物理計(jì)算機(jī)、系統(tǒng)主控進(jìn)程模塊和進(jìn)程庫,其中至少一臺(tái)物理計(jì)算機(jī),包括宿主機(jī)系統(tǒng)模塊和管理進(jìn)程模塊,其中所述宿主機(jī)系統(tǒng)模塊,用于運(yùn)行宿主機(jī)進(jìn)程;所述管理進(jìn)程模塊,用于管理其所在物理計(jì)算機(jī)上的宿主機(jī)進(jìn)程;至少一臺(tái)物理計(jì)算機(jī),包括一種或多種類型的模擬器,代理進(jìn)程模塊,以及目標(biāo)機(jī)操作系統(tǒng)模塊,其中所述模擬器,用于模擬目標(biāo)機(jī),并獲取在所述目標(biāo)機(jī)上運(yùn)行的目標(biāo)機(jī)進(jìn)程的具體行為的特征信息;所述代理進(jìn)程模塊,用于管理其所在物理計(jì)算機(jī)上的所述模擬器;所述目標(biāo)機(jī)操作系統(tǒng)模塊,用于運(yùn)行目標(biāo)機(jī)進(jìn)程;系統(tǒng)主控進(jìn)程模塊,位于任意一臺(tái)所述物理計(jì)算機(jī)上,用于將控制命令傳遞給所述代理進(jìn)程模塊和所述管理進(jìn)程模塊;進(jìn)程庫,位于每一臺(tái)所述物理計(jì)算機(jī)上,用于聯(lián)合模擬系統(tǒng)的通信操作。
2、 根據(jù)權(quán)利要求1所述的聯(lián)合模擬系統(tǒng),其特征在于,所述模擬器,包 括一虛擬設(shè)備,所述虛擬設(shè)備使用該虛擬設(shè)備所在模擬器的資源;所述虛擬設(shè) 備所在物理計(jì)算機(jī)上的代理進(jìn)程模塊通過控制該虛擬設(shè)備間接控制所述模擬巡 益o
3、 根據(jù)權(quán)利要求2所述的聯(lián)合模擬系統(tǒng),其特征在于,所述目標(biāo)機(jī)操作系統(tǒng)模塊包括驅(qū)動(dòng)程序模塊和后臺(tái)進(jìn)程模塊,其中所述驅(qū)動(dòng)程序模塊,用于在所述虛擬設(shè)備和目標(biāo)機(jī)之間傳遞消息;所述后臺(tái)進(jìn)程模塊,用于控制該后臺(tái)進(jìn)程模塊所在的目標(biāo)機(jī)操作系統(tǒng)模塊 上運(yùn)行的目標(biāo)機(jī)進(jìn)程。
4、 根據(jù)權(quán)利要求1所述的聯(lián)合模擬系統(tǒng),其特征在于,所述目標(biāo)機(jī)操作系統(tǒng)模塊對(duì)不同類型的模擬器采用相同的目標(biāo)機(jī)操作系統(tǒng),或根據(jù)所述模擬器 的不同類型選擇不同的目標(biāo)機(jī)操作系統(tǒng)。
5、 一種聯(lián)合模擬系統(tǒng),用于加速模擬異構(gòu)系統(tǒng)中的并行應(yīng)用程序的進(jìn)程 并獲取多種行為的特征信息,其特征在于,包括一臺(tái)物理計(jì)算機(jī),其特征在于,所述物理計(jì)算機(jī)包括宿主機(jī)系統(tǒng)模塊、管理進(jìn)程模塊、模擬器、代理進(jìn)程模 塊、目標(biāo)機(jī)操作系統(tǒng)模塊、系統(tǒng)主控進(jìn)程模塊和進(jìn)程庫,其中所述宿主機(jī)系統(tǒng)模塊,用于運(yùn)行宿主機(jī)進(jìn)程;所述管理進(jìn)程模塊,用于管理宿主機(jī)進(jìn)程;所述模擬器,用于模擬目標(biāo)機(jī),并獲取在所述目標(biāo)機(jī)上運(yùn)行的目標(biāo)機(jī)進(jìn)程的具體行為的特征信息;所述代理進(jìn)程模塊,用于管理所述模擬器; 所述目標(biāo)機(jī)操作系統(tǒng)模塊,用于運(yùn)行目標(biāo)機(jī)進(jìn)程;所述系統(tǒng)主控進(jìn)程模塊,用于將控制命令傳遞給所述代理進(jìn)程模塊和所述 管理進(jìn)程模塊;所述進(jìn)程庫,用于代理進(jìn)程模塊和所述管理進(jìn)程模塊通信操作。
6、 根據(jù)權(quán)利要求5所述的聯(lián)合模擬系統(tǒng),其特征在于,所述模擬器,包 括一虛擬設(shè)備,所述虛擬設(shè)備使用該虛擬設(shè)備所在模擬器的資源;所述代理進(jìn) 程模塊通過控制該虛擬設(shè)備間接控制所述模擬器。
7、 根據(jù)權(quán)利要求6所述的聯(lián)合模擬系統(tǒng),其特征在于,所述目標(biāo)機(jī)操作系統(tǒng)模塊包括驅(qū)動(dòng)程序模塊和后臺(tái)進(jìn)程模塊,其中-所述驅(qū)動(dòng)程序模塊,用于在所述虛擬設(shè)備和目標(biāo)機(jī)之間傳遞消息; 所述后臺(tái)進(jìn)程模塊,用于控制所述目標(biāo)機(jī)操作系統(tǒng)模塊上運(yùn)行的目標(biāo)機(jī)進(jìn)程。
8、 根據(jù)權(quán)利要求5所述的聯(lián)合模擬系統(tǒng),其特征在于,所述目標(biāo)機(jī)操作 系統(tǒng)模塊,根據(jù)所述模擬器的類型確定目標(biāo)機(jī)操作系統(tǒng)。
9、 根據(jù)權(quán)利要求1或5所述的聯(lián)合模擬系統(tǒng)系統(tǒng),其特征在于,所述宿 主機(jī)進(jìn)程,包括SHELL程序的進(jìn)程,用于發(fā)出控制命令;所述Sffi;LL程序由用 戶根據(jù)所需的功能編寫,是根據(jù)用戶輸入的命令調(diào)用系統(tǒng)提供的接口。
10、 一種應(yīng)用于權(quán)利要求1至10任一所述的聯(lián)合模擬系統(tǒng)的工作方法, 其特征在于,包括下列步驟步驟A、為聯(lián)合模擬系統(tǒng)編寫任務(wù)分配腳本;步驟B、根據(jù)所述任務(wù)分配腳本,啟動(dòng)聯(lián)合模擬系統(tǒng),為聯(lián)合模擬系統(tǒng)中 運(yùn)行的應(yīng)用程序的進(jìn)程統(tǒng)一分配系統(tǒng)進(jìn)程ID,并利用所述任務(wù)分配腳本為聯(lián) 合模擬系統(tǒng)創(chuàng)建并加載、銷毀聯(lián)合模擬系統(tǒng)中運(yùn)行的應(yīng)用程序的進(jìn)程;步驟C、根據(jù)所述任務(wù)分配腳本和所述系統(tǒng)進(jìn)程ID,實(shí)現(xiàn)所述聯(lián)合模擬系 統(tǒng)中運(yùn)行的應(yīng)用程序的進(jìn)程自由通信。
11、 根據(jù)權(quán)利要求10所述的聯(lián)合模擬系統(tǒng)的工作方法,其特征在于,所 述步驟B包括下列步驟步驟Bl、為聯(lián)合模擬系統(tǒng)中運(yùn)行的應(yīng)用程序的進(jìn)程統(tǒng)一分配系統(tǒng)進(jìn)程ID;步驟B2、利用所述任務(wù)分配腳本為聯(lián)合模擬系統(tǒng)創(chuàng)建并加載、銷毀聯(lián)合模擬系統(tǒng)中運(yùn)行的應(yīng)用程序的進(jìn)程。
12、 根據(jù)權(quán)利要求ll所述的聯(lián)合模擬系統(tǒng)的工作方法,其特征在于,步 驟B1中,所述統(tǒng)一分配系統(tǒng)進(jìn)程ID,需要確定進(jìn)程空間范圍,所述確定進(jìn)程空間范圍的步驟包括若一進(jìn)程空間范圍是1 N,另一進(jìn)程空間范圍是1 M,而宿主機(jī)上的進(jìn)程空間是1 p,那么所述聯(lián)合模擬系統(tǒng)能夠提供范圍在1 (M+N+P)的進(jìn)程空間。
13、 根據(jù)權(quán)利要求11所述的聯(lián)合模擬系統(tǒng)的工作方法,其特征在于,所 述步驟B2包括下列步驟步驟B21、使用任務(wù)分配腳本創(chuàng)建并加載宿主機(jī)進(jìn)程和目標(biāo)機(jī)進(jìn)程。
14、 根據(jù)權(quán)利要求13所述的聯(lián)合模擬系統(tǒng)的工作方法,其特征在于,步 驟B21中,所述創(chuàng)建并加載宿主機(jī)進(jìn)程包括用戶輸入創(chuàng)建宿主機(jī)進(jìn)程請(qǐng)求, 通過SHELL程序?qū)?chuàng)建請(qǐng)求提交給管理進(jìn)程,該管理進(jìn)程根據(jù)任務(wù)分配腳本確 定創(chuàng)建的宿主機(jī)進(jìn)程對(duì)應(yīng)的管理進(jìn)程,將創(chuàng)建請(qǐng)求轉(zhuǎn)交給與創(chuàng)建的宿主機(jī)進(jìn)程 對(duì)應(yīng)的管理進(jìn)程,該管理進(jìn)程利用宿主機(jī)系統(tǒng)提供的進(jìn)程創(chuàng)建和加載機(jī)制實(shí)現(xiàn) 宿主機(jī)進(jìn)程的創(chuàng)建和加載。
15、 根據(jù)權(quán)利要求14所述的聯(lián)合模擬系統(tǒng)的工作方法,其特征在于,所 述SHELL程序的進(jìn)程屬于宿主機(jī)進(jìn)程,用于發(fā)出控制命令;S服LL程序由用戶 根據(jù)所需的功能自行編寫,是根據(jù)用戶輸入的命令調(diào)用系統(tǒng)提供的接口。
16、 根據(jù)權(quán)利要求15所述的聯(lián)合模擬系統(tǒng)的工作方法,其特征在于,步 驟B21中,所述創(chuàng)建并加載目標(biāo)機(jī)進(jìn)程包括:用戶輸入創(chuàng)建目標(biāo)機(jī)進(jìn)程的請(qǐng)求, 通過SHELL程序?qū)?chuàng)建請(qǐng)求傳遞給將要運(yùn)行目標(biāo)機(jī)進(jìn)程的模擬器對(duì)應(yīng)的代理 進(jìn)程,該代理進(jìn)程則將目標(biāo)機(jī)進(jìn)程創(chuàng)建請(qǐng)求轉(zhuǎn)交給該模擬器的虛擬設(shè)備;虛擬 設(shè)備通過中斷程序通知驅(qū)動(dòng)程序提取目標(biāo)機(jī)進(jìn)程創(chuàng)建請(qǐng)求,而驅(qū)動(dòng)程序則將提 取的目標(biāo)機(jī)進(jìn)程創(chuàng)建請(qǐng)求轉(zhuǎn)給目標(biāo)機(jī)的后臺(tái)進(jìn)程;目標(biāo)機(jī)的后臺(tái)進(jìn)程利用目標(biāo)機(jī)操作系統(tǒng)提供的機(jī)制創(chuàng)建并加載目標(biāo)機(jī)進(jìn)程。
17、 根據(jù)權(quán)利要求16所述的聯(lián)合模擬系統(tǒng)的工作方法,其特征在于,所 述加載分為兩種情況若目標(biāo)機(jī)進(jìn)程未指定模擬器,聯(lián)合模擬系統(tǒng)將從目標(biāo)機(jī) 進(jìn)程空間中隨機(jī)選取一個(gè)系統(tǒng)進(jìn)程ID分配給該目標(biāo)機(jī)進(jìn)程,將該目標(biāo)機(jī)進(jìn)程加載到隨機(jī)選擇的模擬器上運(yùn)行,相應(yīng)改變?nèi)蝿?wù)分配腳本中的數(shù)據(jù);若目標(biāo)機(jī)進(jìn)程指定模擬器,那么聯(lián)合模擬系統(tǒng)將在該模擬器映射的進(jìn)程空間范圍內(nèi)為該目標(biāo)機(jī)進(jìn)程選擇一個(gè)系統(tǒng)進(jìn)程ID,將該目標(biāo)機(jī)進(jìn)程將被加載到指定的模擬器上,相應(yīng)改變?nèi)蝿?wù)分配腳本中的數(shù)據(jù)。
18、 根據(jù)權(quán)利要求10所述的聯(lián)合模擬系統(tǒng)的工作方法,其特征在于,步 驟C中,所述通信分為兩個(gè)層面首先是系統(tǒng)主控進(jìn)程、代理進(jìn)程、管理進(jìn)程 之間的通信;其次是宿主機(jī)的應(yīng)用程序的進(jìn)程之間、目標(biāo)機(jī)的應(yīng)用程序的進(jìn)程 之間、宿主機(jī)的應(yīng)用程序的進(jìn)程與目標(biāo)機(jī)的應(yīng)用程序的進(jìn)程之間通信。
19、 根據(jù)權(quán)利要求10所述的聯(lián)合模擬系統(tǒng)的工作方法,其特征在于,所 述步驟C還進(jìn)一步包括步驟Cl、位于同一宿主機(jī)上的不同宿主機(jī)進(jìn)程之間進(jìn)行通信; 步驟C2、位于同一目標(biāo)機(jī)上的不同目標(biāo)機(jī)進(jìn)程之間進(jìn)行通信; 步驟C3、位于不同目標(biāo)機(jī)上的目標(biāo)機(jī)進(jìn)程之間進(jìn)行通信; 步驟C4、位于不同宿主機(jī)上的宿主機(jī)進(jìn)程之間進(jìn)行通信; 步驟C5、位于宿主機(jī)上宿主機(jī)進(jìn)程與位于目標(biāo)機(jī)上的目標(biāo)機(jī)進(jìn)程之間進(jìn) 行通信。
20、 根據(jù)權(quán)利要求19所述的聯(lián)合模擬系統(tǒng)的工作方法,其特征在于,所 述步驟C3包括下列步驟步驟C31,發(fā)送端的目標(biāo)機(jī)進(jìn)程,將數(shù)據(jù)提交給已經(jīng)編譯到發(fā)送端目標(biāo)機(jī) 的通信庫;步驟C32,所述通信庫將數(shù)據(jù)封裝成可以用于轉(zhuǎn)發(fā)的數(shù)據(jù)包,然后將數(shù)據(jù) 包提交給發(fā)送端的驅(qū)動(dòng)程序;步驟C33,所述驅(qū)動(dòng)程序不對(duì)數(shù)據(jù)包進(jìn)一步處理,直接傳遞給發(fā)送端的模 擬器的虛擬設(shè)備;步驟C34,所述虛擬設(shè)備需要根據(jù)傳輸網(wǎng)絡(luò)的情況將大數(shù)據(jù)包劃分為若干 數(shù)據(jù)包分片然后再傳遞給相應(yīng)代理進(jìn)程;步驟C35,所述代理進(jìn)程根據(jù)聯(lián)合模擬系統(tǒng)的進(jìn)程樹確定將請(qǐng)求轉(zhuǎn)交的代理進(jìn)程,然后轉(zhuǎn)發(fā)數(shù)據(jù)包分片;步驟C36,所述代理進(jìn)程接收到數(shù)據(jù)包分片后,根據(jù)聯(lián)合模擬系統(tǒng)的進(jìn)程 樹確定將請(qǐng)求轉(zhuǎn)交的代理進(jìn)程,然后轉(zhuǎn)發(fā)數(shù)據(jù)包分片;步驟C37,接收數(shù)據(jù)包分片的代理進(jìn)程將數(shù)據(jù)包分片轉(zhuǎn)發(fā)給根據(jù)目的系統(tǒng) 進(jìn)程ID找到的目標(biāo)機(jī)進(jìn)程所在的模擬器的虛擬設(shè)備,該虛擬設(shè)備此時(shí)不會(huì)重 組數(shù)據(jù)包分片,而是將數(shù)據(jù)包分片通知給接收端的驅(qū)動(dòng)程序;步驟C38,接收端的驅(qū)動(dòng)程序接收數(shù)據(jù)包分片并將數(shù)據(jù)包分片重組回原來 的數(shù)據(jù)包提交給接收端的通信庫;步驟C39,接收端通信庫接收到數(shù)據(jù)包后將數(shù)據(jù)包提交給接收端的根據(jù)目 的系統(tǒng)進(jìn)程ID找到的目標(biāo)機(jī)進(jìn)程,完成數(shù)據(jù)傳輸過程。
21、 根據(jù)權(quán)利要求19所述的聯(lián)合模擬系統(tǒng)的工作方法,其特征在于,所 述步驟C4包括下列步驟步驟C41,發(fā)送端的宿主機(jī)進(jìn)程,將數(shù)據(jù)提交給已經(jīng)編譯到發(fā)送端的宿主 機(jī)的通信庫;步驟C42,所述通信庫將數(shù)據(jù)封裝成用于轉(zhuǎn)發(fā)的數(shù)據(jù)包,然后將數(shù)據(jù)包提 交給發(fā)送端的宿主機(jī)的管理進(jìn)程;步驟C43,所述管理進(jìn)程根據(jù)聯(lián)合模擬系統(tǒng)的進(jìn)程樹確定將請(qǐng)求轉(zhuǎn)交的管 理進(jìn)程,然后轉(zhuǎn)發(fā)數(shù)據(jù)包;步驟C44,所述管理進(jìn)程接收數(shù)據(jù)包后將數(shù)據(jù)包提交給接收端的進(jìn)程庫;步驟C45,所述接收端的通信庫接收到數(shù)據(jù)包后將數(shù)據(jù)提交給接收端的根 據(jù)目的系統(tǒng)進(jìn)程ID找到的宿主機(jī)進(jìn)程,完成數(shù)據(jù)傳輸過程。
22、 根據(jù)權(quán)利要求19所述的聯(lián)合模擬系統(tǒng)的工作方法,其特征在于,所 述步驟C5包括下列步驟步驟C51,發(fā)送端的宿主機(jī)進(jìn)程,將數(shù)據(jù)提交給己經(jīng)編譯到發(fā)送端的宿主 機(jī)的通信庫;步驟C52,所述通信庫將數(shù)據(jù)封裝成用于轉(zhuǎn)發(fā)的數(shù)據(jù)包,然后將數(shù)據(jù)包提 交給發(fā)送端的宿主機(jī)的管理進(jìn)程;步驟C53,所述管理進(jìn)程根據(jù)聯(lián)合模擬系統(tǒng)的進(jìn)程樹確定將轉(zhuǎn)發(fā)的代理進(jìn) 程,并根據(jù)傳輸網(wǎng)絡(luò)的情況將大數(shù)據(jù)包劃分為若干數(shù)據(jù)包分片轉(zhuǎn)發(fā)給確定的代理進(jìn)程;步驟C54,所述代理進(jìn)程接收數(shù)據(jù)包分片,并根據(jù)目的系統(tǒng)進(jìn)程ID找到 目標(biāo)機(jī)進(jìn)程所在模擬器的虛擬設(shè)備,并轉(zhuǎn)發(fā)數(shù)據(jù)包分片;步驟C55,所述虛擬設(shè)備此時(shí)不會(huì)重組數(shù)據(jù)包分片,而是將數(shù)據(jù)包分片通 知給接收端的目標(biāo)機(jī)操作系統(tǒng)的驅(qū)動(dòng)程序;步驟C56,所述驅(qū)動(dòng)程序接收數(shù)據(jù)包分片并將數(shù)據(jù)包分片重組回原來的數(shù) 據(jù)包提交給接收端的進(jìn)程庫;步驟C57,所述接收端的進(jìn)程庫將接收的數(shù)據(jù)包提交給根據(jù)目的系統(tǒng)進(jìn)程 ID找到的目標(biāo)機(jī)進(jìn)程,完成數(shù)據(jù)傳輸過程。
23、根據(jù)權(quán)利要求20、 21或者22所述的聯(lián)合模擬系統(tǒng)的工作方法,其特 征在于,所述進(jìn)程樹,與所述任務(wù)分配腳本對(duì)應(yīng),其中所述系統(tǒng)主控進(jìn)程位于 根節(jié)點(diǎn),葉節(jié)點(diǎn)是運(yùn)行在所述聯(lián)合模擬系統(tǒng)中的應(yīng)用程序的進(jìn)程,其它節(jié)點(diǎn)對(duì) 應(yīng)的是所述模擬器的虛擬設(shè)備和所述代理進(jìn)程或所述管理進(jìn)程。
全文摘要
本發(fā)明公開了聯(lián)合模擬系統(tǒng)及其工作方法。該系統(tǒng)包括至少兩臺(tái)物理計(jì)算機(jī)、系統(tǒng)主控進(jìn)程模塊和進(jìn)程庫,其中至少一臺(tái)物理計(jì)算機(jī),包括宿主機(jī)系統(tǒng)模塊,用于運(yùn)行宿主機(jī)進(jìn)程;管理進(jìn)程模塊,用于管理其所在物理計(jì)算機(jī)上的宿主機(jī)進(jìn)程。至少一臺(tái)物理計(jì)算機(jī),包括一種或多種類型的模擬器,用于模擬目標(biāo)機(jī),并獲取目標(biāo)機(jī)進(jìn)程的具體行為的特征信息;代理進(jìn)程模塊,用于管理其所在物理計(jì)算機(jī)上的所述模擬器;以及目標(biāo)機(jī)操作系統(tǒng)模塊,用于運(yùn)行目標(biāo)機(jī)進(jìn)程。系統(tǒng)主控進(jìn)程模塊,位于任意一臺(tái)所述物理計(jì)算機(jī)上,用于將控制命令傳遞給所述代理進(jìn)程模塊和所述管理進(jìn)程模塊。進(jìn)程庫,位于每一臺(tái)所述物理計(jì)算機(jī)上,負(fù)責(zé)聯(lián)合模擬系統(tǒng)的通信操作。
文檔編號(hào)G06F9/455GK101477474SQ20091007647
公開日2009年7月8日 申請(qǐng)日期2009年1月4日 優(yōu)先權(quán)日2009年1月4日
發(fā)明者潘曉雷, 陳明宇 申請(qǐng)人:中國科學(xué)院計(jì)算技術(shù)研究所