欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種面向高速磁浮交通仿真的共享內(nèi)存方法

文檔序號:10488822閱讀:436來源:國知局
一種面向高速磁浮交通仿真的共享內(nèi)存方法
【專利摘要】本發(fā)明涉及一種面向高速磁浮交通仿真的共享內(nèi)存方法,面向高速磁浮交通仿真包括至少一臺計算機和磁浮仿真設(shè)備,每臺計算機通過通信層進行通信,而應(yīng)用層只能與本機的通信層通信,通信層和應(yīng)用層均具通信節(jié)點,該方法包括以下步驟:(1)計算機中的通信層建立通信程序進程,通信程序進程建立共享內(nèi)存塊及共享內(nèi)存代理;(2)所述的共享內(nèi)存代理以窗口形式存儲共享內(nèi)存塊的數(shù)量、網(wǎng)絡(luò)狀態(tài)和地址指針信息;(3)計算機中的應(yīng)用層建立應(yīng)用程序進程,應(yīng)用程序進程向所述的共享內(nèi)存代理提供通信節(jié)點的名稱及收發(fā)地址,調(diào)用共享內(nèi)存代理并與對應(yīng)的共享內(nèi)存塊通信。與現(xiàn)有技術(shù)相比,本發(fā)明具有讀寫速度快、效果好等優(yōu)點。
【專利說明】
一種面向高速磁浮交通仿真的共享內(nèi)存方法
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于多進程通信領(lǐng)域,尤其是涉及一種面向高速磁浮交通仿真的共享內(nèi)存方法。
【背景技術(shù)】
[0002]為了實現(xiàn)高速磁浮交通仿真中仿真計算機或仿真服務(wù)器內(nèi)部的數(shù)據(jù)傳輸或者信息通信,以完成對本機所運行的磁浮功能軟件進行環(huán)境故障注入條件下的系統(tǒng)功能和性能的測試與驗證,需要使用一種可在多進程之間切換的高效通信技術(shù)。

【發(fā)明內(nèi)容】

