本發(fā)明涉及通信領(lǐng)域,特別涉及一種數(shù)據(jù)發(fā)送方法、發(fā)送終端及接收終端。
背景技術(shù):
::并行計(jì)算機(jī)系統(tǒng)通常是由多個(gè)計(jì)算結(jié)點(diǎn)(簡(jiǎn)記為結(jié)點(diǎn))和互連網(wǎng)絡(luò)組成,結(jié)點(diǎn)由處理器、網(wǎng)絡(luò)接口和內(nèi)存組成,結(jié)點(diǎn)通過(guò)網(wǎng)絡(luò)接口進(jìn)行數(shù)據(jù)的發(fā)送和接收,結(jié)點(diǎn)間通過(guò)互連網(wǎng)絡(luò)進(jìn)行通信。并行計(jì)算機(jī)系統(tǒng)中,一種基本的通信模式是在兩個(gè)結(jié)點(diǎn)(記為發(fā)送結(jié)點(diǎn)和接收結(jié)點(diǎn))間的內(nèi)存中進(jìn)行數(shù)據(jù)拷貝,也就是發(fā)送結(jié)點(diǎn)將本結(jié)點(diǎn)內(nèi)存區(qū)域中的數(shù)據(jù)寫(xiě)入到接收結(jié)點(diǎn)的內(nèi)存區(qū)域中。單邊通信(one-sidecommunication)和雙邊通信(two-sidecommunication)是實(shí)現(xiàn)上述通信模式的兩種常用通信機(jī)制。單邊通信是發(fā)送結(jié)點(diǎn)在發(fā)送數(shù)據(jù)時(shí)已經(jīng)知道接收緩沖區(qū)的內(nèi)存地址,能通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)直接寫(xiě)入接收結(jié)點(diǎn)對(duì)應(yīng)的內(nèi)存區(qū)域中,這種通信機(jī)制通常也稱(chēng)為遠(yuǎn)程直接內(nèi)存訪問(wèn)(remotedirectmemoryaccess,rdma)。雙邊通信是發(fā)送結(jié)點(diǎn)在發(fā)送數(shù)據(jù)時(shí)不知道接收緩沖區(qū)的內(nèi)存地址,在通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送給接收結(jié)點(diǎn)之后,再由接收結(jié)點(diǎn)將數(shù)據(jù)寫(xiě)入對(duì)應(yīng)的內(nèi)存區(qū)域中。單邊通信和雙邊通信都需要依賴(lài)并行計(jì)算機(jī)的互連網(wǎng)絡(luò)完成,一般來(lái)說(shuō),一次數(shù)據(jù)通信的數(shù)據(jù)量可能很大,在互連網(wǎng)絡(luò)上進(jìn)行數(shù)據(jù)傳輸時(shí),需要將一次數(shù)據(jù)傳輸拆分成多個(gè)報(bào)文,各個(gè)報(bào)文獨(dú)立地由發(fā)送結(jié)點(diǎn)傳輸?shù)浇邮战Y(jié)點(diǎn)。大規(guī)模并行計(jì)算機(jī)系統(tǒng)中,互連網(wǎng)絡(luò)的規(guī)模通常很大,在實(shí)現(xiàn)上,難以保證互連網(wǎng)絡(luò)的可靠性,例如,網(wǎng)絡(luò)中的某條通路可能會(huì)出現(xiàn)偶發(fā)錯(cuò)誤或短暫斷開(kāi)。不可靠的互連網(wǎng)絡(luò)造成的結(jié)果是發(fā)送結(jié)點(diǎn)向接收結(jié)點(diǎn)傳輸?shù)膱?bào)文,不一定能夠最終到達(dá)接收結(jié)點(diǎn)。隨著并行計(jì)算機(jī)系統(tǒng)規(guī)模的不斷擴(kuò)大,系統(tǒng)互連網(wǎng)絡(luò)規(guī)模也隨之增加,平均無(wú)故障時(shí)間(meantimetofailure,mttf)不斷縮小,單純依靠鏈路級(jí)數(shù)據(jù)重傳機(jī)制已無(wú)法保證互連網(wǎng)絡(luò)的可靠性,一般需要端到端數(shù)據(jù)重傳機(jī)制來(lái)進(jìn)一步提高互連網(wǎng)絡(luò)的可靠性。為了提高重傳性能和減少處理器的占用率,端到端數(shù)據(jù)重傳機(jī)制一般都在網(wǎng)絡(luò)接口中由硬件實(shí)現(xiàn)。其中,端到端數(shù)據(jù)重傳機(jī)制一般有兩種硬件實(shí)現(xiàn)方法。第一種實(shí)現(xiàn)方法是靜態(tài)連接機(jī)制,每條通信連接都有固定的發(fā)送上下文和接收上下文,在通信連接創(chuàng)建時(shí)分配,且在整個(gè)數(shù)據(jù)通信期間不再改變,直到通信連接斷開(kāi)才釋放對(duì)應(yīng)的發(fā)送和接收上下文。由于系統(tǒng)需要為每條通信連接都分配固定的發(fā)送和接收上下文,對(duì)于大規(guī)模并行計(jì)算機(jī)系統(tǒng),隨著通信連接數(shù)的增多,所需的上下文數(shù)量也會(huì)急劇增加。例如,系統(tǒng)有n個(gè)結(jié)點(diǎn),每個(gè)結(jié)點(diǎn)上有m個(gè)進(jìn)程,如果所有進(jìn)程進(jìn)行alltoall通信,那么每個(gè)結(jié)點(diǎn)所需要分配的發(fā)送上下文和接收上下文的數(shù)量都為m*m*n。由于網(wǎng)絡(luò)接口硬件資源有限,無(wú)法存放的上下文將不得不存儲(chǔ)在結(jié)點(diǎn)的內(nèi)存中,這不僅會(huì)大量消耗結(jié)點(diǎn)內(nèi)存資源,影響系統(tǒng)可擴(kuò)展性,而且上下文在網(wǎng)絡(luò)接口和結(jié)點(diǎn)內(nèi)存之間的頻繁來(lái)回傳輸也會(huì)影響通信性能。第二種實(shí)現(xiàn)方法是動(dòng)態(tài)連接機(jī)制,通信連接是在數(shù)據(jù)通信時(shí)動(dòng)態(tài)創(chuàng)建的,系統(tǒng)為每條臨時(shí)創(chuàng)建的通信連接分配臨時(shí)的發(fā)送上下文和接收上下文,當(dāng)臨時(shí)創(chuàng)建的通信連接的數(shù)據(jù)傳輸任務(wù)完成后,對(duì)應(yīng)的臨時(shí)分配的上下文立即被釋放,被釋放的上下文可供其它通信連接使用。由于發(fā)送上下文和接收上下文是在數(shù)據(jù)通信過(guò)程中按需分配的,因此每個(gè)結(jié)點(diǎn)所需的上下文數(shù)量將大幅減少且與系統(tǒng)規(guī)模無(wú)關(guān),這使得系統(tǒng)具有較好的可擴(kuò)展性。另外,上下文資源能完全存儲(chǔ)在網(wǎng)絡(luò)接口中,不用占用結(jié)點(diǎn)內(nèi)存,也消除了結(jié)點(diǎn)內(nèi)存與網(wǎng)絡(luò)接口之間的上下文傳輸,從而有利于提高通信性能。動(dòng)態(tài)連接機(jī)制的通信連接是在有數(shù)據(jù)發(fā)送需求時(shí)臨時(shí)創(chuàng)建的,建立連接時(shí)發(fā)送結(jié)點(diǎn)需要分配發(fā)送上下文并向接收結(jié)點(diǎn)發(fā)送建立連接請(qǐng)求,接收結(jié)點(diǎn)在收到建立連接請(qǐng)求后需要分配接收上下文,并向發(fā)送結(jié)點(diǎn)返回建立連接成功響應(yīng)。技術(shù)實(shí)現(xiàn)要素:本發(fā)明提供了一種數(shù)據(jù)發(fā)送方法、發(fā)送終端及接收終端,其目的是為了解決數(shù)據(jù)傳送時(shí)數(shù)據(jù)通信時(shí)間過(guò)長(zhǎng)或浪費(fèi)數(shù)據(jù)帶寬的問(wèn)題。為了達(dá)到上述目的,本發(fā)明的實(shí)施例提供了一種數(shù)據(jù)發(fā)送方法,適用于并行計(jì)算機(jī)系統(tǒng)的發(fā)送結(jié)點(diǎn),所述方法包括:獲取數(shù)據(jù)發(fā)送請(qǐng)求信息,并檢測(cè)空閑發(fā)送上下文的數(shù)量;若所述空閑發(fā)送上下文的數(shù)量大于零,則將所述空閑發(fā)送上下文分配為用于存儲(chǔ)所述發(fā)送數(shù)據(jù)的臨時(shí)狀態(tài)信息的發(fā)送上下文;根據(jù)所述數(shù)據(jù)發(fā)送請(qǐng)求信息獲取接收結(jié)點(diǎn)號(hào),并根據(jù)所述接收結(jié)點(diǎn)號(hào)獲取上下文預(yù)測(cè)對(duì)應(yīng)表中的與所述接收結(jié)點(diǎn)號(hào)相對(duì)應(yīng)的空閑接收上下文數(shù)量;向所述接收結(jié)點(diǎn)號(hào)相對(duì)應(yīng)的接收結(jié)點(diǎn)發(fā)送建立連接請(qǐng)求,若所述空閑接收上下文數(shù)量大于零,則同時(shí)向所述接收結(jié)點(diǎn)發(fā)送數(shù)據(jù)。其中,所述方法還包括:向所述接收結(jié)點(diǎn)號(hào)相對(duì)應(yīng)的接收結(jié)點(diǎn)發(fā)送建立連接請(qǐng)求,若所述空閑接收上下文數(shù)量等于零,則待接收到建立連接成功響應(yīng)信息后,再向所述接收結(jié)點(diǎn)發(fā)送數(shù)據(jù)。其中,所述方法還包括:在發(fā)送所述發(fā)送數(shù)據(jù)的過(guò)程中,接收所述發(fā)送數(shù)據(jù)的數(shù)據(jù)響應(yīng)信息。其中,所述方法還包括:待收到最后一個(gè)數(shù)據(jù)響應(yīng)信息后,向所述接收結(jié)點(diǎn)發(fā)送連接斷開(kāi)請(qǐng)求,切斷與所述接收結(jié)點(diǎn)的連接。本發(fā)明的實(shí)施例還提供了一種數(shù)據(jù)發(fā)送方法,適用于并行計(jì)算機(jī)系統(tǒng)的接收結(jié)點(diǎn),所述方法包括:接收發(fā)送結(jié)點(diǎn)發(fā)送的建立連接請(qǐng)求,并檢測(cè)空閑接收上下文的數(shù)量;若所述空閑接收上下文數(shù)量大于零,則將所述空閑接收上下文分配為用于存儲(chǔ)所述發(fā)送數(shù)據(jù)的臨時(shí)狀態(tài)信息的接收上下文;向所述發(fā)送結(jié)點(diǎn)反饋建立連接成功響應(yīng)信息,接收所述發(fā)送數(shù)據(jù)。其中,所述方法還包括:若所述空閑接收上下文數(shù)量等于零,則向所述發(fā)送結(jié)點(diǎn)反饋建立連接拒絕響應(yīng)信息。其中,所述方法還包括:在接收所述發(fā)送數(shù)據(jù)的過(guò)程中,向所述發(fā)送結(jié)點(diǎn)反饋所述發(fā)送數(shù)據(jù)發(fā)送成功的響應(yīng)信息。其中,所述方法還包括:接收所述發(fā)送結(jié)點(diǎn)發(fā)送的連接斷開(kāi)請(qǐng)求,切斷與所述發(fā)送結(jié)點(diǎn)的連接。本發(fā)明的實(shí)施例還提供了一種發(fā)送終端,包括:第一檢測(cè)模塊,用于獲取數(shù)據(jù)發(fā)送請(qǐng)求信息,并檢測(cè)空閑發(fā)送上下文的數(shù)量;第一分配模塊,用于若所述空閑發(fā)送上下文的數(shù)量大于零,則將所述空閑發(fā)送上下文分配為用于存儲(chǔ)所述發(fā)送數(shù)據(jù)的臨時(shí)狀態(tài)信息的發(fā)送上下文;獲取模塊,用于根據(jù)所述數(shù)據(jù)發(fā)送請(qǐng)求信息獲取接收結(jié)點(diǎn)號(hào),并根據(jù)所述接收結(jié)點(diǎn)號(hào)獲取上下文預(yù)測(cè)對(duì)應(yīng)表中的與所述接收結(jié)點(diǎn)號(hào)相對(duì)應(yīng)的空閑接收上下文數(shù)量;第一發(fā)送模塊,用于向所述接收結(jié)點(diǎn)號(hào)相對(duì)應(yīng)的接收結(jié)點(diǎn)發(fā)送建立連接請(qǐng)求,若所述空閑接收上下文數(shù)量大于零,則同時(shí)向所述接收結(jié)點(diǎn)發(fā)送數(shù)據(jù)。本發(fā)明的實(shí)施例還提供了一種接收終端,包括:第二檢測(cè)模塊,用于接收發(fā)送結(jié)點(diǎn)發(fā)送的建立連接請(qǐng)求,并檢測(cè)空閑接收上下文的數(shù)量;第二分配模塊,用于若所述空閑接收上下文數(shù)量大于零,則將所述空閑接收上下文分配為用于接收發(fā)送數(shù)據(jù)的接收上下文;第二接收模塊,用于向所述發(fā)送結(jié)點(diǎn)反饋建立連接成功響應(yīng)信息,接收所述發(fā)送數(shù)據(jù)。本發(fā)明的上述方案有如下的有益效果:本發(fā)明所提供的數(shù)據(jù)發(fā)送方法、發(fā)送終端及接收終端通過(guò)在發(fā)送結(jié)點(diǎn)增加上下文預(yù)測(cè)部件,使得發(fā)送結(jié)點(diǎn)可以動(dòng)態(tài)跟蹤遠(yuǎn)程接收結(jié)點(diǎn)的接收上下文數(shù)量,當(dāng)預(yù)測(cè)遠(yuǎn)程結(jié)點(diǎn)無(wú)可用接收上下文時(shí),數(shù)據(jù)必須等待接收到建立連接成功響應(yīng)后才能發(fā)出,從而避免了數(shù)據(jù)帶寬的浪費(fèi);當(dāng)預(yù)測(cè)遠(yuǎn)程結(jié)點(diǎn)有可用接收上下文時(shí),數(shù)據(jù)在建立連接請(qǐng)求發(fā)出后可以立即發(fā)送,從而隱藏了建立連接延遲,縮短了數(shù)據(jù)通信時(shí)間;本發(fā)明所提供的數(shù)據(jù)發(fā)送方法、發(fā)送終端及接收終端還可以通過(guò)在接收結(jié)點(diǎn)的上下文反饋部件中增加優(yōu)先級(jí)表格,使得軟件可以靈活配置發(fā)送結(jié)點(diǎn)可以以隱藏建立連接延遲的發(fā)送發(fā)式所能使用的接收上下文的最大數(shù)量,這使得優(yōu)先級(jí)高的發(fā)送結(jié)點(diǎn)有更多的機(jī)會(huì)在發(fā)出建立連接請(qǐng)求后立即發(fā)送數(shù)據(jù),從而獲得更高的通信性能。附圖說(shuō)明圖1為本發(fā)明的數(shù)據(jù)發(fā)送方法的發(fā)送端的流程示意圖;圖2為本發(fā)明的數(shù)據(jù)發(fā)送方法的發(fā)送端的具體流程示意圖;圖3為本發(fā)明的數(shù)據(jù)發(fā)送方法的接收端的流程示意圖;圖4為本發(fā)明的數(shù)據(jù)發(fā)送方法的接收端的具體流程示意圖;圖5為本發(fā)明的發(fā)送終端及接收終端的結(jié)構(gòu)示意圖;圖6為本發(fā)明的并行計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖;圖7為本發(fā)明的接收上下文預(yù)測(cè)表rcpt表項(xiàng)的結(jié)構(gòu)示意圖;圖8為本發(fā)明的上下文反饋部件中優(yōu)先級(jí)表pt表項(xiàng)的結(jié)構(gòu)示意圖;圖9為本發(fā)明的發(fā)送結(jié)點(diǎn)與接收結(jié)點(diǎn)之間的交互流程示意圖之一;圖10為本發(fā)明的發(fā)送結(jié)點(diǎn)與接收結(jié)點(diǎn)之間的交互流程示意圖之二;圖11為本發(fā)明的發(fā)送結(jié)點(diǎn)與接收結(jié)點(diǎn)之間的交互流程示意圖之三。具體實(shí)施方式為使本發(fā)明要解決的技術(shù)問(wèn)題、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例進(jìn)行詳細(xì)描述。本發(fā)明針對(duì)現(xiàn)有的數(shù)據(jù)傳送時(shí)數(shù)據(jù)通信時(shí)間過(guò)長(zhǎng)或浪費(fèi)數(shù)據(jù)帶寬的問(wèn)題,提供了一種數(shù)據(jù)發(fā)送方法、發(fā)送終端及接收終端。如圖1所示,本發(fā)明的實(shí)施例提供了一種數(shù)據(jù)發(fā)送方法,適用于并行計(jì)算機(jī)系統(tǒng)的發(fā)送結(jié)點(diǎn),所述方法包括:步驟11,獲取數(shù)據(jù)發(fā)送請(qǐng)求信息,并檢測(cè)空閑發(fā)送上下文的數(shù)量;步驟12,若所述空閑發(fā)送上下文的數(shù)量大于零,則將所述空閑發(fā)送上下文分配為用于存儲(chǔ)所述發(fā)送數(shù)據(jù)的臨時(shí)狀態(tài)信息的發(fā)送上下文;步驟13,根據(jù)所述數(shù)據(jù)發(fā)送請(qǐng)求信息獲取接收結(jié)點(diǎn)號(hào),并根據(jù)所述接收結(jié)點(diǎn)號(hào)獲取上下文預(yù)測(cè)對(duì)應(yīng)表中的與所述接收結(jié)點(diǎn)號(hào)相對(duì)應(yīng)的空閑接收上下文數(shù)量;步驟14,向所述接收結(jié)點(diǎn)號(hào)相對(duì)應(yīng)的接收結(jié)點(diǎn)發(fā)送建立連接請(qǐng)求,若所述空閑接收上下文數(shù)量大于零,則同時(shí)向所述接收結(jié)點(diǎn)發(fā)送數(shù)據(jù)。本發(fā)明的上述實(shí)施例所述的數(shù)據(jù)發(fā)送方法在發(fā)送結(jié)點(diǎn)的網(wǎng)絡(luò)接口增加上下文預(yù)測(cè)部件,用于記錄遠(yuǎn)程結(jié)點(diǎn)空閑接收上下文的數(shù)量;上下文預(yù)測(cè)部件主要由接收上下文預(yù)測(cè)表rcpt(receivecontextpredicttable)構(gòu)成,rcpt可以組織為表格形式,表格中的每一項(xiàng)包含兩個(gè)位域,即結(jié)點(diǎn)號(hào)nodeid和空閑接收上下文數(shù)量rcnum。一般來(lái)說(shuō),如果并行計(jì)算機(jī)系統(tǒng)包含n個(gè)結(jié)點(diǎn),則該表格就有n-1項(xiàng),其中每一項(xiàng)對(duì)應(yīng)一個(gè)遠(yuǎn)程結(jié)點(diǎn)。查詢(xún)?cè)摫砀駮r(shí),以結(jié)點(diǎn)號(hào)為索引,即可獲取對(duì)應(yīng)結(jié)點(diǎn)的空閑接收上下文數(shù)量。初始化時(shí),rcpt的所有rcnum都設(shè)置為0。當(dāng)n較大時(shí),rcpt會(huì)占用較多的硬件資源,此時(shí)rcpt可以組織為cache形式,將nodeid作為cache的訪問(wèn)地址(即nodeid的低位為cache的緩存標(biāo)記索引index,高位為cache的緩存標(biāo)記tag),而rcnum則作為cache數(shù)據(jù)體中存儲(chǔ)的內(nèi)容。當(dāng)cache命中時(shí),cache將返回對(duì)應(yīng)nodeid的rcnum,而當(dāng)cache失效時(shí),則假定對(duì)應(yīng)nodeid的rcnum為0;通過(guò)在發(fā)送結(jié)點(diǎn)增加上下文預(yù)測(cè)部件,使得發(fā)送結(jié)點(diǎn)可以動(dòng)態(tài)跟蹤遠(yuǎn)程接收結(jié)點(diǎn)的接收上下文數(shù)量。當(dāng)預(yù)測(cè)遠(yuǎn)程結(jié)點(diǎn)無(wú)可用接收上下文時(shí),數(shù)據(jù)必須等待接收到建立連接成功響應(yīng)后才能發(fā)出,從而避免了數(shù)據(jù)帶寬的浪費(fèi);當(dāng)預(yù)測(cè)遠(yuǎn)程結(jié)點(diǎn)有可用接收上下文時(shí),數(shù)據(jù)在建立連接請(qǐng)求發(fā)出后可以立即發(fā)送,從而隱藏了建立連接延遲,縮短了數(shù)據(jù)通信時(shí)間。其中,cache的替換策略可以采用lru或pseudo-lru替換策略;響應(yīng)報(bào)文增加位域rcnum,用于攜帶接收結(jié)點(diǎn)返回的發(fā)送結(jié)點(diǎn)所能使用的空閑接收上下文數(shù)量。響應(yīng)報(bào)文一般包括建立連接成功響應(yīng)cnctack、建立連接拒絕響應(yīng)cnctnack、數(shù)據(jù)響應(yīng)dataack等等。其中,所述方法還包括:向所述接收結(jié)點(diǎn)號(hào)相對(duì)應(yīng)的接收結(jié)點(diǎn)發(fā)送建立連接請(qǐng)求,若所述空閑接收上下文數(shù)量等于零,則待接收到建立連接成功響應(yīng)信息后,再向所述接收結(jié)點(diǎn)發(fā)送數(shù)據(jù)。如圖2所示,所述方法還包括:步驟15,在發(fā)送所述發(fā)送數(shù)據(jù)的過(guò)程中,接收所述發(fā)送數(shù)據(jù)的數(shù)據(jù)響應(yīng)信息。其中,所述方法還包括:步驟16,待收到最后一個(gè)數(shù)據(jù)響應(yīng)信息后,向所述接收結(jié)點(diǎn)發(fā)送連接斷開(kāi)請(qǐng)求,切斷與所述接收結(jié)點(diǎn)的連接。本發(fā)明的上述實(shí)施例所述的數(shù)據(jù)發(fā)送方法在發(fā)送結(jié)點(diǎn)的具體執(zhí)行步驟如下:1)發(fā)送結(jié)點(diǎn)n收到去往接收結(jié)點(diǎn)m的數(shù)據(jù)發(fā)送請(qǐng)求;2)發(fā)送結(jié)點(diǎn)檢查是否有空閑的發(fā)送上下文,如果沒(méi)有則停留在2)一直等待,直到有空閑的發(fā)送上下文可供使用;3)發(fā)送結(jié)點(diǎn)分配發(fā)送上下文;4)設(shè)置datastart=false,datastart指示數(shù)據(jù)傳輸是否已經(jīng)啟動(dòng),true表示數(shù)據(jù)傳輸已經(jīng)啟動(dòng),false表示數(shù)據(jù)傳輸還未開(kāi)始;5)在上下文預(yù)測(cè)部件的rcpt中查詢(xún)m所對(duì)應(yīng)的rcnum,如果rcpt[m].rcnum=0,則說(shuō)明接收方無(wú)可用接收上下文,發(fā)出建立連接請(qǐng)求后必須等到收到建立連接成功響應(yīng)后才能發(fā)送數(shù)據(jù),跳轉(zhuǎn)到8)執(zhí)行;6)rcpt[m].rcnum>0說(shuō)明接收方有可用接收上下文,發(fā)出建立連接請(qǐng)求后可以立即發(fā)送數(shù)據(jù),而不必等待建立連接成功響應(yīng)的到來(lái),設(shè)置rcpt[m].rcnum=rcpt[m].rcnum-1,datastart=true;7)向接收結(jié)點(diǎn)m發(fā)送建立連接請(qǐng)求cnctreq,然后緊接著發(fā)送數(shù)據(jù)data,跳轉(zhuǎn)到9)執(zhí)行;8)向接收結(jié)點(diǎn)m發(fā)送建立連接請(qǐng)求cnctreq;9)等待來(lái)自m的響應(yīng)報(bào)文,如果收到建立連接成功響應(yīng)報(bào)文cnctack則跳轉(zhuǎn)到10)執(zhí)行,如果收到建立連接拒絕響應(yīng)報(bào)文cnctnack則跳轉(zhuǎn)到13)執(zhí)行,如果收到數(shù)據(jù)響應(yīng)報(bào)文dataack則跳轉(zhuǎn)到14)執(zhí)行,否則一直停留在9)等待響應(yīng)報(bào)文的到來(lái);10)更新rcpt[m].rcnum=cnctack.rcnum;11)判斷數(shù)據(jù)傳輸是否已經(jīng)啟動(dòng),如果datastart=true則跳轉(zhuǎn)到9)執(zhí)行;12)向接收結(jié)點(diǎn)m發(fā)送數(shù)據(jù)data,跳轉(zhuǎn)到9)執(zhí)行;13)更新rcpt[m].rcnum=cnctnack.rcnum,跳轉(zhuǎn)到4)執(zhí)行;14)更新rcpt[m].rcnum=dataack.rcnum;15)判斷是否所有的數(shù)據(jù)響應(yīng)都已經(jīng)收齊,如果還未收齊則跳轉(zhuǎn)到9)執(zhí)行;16)釋放發(fā)送上下文并向接收結(jié)點(diǎn)m發(fā)送連接斷開(kāi)請(qǐng)求discnctreq。如圖3所示,本發(fā)明的實(shí)施例還提供了一種數(shù)據(jù)發(fā)送方法,適用于并行計(jì)算機(jī)系統(tǒng)的接收結(jié)點(diǎn),所述方法包括:步驟21,接收發(fā)送結(jié)點(diǎn)發(fā)送的建立連接請(qǐng)求,并檢測(cè)空閑接收上下文的數(shù)量;步驟22,若所述空閑接收上下文數(shù)量大于零,則將所述空閑接收上下文分配為用于存儲(chǔ)所述發(fā)送數(shù)據(jù)的臨時(shí)狀態(tài)信息的接收上下文;步驟23,向所述發(fā)送結(jié)點(diǎn)反饋建立連接成功響應(yīng)信息,接收所述發(fā)送數(shù)據(jù)。本發(fā)明的上述實(shí)施例所述的數(shù)據(jù)發(fā)送方法通過(guò)在所述接收結(jié)點(diǎn)的網(wǎng)絡(luò)接口增加上下文反饋部件,用于向發(fā)送結(jié)點(diǎn)提供可以使用的本結(jié)點(diǎn)接收上下文數(shù)量;上下文反饋部件包含一個(gè)優(yōu)先級(jí)表pt(prioritytable),用于限制發(fā)送結(jié)點(diǎn)可以以隱藏建立連接延遲的發(fā)送發(fā)式所能使用的接收上下文的最大數(shù)量。pt的每一項(xiàng)包含三個(gè)位域,即有效標(biāo)志v、結(jié)點(diǎn)號(hào)nodeid和接收上下文數(shù)量上界upperlimit。查詢(xún)?cè)摫砀駮r(shí),以(v,nodeid)為索引,即可獲取對(duì)應(yīng)結(jié)點(diǎn)的upperlimit。假定接收結(jié)點(diǎn)的空閑接收上下文數(shù)量為freercnum,最終接收結(jié)點(diǎn)向發(fā)送結(jié)點(diǎn)返回的空閑接收上下文數(shù)量為min{upperlimit,freercnum}。pt的總項(xiàng)數(shù)應(yīng)根據(jù)網(wǎng)絡(luò)接口所能提供的硬件資源進(jìn)行合理設(shè)置,其值可以小于并行計(jì)算機(jī)系統(tǒng)中的結(jié)點(diǎn)總數(shù)。如果某個(gè)nodeid在某個(gè)接收結(jié)點(diǎn)的pt中查詢(xún)失敗,則假定該nodeid對(duì)應(yīng)的upperlimit為缺省值dul(defaultupperlimit)。如果dul為0,這意味著該nodeid必須以顯示建立通信連接的方式與該接收結(jié)點(diǎn)進(jìn)行通信。pt表和dul由管理軟件配置,并且在通信過(guò)程中可以動(dòng)態(tài)調(diào)整;通過(guò)在接收結(jié)點(diǎn)的上下文反饋部件中增加優(yōu)先級(jí)表格,使得軟件可以靈活配置發(fā)送結(jié)點(diǎn)可以以隱藏建立連接延遲的發(fā)送發(fā)式所能使用的接收上下文的最大數(shù)量,這使得優(yōu)先級(jí)高的發(fā)送結(jié)點(diǎn)有更多的機(jī)會(huì)在發(fā)出建立連接請(qǐng)求后立即發(fā)送數(shù)據(jù),從而獲得更高的通信性能。其中,所述方法還包括:若所述空閑接收上下文數(shù)量等于零,則向所述發(fā)送結(jié)點(diǎn)反饋建立連接拒絕響應(yīng)信息。如圖5所示,,所述方法還包括:步驟24,在接收所述發(fā)送數(shù)據(jù)的過(guò)程中,向所述發(fā)送結(jié)點(diǎn)反饋所述發(fā)送數(shù)據(jù)發(fā)送成功的響應(yīng)信息。其中,所述方法還包括:步驟25,接收所述發(fā)送結(jié)點(diǎn)發(fā)送的連接斷開(kāi)請(qǐng)求,切斷與所述發(fā)送結(jié)點(diǎn)的連接。本發(fā)明的上述實(shí)施例所述的數(shù)據(jù)發(fā)送方法在接收結(jié)點(diǎn)的具體執(zhí)行步驟如下:1)等待來(lái)自發(fā)送結(jié)點(diǎn)的請(qǐng)求報(bào)文,如果是來(lái)自發(fā)送結(jié)點(diǎn)n的建立連接請(qǐng)求報(bào)文cnctreq則跳轉(zhuǎn)到2)執(zhí)行,如果是來(lái)自發(fā)送結(jié)點(diǎn)n的數(shù)據(jù)報(bào)文data則跳轉(zhuǎn)到6)執(zhí)行,如果是來(lái)自發(fā)送結(jié)點(diǎn)n的連接斷開(kāi)請(qǐng)求報(bào)文則跳轉(zhuǎn)到8)執(zhí)行,否則一直停留在1)等待請(qǐng)求報(bào)文的到來(lái);2)接收結(jié)點(diǎn)檢查是否有空閑的接收上下文,如果沒(méi)有則跳轉(zhuǎn)到5)執(zhí)行;3)接收結(jié)點(diǎn)分配接收上下文;4)接收結(jié)點(diǎn)向發(fā)送結(jié)點(diǎn)n返回建立連接成功響應(yīng)cnctack,并設(shè)置cnctack.rcnum=min{pt[n].upperlimit,freercnum},然后跳轉(zhuǎn)到1)執(zhí)行;5)接收結(jié)點(diǎn)向發(fā)送結(jié)點(diǎn)n返回建立連接拒絕響應(yīng)cnctnack,并設(shè)置cnctnack.rcnum=min{pt[n].upperlimit,freercnum},然后跳轉(zhuǎn)到1)執(zhí)行;6)如果對(duì)應(yīng)的接收上下文不存在則跳轉(zhuǎn)到7)執(zhí)行,否則接收結(jié)點(diǎn)向發(fā)送結(jié)點(diǎn)n返回?cái)?shù)據(jù)響應(yīng)dataack,設(shè)置dataack.rcnum=min{pt[n].upperlimit,freercnum},然后跳轉(zhuǎn)到1)執(zhí)行;7)丟棄data報(bào)文,然后跳轉(zhuǎn)到1)執(zhí)行;8)釋放對(duì)應(yīng)的接收上下文,然后跳轉(zhuǎn)到1)執(zhí)行。其中,本發(fā)明的上述實(shí)施例所述的數(shù)據(jù)發(fā)送方法的具體執(zhí)行步驟如下:1)發(fā)送結(jié)點(diǎn)收到數(shù)據(jù)發(fā)送請(qǐng)求。2)發(fā)送結(jié)點(diǎn)分配發(fā)送上下文。3)發(fā)送結(jié)點(diǎn)根據(jù)上下文預(yù)測(cè)部件判斷是否可以在發(fā)出建立連接請(qǐng)求后立即發(fā)送數(shù)據(jù)。如果不能立即發(fā)送數(shù)據(jù)則跳轉(zhuǎn)到6)執(zhí)行。4)發(fā)送結(jié)點(diǎn)向接收結(jié)點(diǎn)發(fā)送建立連接請(qǐng)求后立即發(fā)送數(shù)據(jù)。5)接收結(jié)點(diǎn)收到建立連接請(qǐng)求后分配接收上下文并返回建立連接成功響應(yīng),然后跳到9)執(zhí)行。6)發(fā)送結(jié)點(diǎn)向接收結(jié)點(diǎn)發(fā)送建立連接請(qǐng)求。7)接收結(jié)點(diǎn)收到建立連接請(qǐng)求后分配接收上下文并返回建立連接成功響應(yīng)。8)發(fā)送結(jié)點(diǎn)收到建立連接成功響應(yīng)后發(fā)送數(shù)據(jù)。9)接收結(jié)點(diǎn)收到數(shù)據(jù)并返回?cái)?shù)據(jù)響應(yīng)。10)發(fā)送結(jié)點(diǎn)收到最后一個(gè)數(shù)據(jù)響應(yīng)后發(fā)出連接斷開(kāi)請(qǐng)求并釋放發(fā)送上下文。11)接收結(jié)點(diǎn)收到連接斷開(kāi)請(qǐng)求后釋放接收上下文。如圖5所示,本發(fā)明的實(shí)施例還提供了一種發(fā)送終端,包括:第一檢測(cè)模塊,用于獲取數(shù)據(jù)發(fā)送請(qǐng)求信息,并檢測(cè)空閑發(fā)送上下文的數(shù)量;第一分配模塊,用于若所述空閑發(fā)送上下文的數(shù)量大于零,則將所述空閑發(fā)送上下文分配為用于存儲(chǔ)所述發(fā)送數(shù)據(jù)的臨時(shí)狀態(tài)信息的發(fā)送上下文;獲取模塊,用于根據(jù)所述數(shù)據(jù)發(fā)送請(qǐng)求信息獲取接收結(jié)點(diǎn)號(hào),并根據(jù)所述接收結(jié)點(diǎn)號(hào)獲取上下文預(yù)測(cè)對(duì)應(yīng)表中的與所述接收結(jié)點(diǎn)號(hào)相對(duì)應(yīng)的空閑接收上下文數(shù)量;第一發(fā)送模塊,用于向所述接收結(jié)點(diǎn)號(hào)相對(duì)應(yīng)的接收結(jié)點(diǎn)發(fā)送建立連接請(qǐng)求,若所述空閑接收上下文數(shù)量大于零,則同時(shí)向所述接收結(jié)點(diǎn)發(fā)送數(shù)據(jù)。其中,本發(fā)明的上述實(shí)施例所述的發(fā)送終端可以為上述的發(fā)送結(jié)點(diǎn)。其中,所述第一發(fā)送模塊還用于向所述接收結(jié)點(diǎn)號(hào)相對(duì)應(yīng)的接收結(jié)點(diǎn)發(fā)送建立連接請(qǐng)求,若所述空閑接收上下文數(shù)量等于零,則待接收到建立連接成功響應(yīng)信息后,再向所述接收結(jié)點(diǎn)發(fā)送數(shù)據(jù)。其中,所述發(fā)送終端還包括:第一接收模塊,用于在發(fā)送所述發(fā)送數(shù)據(jù)的過(guò)程中,接收所述發(fā)送數(shù)據(jù)的數(shù)據(jù)響應(yīng)信息。其中,所述發(fā)送終端還包括:第二發(fā)送模塊,用于待收到最后一個(gè)數(shù)據(jù)響應(yīng)信息后,向所述接收結(jié)點(diǎn)發(fā)送連接斷開(kāi)請(qǐng)求,切斷與所述接收結(jié)點(diǎn)的連接。本發(fā)明的實(shí)施例還提供了一種接收終端,包括:第二檢測(cè)模塊,用于接收發(fā)送結(jié)點(diǎn)發(fā)送的建立連接請(qǐng)求,并檢測(cè)空閑接收上下文的數(shù)量;第二分配模塊,用于若所述空閑接收上下文數(shù)量大于零,則將所述空閑接收上下文分配為用于接收發(fā)送數(shù)據(jù)的接收上下文;第二接收模塊,用于向所述發(fā)送結(jié)點(diǎn)反饋建立連接成功響應(yīng)信息,接收所述發(fā)送數(shù)據(jù)。其中,本發(fā)明的上述實(shí)施例所述的接收終端可以為上述的接收結(jié)點(diǎn)。其中,所述第二接收模塊還用于若所述空閑接收上下文數(shù)量等于零,則向所述發(fā)送結(jié)點(diǎn)反饋建立連接拒絕響應(yīng)信息。其中,所述接收終端還包括:第三發(fā)送模塊,用于在接收所述發(fā)送數(shù)據(jù)的過(guò)程中,向所述發(fā)送結(jié)點(diǎn)反饋所述發(fā)送數(shù)據(jù)發(fā)送成功的響應(yīng)信息。其中,所述接收終端還包括:第三接收模塊,用于接收所述發(fā)送結(jié)點(diǎn)發(fā)送的連接斷開(kāi)請(qǐng)求,切斷與所述發(fā)送結(jié)點(diǎn)的連接。本發(fā)明的上述實(shí)施例所述的數(shù)據(jù)發(fā)送方法、發(fā)送終端及接收終端通過(guò)在發(fā)送結(jié)點(diǎn)增加上下文預(yù)測(cè)部件,使得發(fā)送結(jié)點(diǎn)可以動(dòng)態(tài)跟蹤遠(yuǎn)程接收結(jié)點(diǎn)的接收上下文數(shù)量。當(dāng)預(yù)測(cè)遠(yuǎn)程結(jié)點(diǎn)無(wú)可用接收上下文時(shí),數(shù)據(jù)必須等待接收到建立連接成功響應(yīng)后才能發(fā)出,從而避免了數(shù)據(jù)帶寬的浪費(fèi);當(dāng)預(yù)測(cè)遠(yuǎn)程結(jié)點(diǎn)有可用接收上下文時(shí),數(shù)據(jù)在建立連接請(qǐng)求發(fā)出后可以立即發(fā)送,從而隱藏了建立連接延遲,縮短了數(shù)據(jù)通信時(shí)間;通過(guò)在接收結(jié)點(diǎn)的上下文反饋部件中增加優(yōu)先級(jí)表格,使得軟件可以靈活配置發(fā)送結(jié)點(diǎn)可以以隱藏建立連接延遲的發(fā)送發(fā)式所能使用的接收上下文的最大數(shù)量,這使得優(yōu)先級(jí)高的發(fā)送結(jié)點(diǎn)有更多的機(jī)會(huì)在發(fā)出建立連接請(qǐng)求后立即發(fā)送數(shù)據(jù),從而獲得更高的通信性能;本發(fā)明為了闡述方便將結(jié)點(diǎn)分為了發(fā)送結(jié)點(diǎn)和接收結(jié)點(diǎn),但實(shí)際上每個(gè)結(jié)點(diǎn)既可以作為發(fā)送結(jié)點(diǎn),也可以作為接收結(jié)點(diǎn),即結(jié)點(diǎn)的網(wǎng)絡(luò)接口既包含發(fā)送上下文和上下文預(yù)測(cè)部件,也包含接收上下文和上下文反饋部件。如圖6所示,并行計(jì)算機(jī)系統(tǒng)通常是由多個(gè)計(jì)算結(jié)點(diǎn)和互連網(wǎng)絡(luò)組成,結(jié)點(diǎn)由處理器、網(wǎng)絡(luò)接口和內(nèi)存組成,結(jié)點(diǎn)通過(guò)網(wǎng)絡(luò)接口進(jìn)行數(shù)據(jù)的發(fā)送和接收,結(jié)點(diǎn)間通過(guò)互連網(wǎng)絡(luò)進(jìn)行通信。單邊通信和雙邊通信是兩種常用的通信機(jī)制,它將發(fā)送結(jié)點(diǎn)內(nèi)存中的某個(gè)區(qū)域的數(shù)據(jù)傳輸?shù)浇邮战Y(jié)點(diǎn)內(nèi)存中的某個(gè)接收區(qū)域中。在面向動(dòng)態(tài)連接機(jī)制的端到端數(shù)據(jù)可靠傳輸過(guò)程中,發(fā)送結(jié)點(diǎn)發(fā)出的請(qǐng)求必須得到接收結(jié)點(diǎn)的響應(yīng),以表明接收結(jié)點(diǎn)已正確收到了發(fā)送結(jié)點(diǎn)的請(qǐng)求報(bào)文。通過(guò)在發(fā)送結(jié)點(diǎn)的網(wǎng)絡(luò)接口中增加上下文預(yù)測(cè)部件和在接收結(jié)點(diǎn)的網(wǎng)絡(luò)接口中增加上下文反饋部件,發(fā)送結(jié)點(diǎn)可以動(dòng)態(tài)跟蹤接收結(jié)點(diǎn)的接收上下文數(shù)量,在預(yù)測(cè)接收結(jié)點(diǎn)有可用接收上下文的情形下,允許數(shù)據(jù)在建立連接請(qǐng)求發(fā)出之后立即發(fā)送,從而縮短數(shù)據(jù)通信時(shí)間。如圖7所示,本發(fā)明所述的接收上下文預(yù)測(cè)表rcpt是上下文預(yù)測(cè)部件的主要構(gòu)成部分,表格中的每一項(xiàng)包含兩個(gè)位域,即結(jié)點(diǎn)號(hào)nodeid和空閑接收上下文數(shù)量rcnum。一般來(lái)說(shuō),如果并行計(jì)算機(jī)系統(tǒng)包含n個(gè)結(jié)點(diǎn),則該表格就有n-1項(xiàng),其中每一項(xiàng)對(duì)應(yīng)一個(gè)遠(yuǎn)程結(jié)點(diǎn)。查詢(xún)?cè)摫砀駮r(shí),以nodeid為索引,即可獲取對(duì)應(yīng)結(jié)點(diǎn)的空閑接收上下文數(shù)量rcnum。如圖8所示,本發(fā)明所述的優(yōu)先級(jí)表pt用于限制發(fā)送結(jié)點(diǎn)可以以隱藏建立連接延遲的發(fā)送發(fā)式所能使用的接收上下文的最大數(shù)量。pt的每一項(xiàng)包含三個(gè)位域,即有效標(biāo)志v、結(jié)點(diǎn)號(hào)nodeid和接收上下文數(shù)量上界upperlimit;查詢(xún)?cè)摫砀駮r(shí),以(v,nodeid)為索引,即可獲取對(duì)應(yīng)結(jié)點(diǎn)的upperlimit。如圖9所示,針對(duì)本發(fā)明所述的預(yù)測(cè)接收結(jié)點(diǎn)無(wú)可用接收上下文時(shí)的建立連接和數(shù)據(jù)傳輸?shù)木唧w實(shí)施例,發(fā)送結(jié)點(diǎn)n接收到去往接收結(jié)點(diǎn)m的數(shù)據(jù)發(fā)送請(qǐng)求,結(jié)點(diǎn)n通過(guò)rcpt查詢(xún)到結(jié)點(diǎn)m無(wú)可用接收上下文,因此結(jié)點(diǎn)n在發(fā)送完建立連接請(qǐng)求cnctreq后不立即發(fā)送數(shù)據(jù)data。結(jié)點(diǎn)m收到來(lái)自結(jié)點(diǎn)n的cnctreq,由于存在空閑接收上下文(數(shù)量為256),因此結(jié)點(diǎn)m分配接收上下文,并向結(jié)點(diǎn)n返回建立連接成功響應(yīng)cnctack。當(dāng)前結(jié)點(diǎn)m的空閑接收上下文數(shù)量為255(cnctreq已消耗了一個(gè)接收上下文),pt[n]=100,因此設(shè)置cnctack的rcnum=100。結(jié)點(diǎn)n收到來(lái)自結(jié)點(diǎn)m的cnctack后開(kāi)始發(fā)送數(shù)據(jù)data,并更新rcpt[m]=100。結(jié)點(diǎn)m收到來(lái)自結(jié)點(diǎn)n的data后返回?cái)?shù)據(jù)響應(yīng)dataack。當(dāng)前結(jié)點(diǎn)m的空閑接收上下文數(shù)量為80(來(lái)自除結(jié)點(diǎn)n之外的其它發(fā)送結(jié)點(diǎn)的建立連接請(qǐng)求消耗了接收上下文),pt[n]=100,因此設(shè)置dataack的rcnum=80。結(jié)點(diǎn)n收到來(lái)自結(jié)點(diǎn)m的dataack后發(fā)出連接斷開(kāi)請(qǐng)求discnctreq,更新rcpt[m].rcnum=80,并釋放發(fā)送上下文。結(jié)點(diǎn)m收到來(lái)自結(jié)點(diǎn)n的discnctreq后釋放接收上下文。如圖10所示,針對(duì)本發(fā)明所述的預(yù)測(cè)接收結(jié)點(diǎn)有可用接收上下文且預(yù)測(cè)成功時(shí)的建立連接和數(shù)據(jù)傳輸?shù)木唧w實(shí)施例,發(fā)送結(jié)點(diǎn)n接收到去往接收結(jié)點(diǎn)m的數(shù)據(jù)發(fā)送請(qǐng)求,結(jié)點(diǎn)n通過(guò)rcpt查詢(xún)到結(jié)點(diǎn)m有可用接收上下文,因此結(jié)點(diǎn)n在發(fā)送完建立連接請(qǐng)求cnctreq后立即發(fā)送數(shù)據(jù)data。結(jié)點(diǎn)m收到來(lái)自結(jié)點(diǎn)n的cnctreq,由于存在空閑接收上下文(數(shù)量為256),因此結(jié)點(diǎn)m分配接收上下文,并向結(jié)點(diǎn)n返回建立連接成功響應(yīng)cnctack。當(dāng)前結(jié)點(diǎn)m的空閑接收上下文數(shù)量為255(cnctreq已消耗了一個(gè)接收上下文),pt[n]=100,因此設(shè)置cnctack的rcnum=100。緊接著,結(jié)點(diǎn)m收到來(lái)自結(jié)點(diǎn)n的data后返回?cái)?shù)據(jù)響應(yīng)dataack。當(dāng)前結(jié)點(diǎn)m的空閑接收上下文數(shù)量為255,pt[n]=100,因此設(shè)置dataack的rcnum=100。結(jié)點(diǎn)n收到來(lái)自結(jié)點(diǎn)m的cnctack后發(fā)現(xiàn)數(shù)據(jù)傳輸已經(jīng)啟動(dòng),因此不再發(fā)送數(shù)據(jù),并更新rcpt[m]=100。緊接著,結(jié)點(diǎn)n收到來(lái)自結(jié)點(diǎn)m的dataack后發(fā)出連接斷開(kāi)請(qǐng)求discnctreq,更新rcpt[m].rcnum=100,并釋放發(fā)送上下文。結(jié)點(diǎn)m收到來(lái)自結(jié)點(diǎn)n的discnctreq后釋放接收上下文。如圖11所示,針對(duì)本發(fā)明所述的預(yù)測(cè)接收結(jié)點(diǎn)有可用接收上下文且預(yù)測(cè)失敗時(shí)的建立連接和數(shù)據(jù)傳輸?shù)木唧w實(shí)施例,發(fā)送結(jié)點(diǎn)n接收到去往接收結(jié)點(diǎn)m的數(shù)據(jù)發(fā)送請(qǐng)求,結(jié)點(diǎn)n通過(guò)rcpt查詢(xún)到結(jié)點(diǎn)m有可用接收上下文,因此結(jié)點(diǎn)n在發(fā)送完建立連接請(qǐng)求cnctreq后立即發(fā)送數(shù)據(jù)data。結(jié)點(diǎn)m收到來(lái)自結(jié)點(diǎn)n的cnctreq,由于當(dāng)前空閑接收上下文數(shù)量為0,因此結(jié)點(diǎn)m向結(jié)點(diǎn)n返回建立連接拒絕響應(yīng)cnctnack。當(dāng)前結(jié)點(diǎn)m的空閑接收上下文數(shù)量為0,pt[n]=100,因此設(shè)置cnctnack的rcnum=0。后續(xù)到達(dá)的data被結(jié)點(diǎn)m丟棄。結(jié)點(diǎn)n收到來(lái)自結(jié)點(diǎn)m的cnctnack后,更新rcpt[m].rcnum=0,并重發(fā)cnctreq。由于此時(shí)rcpt[m].rcnum=0,所以發(fā)送完cnctreq后不立即發(fā)送data。結(jié)點(diǎn)m收到來(lái)自結(jié)點(diǎn)n的cnctreq,由于存在空閑接收上下文(數(shù)量為50,來(lái)自除結(jié)點(diǎn)n之外的其它發(fā)送結(jié)點(diǎn)陸續(xù)完成了發(fā)往結(jié)點(diǎn)m的數(shù)據(jù)傳輸任務(wù),從而使得結(jié)點(diǎn)m的空閑接收上下文數(shù)量增加),因此結(jié)點(diǎn)m分配接收上下文,并向結(jié)點(diǎn)n返回建立連接成功響應(yīng)cnctack。當(dāng)前結(jié)點(diǎn)m的空閑接收上下文數(shù)量為49(cnctreq已消耗了一個(gè)接收上下文),pt[n]=100,因此設(shè)置cnctack的rcnum=49。結(jié)點(diǎn)n收到來(lái)自結(jié)點(diǎn)m的cnctack后開(kāi)始發(fā)送數(shù)據(jù)data,并更新rcpt[m]=49。結(jié)點(diǎn)m收到來(lái)自結(jié)點(diǎn)n的data后返回?cái)?shù)據(jù)響應(yīng)dataack。當(dāng)前結(jié)點(diǎn)m的空閑接收上下文數(shù)量為200(來(lái)自除結(jié)點(diǎn)n之外的其它發(fā)送結(jié)點(diǎn)陸續(xù)完成了發(fā)往結(jié)點(diǎn)m的數(shù)據(jù)傳輸任務(wù),從而使得結(jié)點(diǎn)m的空閑接收上下文數(shù)量增加),pt[n]=100,因此設(shè)置dataack的rcnum=100。結(jié)點(diǎn)n收到來(lái)自結(jié)點(diǎn)m的dataack后發(fā)出連接斷開(kāi)請(qǐng)求discnctreq,更新rcpt[m].rcnum=100,并釋放發(fā)送上下文。結(jié)點(diǎn)m收到來(lái)自結(jié)點(diǎn)n的discnctreq后釋放接收上下文。以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本
技術(shù)領(lǐng)域:
:的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12