<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于VxWorks的全IP開(kāi)發(fā)平臺進(jìn)程通信處理機制

基于VxWorks的全IP開(kāi)發(fā)平臺進(jìn)程通信處理機制

作者: 時(shí)間:2013-04-23 來(lái)源:網(wǎng)絡(luò ) 收藏

不同處理器間的進(jìn)程通信流程如圖3所示,下面根據不同的對話(huà)方式分別描述通信處理流程。

本文引用地址:http://dyxdggzs.com/article/153524.htm

c.JPG


①點(diǎn)對點(diǎn)通信。每個(gè)需要通信的處理器之間維護一條TCP連接,所有連接組成連接表。進(jìn)程通過(guò)接口發(fā)送的消息首先掛在相應的連接的發(fā)送隊列中。通信任務(wù)在連接表中的所有連接上監測鏈路狀態(tài),在連接寫(xiě)就緒時(shí)依序發(fā)送連接發(fā)送隊列中的消息,在連接讀就緒時(shí)接收連接上的消息并向上層轉發(fā),在連接異常時(shí)告警并恢復鏈路狀態(tài),在檢查報到達的時(shí)候將鏈路丟失的檢查報清零。
②多對多通信。使用一個(gè)公用的UDP套接口,發(fā)送時(shí)指定協(xié)議類(lèi)型為不可靠傳輸協(xié)議的時(shí)候,根據邏輯地址查找到對應的IP地址,直接從UDP套接口上發(fā)送出去。組播任務(wù)同樣守護在UDP套接口上,當套接口讀就緒的時(shí)候接收消息并向上層轉發(fā)。
③組播。采用靜態(tài)分組的方法,每一個(gè)組播組對應一個(gè)到組播地址,所有這種對應關(guān)系組成分組表。每一處理器可以加入特定組播組,也可以隨時(shí)脫離組播組。組播任務(wù)守護在組播組表的組播套接口上,在套接口讀就緒時(shí)接收消息并向上層轉發(fā)。進(jìn)程直接在組播套接字上發(fā)送消息。
④廣播。分組表中有一個(gè)特殊項用作廣播,該組成員為系統內所有處理器,組播任務(wù)在該項上守護,進(jìn)行和上面相同的處理。
⑤處理器內廣播。向同一個(gè)進(jìn)程類(lèi)型的實(shí)例分別發(fā)送一條消息的拷貝。
消息的派發(fā)過(guò)程如圖4所示。調度任務(wù)從自己的郵箱接收消息,并負責向各個(gè)進(jìn)程的中派發(fā),在派發(fā)的過(guò)程中區別消息的類(lèi)型。根據消息類(lèi)型描述處理流程,派發(fā)同步應答消息時(shí),將目標進(jìn)程轉入就緒狀態(tài),設置解除阻塞原因為應答到;派發(fā)同步超時(shí)消息時(shí),將目標進(jìn)程轉入就緒狀態(tài),設置解除阻塞原因為同步超時(shí);派發(fā)延時(shí)結束消息時(shí),將目標進(jìn)程轉入就緒狀態(tài),設置解除阻塞原因為延時(shí)結束;派發(fā)其他類(lèi)型的消息時(shí),將消息掛到目標進(jìn)程尾部,如果目標進(jìn)程因為沒(méi)有消息而阻塞,將目標進(jìn)程轉入就緒狀態(tài)。

d.JPG


2.2 TCP連接狀態(tài)機設計
TCP連接的狀態(tài)記錄在TCP連接控制塊的狀態(tài)域里面,本端上層應用發(fā)起TCP連接建立請求時(shí),TCP連接的狀態(tài)遷移如圖5所示。①沒(méi)有激活狀態(tài):接收到來(lái)自上層應用的連接發(fā)起請求后,向對端發(fā)起連接,進(jìn)入等待寫(xiě)就緒狀態(tài)。②等待寫(xiě)就緒狀態(tài):如果接收到本端套接字的寫(xiě)就緒事件,向對端發(fā)送檢查報,進(jìn)入等待對端檢查報狀態(tài);如果接收到對端連接請求(連接請求1)并且對端IP地址比自己的IP地址小,拒絕請求,繼續等待;如果接收到對端連接請求(連接請求2)并且對端IP地址比自己的IP地址大,接收請求,終止本端發(fā)起的連接過(guò)程,啟動(dòng)連接接收的狀態(tài)機。③等待檢查報狀態(tài):收到檢查報后,連接成功,進(jìn)入工作狀態(tài);如果接收到對端連接請求(連接請求1)并且對端IP地址比自己的IP地址小,拒絕請求,繼續等待;如果接收到對端連接請求(連接請求2)并且對端IP地址比自己的IP地址大,接收請求,終止本端發(fā)起的連接過(guò)程,啟動(dòng)連接接收的狀態(tài)機。④工作狀態(tài):如果收到數據收發(fā)請求,則進(jìn)行數據收發(fā),并保持狀態(tài);如果收到連接的關(guān)閉請求,則關(guān)閉本連接,轉到連接沒(méi)有激活狀態(tài);如果收到對端的連接建立請求,則啟動(dòng)連接的接收狀態(tài)機,并保持現在的連接在工作狀態(tài)。

e.JPG


在上述各種狀態(tài)下收到連接異常的信息都異常關(guān)閉連接,轉到連接沒(méi)有激活狀態(tài)。

f.JPG


本端收到對端發(fā)起TCP連接建立請求時(shí),TCP連接的狀態(tài)遷移如圖6所示。①沒(méi)有激活狀態(tài):接收到對端的連接請求后,進(jìn)入等待檢查報狀態(tài);②等待檢查報狀態(tài):如果接收到對端的檢查報,進(jìn)入等待寫(xiě)就緒狀態(tài);如果接收到對端連接請求,接收請求,終止上次的連接過(guò)程,進(jìn)入等待檢查報狀態(tài);③等待寫(xiě)就緒狀態(tài):如果收到寫(xiě)就緒事件,向對端發(fā)送檢查報,連接成功,如果以前存在工作的鏈路,關(guān)閉該鏈路,本鏈路投入工作狀態(tài);如果接收到對端連接請求,接收請求,終止本次連接過(guò)程,切換到等待檢查報狀態(tài);④工作狀態(tài):如果收到數據收發(fā)請求,則進(jìn)行數據收發(fā),并保持狀態(tài);如果收到連接的關(guān)閉請求,則關(guān)閉本連接,轉到連接沒(méi)有激活狀態(tài);如果收到對端的連接建立請求,則啟動(dòng)備份連接的建立狀態(tài)機,并保持狀態(tài)。
在上述各種狀態(tài)下收到連接異常的信息都異常關(guān)閉連接。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>