[0003]本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種提高信息傳遞和故障注入效率的面向高速磁浮交通仿真的共享內(nèi)存方法,將多個共享內(nèi)存塊進行功能性劃分,并且建立維護共享內(nèi)存的Initializat1n文件和共享內(nèi)存代理,使用互斥機制和同步機制,使得進程提供少量的通信信息,調(diào)用共享內(nèi)存的同步讀寫操作,完成多進程間的通
?目O
[0004]本發(fā)明的目的可以通過以下技術(shù)方案來實現(xiàn):一種面向高速磁浮交通仿真的共享內(nèi)存方法,所述的面向高速磁浮交通仿真包括至少一臺計算機和磁浮仿真設(shè)備,使用P2P通信協(xié)議作為通信架構(gòu),每臺計算機通過通信層進行通信,而應(yīng)用層只能與本機的通信層通信,通信層和應(yīng)用層均具通信節(jié)點,該方法采用“主一從”式的技術(shù)架構(gòu),包括以下步驟:
[0005](I)計算機中的通信層建立通信程序進程,通信程序進程建立共享內(nèi)存塊及共享內(nèi)存代理;
[0006](2)所述的共享內(nèi)存代理以窗口形式存儲共享內(nèi)存塊的數(shù)量、網(wǎng)絡(luò)狀態(tài)和地址指針信息;
[0007](3)計算機中的應(yīng)用層建立應(yīng)用程序進程,應(yīng)用程序進程向所述的共享內(nèi)存代理提供通信節(jié)點的名稱及收發(fā)地址,調(diào)用共享內(nèi)存代理并與對應(yīng)的共享內(nèi)存塊通信。
[0008]在高速磁浮交通仿真計算機中,共享內(nèi)存同時提供給計算機中的通信層和應(yīng)用程序,由通信層進行統(tǒng)一地新建和管理,其他應(yīng)用程序只能發(fā)送請求以獲得對共享內(nèi)存的讀寫權(quán)限。
[0009]所述的步驟(I)中建立共享內(nèi)存塊的具體方法為:所述的通信程序進程根據(jù)Initializat 1n文件中的通信節(jié)點信息,倉Il建文件映射,新建出通信節(jié)點數(shù)量的兩倍的共享內(nèi)存塊,所述的Initializat1n文件為由用戶編寫的程序代碼,用戶通過修改所述的Initializat 1n文件從而修改共享內(nèi)存塊。
[0010]所述的共享內(nèi)存塊只能讀數(shù)據(jù)或者寫數(shù)據(jù)。
[0011]所述的共享內(nèi)存塊中使用互斥鎖控制計算機內(nèi)多個線程對共享內(nèi)存塊的使用權(quán),具體為:當一個線程對某個共享內(nèi)存塊進行讀或?qū)懖僮鲿r,將互斥鎖置為鎖狀態(tài),使其他調(diào)用該共享內(nèi)存塊的線程置為阻塞狀態(tài),直到該讀或?qū)懖僮鹘Y(jié)束且互斥鎖為解鎖狀態(tài),其他線程可使用該共享內(nèi)存塊。
[0012]所述的步驟(I)中通信層讀取通信節(jié)點的名稱,為每個通信節(jié)點分配一個“讀出”共享內(nèi)存塊和一個“寫入”共享內(nèi)存塊,并且每個共享內(nèi)存塊使用MapViewOfFileO或MapV i ewOfF i I eEx O函數(shù),將文件映射到相應(yīng)的進程的地址空間中。
[0013]所述的共享內(nèi)存代理調(diào)用事件向共享內(nèi)存塊發(fā)送進程的“讀/寫”請求,改變進程的狀態(tài)。
[0014]在每一個共享內(nèi)存塊中,使用事件實現(xiàn)共享內(nèi)存的讀寫同步機制。當某一個“寫入”共享內(nèi)存塊的互斥鎖為解鎖狀態(tài)并且內(nèi)存中內(nèi)容為空時,則將SetEventO函數(shù)置為掛起狀態(tài),等待線程的調(diào)用以及寫操作的信號。
[0015]當某一個“讀出”共享內(nèi)存塊的互斥鎖為解鎖狀態(tài)并且內(nèi)存內(nèi)容不為空時,無需線程調(diào)用自動將SetEventO函數(shù)置為發(fā)信號狀態(tài)以進行讀操作。直到線程讀取完畢,解除發(fā)信號狀態(tài)以實現(xiàn)讀寫同步機制。
[00? 6] 共享內(nèi)存代理Container使用互斥體Mutex控制多進程對共享內(nèi)存塊的讀寫操作。進程對一個通信節(jié)點進行通信時,將Mutex置為鎖狀態(tài),使其他調(diào)用相同節(jié)點的進程置為阻塞狀態(tài)。直到該通信節(jié)點使用完畢,將Mutex置為解鎖狀態(tài)。
[00? 7 ] 共享內(nèi)存代理Container使用事件Event維護共享內(nèi)存塊的網(wǎng)絡(luò)狀態(tài)。當上一步的Mutex為鎖狀態(tài)時,Container向特定的共享內(nèi)存塊發(fā)送Event信號,將共享內(nèi)存塊置為“讀/寫”狀態(tài)或者返回共享內(nèi)存塊不存在或錯誤信號給進程。
[0018]每一個共享內(nèi)存塊中的數(shù)據(jù)只進行單方向地讀出或?qū)懭搿9蚕韮?nèi)存為每一個通信節(jié)點分配一個“讀出”共享內(nèi)存塊和一個“寫入”共享內(nèi)存塊。當進程使用共享內(nèi)存時,需要在不同通信節(jié)點的共享內(nèi)存塊中進行“讀/寫”操作,確保每一個內(nèi)存塊中的數(shù)據(jù)流單向傳輸,避免出現(xiàn)“讀寫沖突”的情況,提高進程調(diào)用共享內(nèi)存的效率。
[0019]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:
[°02°] (I)建立了 Initializat1n文件,這樣用戶不需要修改程序,只修改文本信息就可以達到增刪改共享內(nèi)存的效果,效果好,用戶需要的時間少;
[0021](2)共享內(nèi)存塊只能讀,或者寫數(shù)據(jù),不可兩個功能兼?zhèn)?。這樣加快了數(shù)據(jù)讀寫的速度,讀數(shù)據(jù)用讀數(shù)據(jù)的內(nèi)存塊,寫用寫的,防止讀寫沖突;
[0022](3)建立共享內(nèi)存代理,共享內(nèi)存塊在建立的時候需要存儲名稱、ip地址、是否記錄日志等各種各樣的信息,但是共享內(nèi)存代理只存儲內(nèi)存塊的指針信息、是否可以讀寫的狀態(tài)等少量信息。所以用戶只需要提供少量的信息就可以調(diào)用共享內(nèi)存代理,讓代理去處理讀寫的問題,用戶只需得到反饋。這樣加快了讀寫的速度。
【附圖說明】
[0023]圖1為本發(fā)明的流程圖。
【具體實施方式】
[0024]下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細說明。
[0025]如圖1所示,一種面向高速磁浮交通仿真的共享內(nèi)存方法,面向高速磁浮交通仿真包括至少一臺計算機和磁浮仿真設(shè)備,使用P2P通信協(xié)議作為通信架構(gòu),每臺計算機通過通信層進行通信,而應(yīng)用層只能與本機的通信層通信,通信層和應(yīng)用層均具通信節(jié)點,該方法采用“主一從”式的技術(shù)架構(gòu),包括以下步驟:
[0026](I)計算機中的通信層建立通信程序進程,通信程序進程建立共享內(nèi)存塊及共享內(nèi)存代理,在高速磁浮交通仿真計算機中,共享內(nèi)存同時提供給計算機中的通信層和應(yīng)用層,由通信層進行統(tǒng)一地新建和管理,其他應(yīng)用程序只能發(fā)送請求以獲得對共享內(nèi)存的讀寫權(quán)限;建立共享內(nèi)存塊的具體方法為:通信程序進程根據(jù)Initializat1n文件中的通信節(jié)點信息,使用CreateFileMappingO倉Il建文件映射,新建出通信節(jié)點數(shù)量的兩倍的共享內(nèi)存塊。用戶通過修改Initializat1n文件從而修改共享內(nèi)存塊。共享內(nèi)存使用Windows系統(tǒng)的Initializat1n文件(.1ni文件)進行配置和管理。通信層讀取通信節(jié)點的名稱,為每個通信節(jié)點分配一個“讀出”共享內(nèi)存塊和一個“寫入”共享內(nèi)存塊,并且每個共享內(nèi)存塊使用MapV i ewOfF i I e O或Map V i ewOfF i I eEx ()函數(shù),將文件映射到相應(yīng)的進程的地址空間中。
[0027](2)共享內(nèi)存代理以窗口形式存儲共享內(nèi)存塊的數(shù)量、網(wǎng)絡(luò)狀態(tài)和地址指針信息;
[0028](3)計算機中的應(yīng)用層建立應(yīng)用程序進程,應(yīng)用程序進程向共享內(nèi)存代理提供通信節(jié)點的名稱及收發(fā)地址,調(diào)用共享內(nèi)存代理并與對應(yīng)的共享內(nèi)存塊通信。
[0029]共享內(nèi)存塊中使用互斥鎖控制計算機內(nèi)多個線程對共享內(nèi)存塊的使用權(quán),具體為:當一個線程對某個共享內(nèi)存塊進行讀或?qū)懖僮鲿r,將互斥鎖置為鎖狀態(tài),使其他調(diào)用該共享內(nèi)存塊的線程置為阻塞狀態(tài),直到該讀或?qū)懖僮鹘Y(jié)束且互斥鎖為解鎖狀態(tài),其他線程可使用該共享內(nèi)存塊。
[0030]共享內(nèi)存代理調(diào)用事件向共享內(nèi)存塊發(fā)送進程的“讀/寫”請求,改變進程的狀態(tài)。
[0031]在每一個共享內(nèi)存塊中,使用事件實現(xiàn)共享內(nèi)存的讀寫同步機制。當某一個“寫入”共享內(nèi)存塊的互斥鎖為解鎖狀態(tài)并且內(nèi)存中內(nèi)容為空時,則將SetEventO函數(shù)置為掛起狀態(tài),等待線程的調(diào)用以及寫操作的信號。
[0032]當某一個“讀出”共享內(nèi)存塊的互斥鎖為解鎖狀態(tài)并且內(nèi)存內(nèi)容不為空時,無需線程調(diào)用自動將SetEventO函數(shù)置為發(fā)信號狀態(tài)以進行讀操作。直到線程讀取完畢,解除發(fā)信號狀態(tài)以實現(xiàn)讀寫同步機制。
[0033]共享內(nèi)存代理Container使用互斥體Mutex控制多進程對共享內(nèi)存塊的讀寫操作。進程對一個通信節(jié)點進行通信時,將Mutex置為鎖狀態(tài),使其他調(diào)用相同節(jié)點的進程置為阻塞狀態(tài)。直到該通信節(jié)點使用完畢,將Mutex置為解鎖狀態(tài)。
[0034]共享內(nèi)存代理Container使用事件Event維護共享內(nèi)存塊的網(wǎng)絡(luò)狀態(tài)。當上一步的Mutex為鎖狀態(tài)時,Container向特定的共享內(nèi)存塊發(fā)送Event信號,將共享內(nèi)存塊置為“讀/寫”狀態(tài)或者返回共享內(nèi)存塊不存在或錯誤信號給進程。
[0035]每一個共享內(nèi)存塊中的數(shù)據(jù)只進行單方向地讀出或?qū)懭?。共享?nèi)存為每一個通信節(jié)點分配一個“讀出”共享內(nèi)存塊和一個“寫入”共享內(nèi)存塊。當進程使用共享內(nèi)存時,需要在不同通信節(jié)點的共享內(nèi)存塊中進行“讀/寫”操作,確保每一個內(nèi)存塊中的數(shù)據(jù)流單向傳輸,避免出現(xiàn)“讀寫沖突”的情況,提高進程調(diào)用共享內(nèi)存的效率。
【主權(quán)項】
1.一種面向高速磁浮交通仿真的共享內(nèi)存方法,所述的面向高速磁浮交通仿真包括至少一臺計算機和磁浮仿真設(shè)備,每臺計算機通過通信層進行通信,而應(yīng)用層只能與本機的通信層通信,通信層和應(yīng)用層均具通信節(jié)點,其特征在于,該方法包括以下步驟: (1)計算機中的通信層建立通信程序進程,通信程序進程建立共享內(nèi)存塊及共享內(nèi)存代理; (2)所述的共享內(nèi)存代理以窗口形式存儲共享內(nèi)存塊的數(shù)量、網(wǎng)絡(luò)狀態(tài)和地址指針信息; (3)計算機中的應(yīng)用層建立應(yīng)用程序進程,應(yīng)用程序進程向所述的共享內(nèi)存代理提供通信節(jié)點的名稱及收發(fā)地址,調(diào)用共享內(nèi)存代理并與對應(yīng)的共享內(nèi)存塊通信。2.根據(jù)權(quán)利要求1所述的一種面向高速磁浮交通仿真的共享內(nèi)存方法,其特征在于,所述的步驟(I)中建立共享內(nèi)存塊的具體方法為:所述的通信程序進程根據(jù)Initializat1n文件中的通信節(jié)點信息,創(chuàng)建文件映射,新建出通信節(jié)點數(shù)量的兩倍的共享內(nèi)存塊,用戶通過修改所述的Initializat1n文件從而修改共享內(nèi)存塊。3.根據(jù)權(quán)利要求1所述的一種面向高速磁浮交通仿真的共享內(nèi)存方法,其特征在于,所述的共享內(nèi)存塊只能讀數(shù)據(jù)或者寫數(shù)據(jù)。4.根據(jù)權(quán)利要求1所述的一種面向高速磁浮交通仿真的共享內(nèi)存方法,其特征在于,所述的共享內(nèi)存塊中使用互斥鎖控制計算機內(nèi)多個線程對共享內(nèi)存塊的使用權(quán),具體為:當一個線程對某個共享內(nèi)存塊進行讀或?qū)懖僮鲿r,將互斥鎖置為鎖狀態(tài),使其他調(diào)用該共享內(nèi)存塊的線程置為阻塞狀態(tài),直到該讀或?qū)懖僮鹘Y(jié)束且互斥鎖為解鎖狀態(tài),其他線程可使用該共享內(nèi)存塊。5.根據(jù)權(quán)利要求1所述的一種面向高速磁浮交通仿真的共享內(nèi)存方法,其特征在于,所述的步驟(I)中通信層讀取通信節(jié)點的名稱,為每個通信節(jié)點分配一個“讀出”共享內(nèi)存塊和一個“寫入”共享內(nèi)存塊,并且每個共享內(nèi)存塊使用MapVi ewOf Fi I e ()或MapVi ewOf Fi I eEx()函數(shù),將文件映射到相應(yīng)的進程的地址空間中。6.根據(jù)權(quán)利要求1所述的一種面向高速磁浮交通仿真的共享內(nèi)存方法,其特征在于,所述的共享內(nèi)存代理調(diào)用事件向共享內(nèi)存塊發(fā)送進程的“讀/寫”請求,改變進程的狀態(tài)。
【文檔編號】G06F9/54GK105843693SQ201610164566
【公開日】2016年8月10日
【申請日】2016年3月22日
【發(fā)明人】袁時金, 張旭彤, 穆斌, 林曄, 馬骕
【申請人】同濟大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
兴隆县| 敖汉旗| 临漳县| 谷城县| 鹤峰县| 霞浦县| 南木林县| 成武县| 育儿| 晋江市| 竹山县| 改则县| 乐亭县| 平湖市| 密云县| 鄂州市| 星座| 盐源县| 尉氏县| 百色市| 赤城县| 伊宁市| 灵川县| 察隅县| 云南省| 咸阳市| 余江县| 小金县| 民权县| 辽源市| 泰州市| 丰宁| 鹰潭市| 万宁市| 攀枝花市| 洛隆县| 资兴市| 石景山区| 沾益县| 海安县| 共和县|