本發(fā)明涉及PCIe高速總線的數(shù)據(jù)傳輸?shù)募夹g(shù)領(lǐng)域,尤其涉及了一種SR-IOV環(huán)境下多虛擬機(jī)并發(fā)DMA的順序調(diào)度方法及系統(tǒng)。
背景技術(shù):
虛擬化技術(shù)、多任務(wù)以及超線程技術(shù)是完全不同的,多任務(wù)是指在一個操作系統(tǒng)中多個程序同時一起運行,虛擬化技術(shù)中是可以同時運行多個操作系統(tǒng),而且每一個操作系統(tǒng)中都有多個程序運行,每一個操作系統(tǒng)都運行在一個虛擬的CPU或者是虛擬主機(jī)上,而超線程技術(shù)只是單CPU模擬雙CPU來平衡程序運行性能,這兩個模擬出來的CPU是不能分離的,只能協(xié)同工作。另外,虛擬化方案主要有兩種,軟件虛擬化和硬件虛擬化,其中,軟件虛擬化是以前主流的解決方案,但該方案存在的主要缺點是因為數(shù)據(jù)流在軟件中分層傳輸,大大降低了實際的數(shù)據(jù)傳輸效率,更重要的是在當(dāng)前大數(shù)據(jù)和云計算的趨勢下,無法滿足更高更快數(shù)據(jù)傳輸速率的需求,而采用硬件虛擬化技術(shù)使得數(shù)據(jù)流不需要經(jīng)過軟件的分層傳遞,直接在內(nèi)存和硬件外圍設(shè)備之間進(jìn)行透傳,大大提高了數(shù)據(jù)流的傳輸速度。
目前的硬件虛擬化技術(shù)是單根IO虛擬化(SR-IOV)技術(shù),SR-IOV是一種規(guī)范,使得單根端口下的單個快速外圍組件互連(PCIe)物理設(shè)備顯示為管理程序或客戶機(jī)操作系統(tǒng)的多個單獨的物理設(shè)備。
SR-IOV使用的物理功能(PF)和虛擬功能(VF)為SR-IOV設(shè)備管理全局的功能,PF是完整的PCIe功能,其包含用于配置和管理SR-IOV功能的SR-IOV擴(kuò)展功能,另外,PF可以配置和控制PCIe設(shè)備,且PF具有將數(shù)據(jù)移入和移出設(shè)備的完整功能,VF是輕量級的PCIe功能,其包含數(shù)據(jù)移動所需的所有資源,且具有一套經(jīng)過仔細(xì)精簡的配置資源集。
支持SR-IOV的PCIe設(shè)備將其多個實例提供給客戶機(jī)操作系統(tǒng)實例和管理程序,提供的虛擬功能數(shù)量取決于設(shè)備,對于要運行的已啟用SR-IOV的PCIe設(shè)備,在客戶機(jī)驅(qū)動程序或管理程序?qū)嵗校仨毦邆溥m當(dāng)?shù)腂IOS和硬件支持以及SR-IOV支持。
在目前很多高速數(shù)據(jù)處理應(yīng)用場景中,針對存儲器的讀寫事物處理占主導(dǎo)地位,在基于PCIe的高速數(shù)據(jù)傳輸應(yīng)用中,PCIe端點(Endpoint)設(shè)備要發(fā)揮出最大的數(shù)據(jù)傳輸效能,同時盡可能地減少主機(jī)CPU的占用率,就要采用DMA方式,就是由PCIe端點設(shè)備主動地向主機(jī)內(nèi)存發(fā)起DMA讀請求,然后接收傳輸進(jìn)來的數(shù)據(jù),或者由PCIe端點設(shè)備主動地對主機(jī)內(nèi)存發(fā)起DMA寫請求,以完成數(shù)據(jù)傳輸功能。依照SR-IOV規(guī)范,可以在一個PCIe設(shè)備里面實現(xiàn)多個虛擬設(shè)備VF,這樣操作系統(tǒng)支持的某個虛擬機(jī)就可以與某一個特定的VF綁定在一起,獨享對這個虛擬設(shè)備VF的訪問。通常,每個設(shè)備都是采用DMA工作方式,當(dāng)只有一個虛擬設(shè)備工作時,情況很簡單。但是當(dāng)操作系統(tǒng)里的多個虛擬機(jī)分別與PCIe設(shè)備的不同虛擬設(shè)備一一綁定后,就存在多個虛擬機(jī)并發(fā)DMA的情形。不管PCIe設(shè)備內(nèi)部有多少個虛擬設(shè)備,這些虛擬設(shè)備都必須通過PCIe設(shè)備的物理傳輸通道來進(jìn)行數(shù)據(jù)傳輸,而且這個通道是獨一的,因此當(dāng)多個虛擬機(jī)對應(yīng)的PCIe設(shè)備內(nèi)的虛擬設(shè)備并發(fā)DMA時,如何讓這些并發(fā)的DMA分別有序的進(jìn)行是一個至關(guān)重要的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是:當(dāng)多個虛擬機(jī)對應(yīng)的PCIe總線設(shè)備內(nèi)的虛擬設(shè)備并發(fā)DMA時,現(xiàn)有技術(shù)無法使上述并發(fā)的DMA分別有序的進(jìn)行。
為解決上述技術(shù)問題,本發(fā)明提供了一種SR-IOV環(huán)境下多虛擬機(jī)并發(fā)DMA的順序調(diào)度方法,該調(diào)度方法包括如下步驟:
S1,多個虛擬機(jī)分別向PCIe設(shè)備發(fā)送DMA請求命令,PCIe設(shè)備將所述的DMA請求命令分別存儲到PCIe設(shè)備內(nèi)的各命令寄存器組內(nèi);
S2,設(shè)計排隊注冊的機(jī)制:對多個虛擬機(jī)進(jìn)行排隊注冊、生成虛擬機(jī)號碼,并將注冊后的虛擬機(jī)號碼存儲在PCIe設(shè)備內(nèi)的第一寄存器內(nèi);
S3,當(dāng)?shù)谝患拇嫫鞔鎯σ粋€虛擬機(jī)號碼,則PCIe設(shè)備內(nèi)的第二寄存器內(nèi)相應(yīng)的存儲標(biāo)記由0置成1;
S4,設(shè)計一套自動循環(huán)檢測的狀態(tài)機(jī),狀態(tài)機(jī)按順序循環(huán)地檢測第二寄存器,若檢測到的存儲標(biāo)記是1,則PCIe設(shè)備自動開啟與該存儲標(biāo)記對應(yīng)的虛擬機(jī)號碼對應(yīng)的虛擬機(jī)DMA讀取操作;
S5,啟動DMA讀取操作后,PCIe設(shè)備接收由所述虛擬機(jī)發(fā)送的數(shù)據(jù),并將數(shù)據(jù)存儲到PCIe設(shè)備內(nèi)與所述虛擬機(jī)對應(yīng)的虛擬機(jī)存儲器中;
S6,S5中當(dāng)所述虛擬機(jī)的數(shù)據(jù)全部被存儲到虛擬機(jī)存儲器中后,第二寄存器與所述虛擬機(jī)相對應(yīng)的存儲標(biāo)記清0;
S7,自動循環(huán)檢測的狀態(tài)機(jī)按順序繼續(xù)監(jiān)測第二寄存器內(nèi)下一個存儲標(biāo)記,循環(huán)檢測。
進(jìn)一步,所述S1中PCIe設(shè)備解析DMA請求命令,根據(jù)解析結(jié)果判斷出與該DMA請求命令對應(yīng)的虛擬機(jī),并將該DMA請求命令存儲到PCIe設(shè)備內(nèi)與該虛擬機(jī)對應(yīng)的命令寄存器組內(nèi)。
上述進(jìn)一步的有益效果:設(shè)計DMA命令寄存器組,分別對應(yīng)于不同的虛擬機(jī),使得并發(fā)虛擬機(jī)DMA請求命令的發(fā)送彼此獨立,互不干擾。
進(jìn)一步,所述S2中,排隊注冊機(jī)制是按照時間的先后順序進(jìn)行排隊注冊的,對多個虛擬機(jī)進(jìn)行排隊注冊是根據(jù)對多個虛擬機(jī)發(fā)送的DMA請求命令到達(dá)PCIe設(shè)備的時間先后順序進(jìn)行排隊注冊的。
進(jìn)一步,所述S2中,注冊后的號碼是按照順序依次存儲在PCIe設(shè)備內(nèi)的第一寄存器內(nèi)的。
進(jìn)一步,所述S3中,第二寄存器與第一寄存器一一對應(yīng),當(dāng)?shù)谝患拇嫫靼错樞虼鎯σ粋€虛擬機(jī)號碼,則第二寄存器相應(yīng)地將存儲標(biāo)記按順序由0置成1。
本發(fā)明的有益效果:設(shè)計了DMA排隊注冊機(jī)制以及虛擬機(jī)循環(huán)自動檢測狀態(tài)機(jī),可以使得多虛擬機(jī)的DMA在狀態(tài)機(jī)的控制下自動有序執(zhí)行,不需要PCIe設(shè)備內(nèi)的CPU的參與,不僅減輕了PCIe設(shè)備內(nèi)CPU的負(fù)擔(dān),也大大提高了多虛擬機(jī)并發(fā)DMA的數(shù)據(jù)傳輸速度。
本發(fā)明還涉及一種SR-IOV環(huán)境下多虛擬機(jī)并發(fā)DMA的順序調(diào)度系統(tǒng),該調(diào)度系統(tǒng)包括:多個虛擬機(jī)、一個PCIe設(shè)備;所述PCIe設(shè)備內(nèi)包括:多個命令寄存器組、第一寄存器、第二寄存器、多個虛擬機(jī)存儲器、自動循環(huán)檢測的狀態(tài)機(jī);所述的多個虛擬機(jī)通過PCIe總線與PCIe設(shè)備內(nèi)的的虛擬設(shè)備聯(lián)系;多個命令寄存器組,用于存儲多個虛擬機(jī)發(fā)送的DMA請求命令;第一寄存器,用于存儲多臺虛擬機(jī)注冊后的注冊號碼;第二寄存器,用于根據(jù)第一寄存器存儲的注冊號碼對應(yīng)做存儲標(biāo)記;多個虛擬機(jī)存儲器,用于存儲虛擬機(jī)DMA返回來的數(shù)據(jù);自動循環(huán)檢測的狀態(tài)機(jī),用于檢測第二寄存器。
進(jìn)一步,所述的多個命令寄存器組,用于存儲多個虛擬機(jī)發(fā)送的DMA請求命令,所述的DMA請求命令是經(jīng)過PCIe設(shè)備解析的。
進(jìn)一步,所述的第一寄存器與第二寄存器一一對應(yīng)。
進(jìn)一步,該系統(tǒng)還包括:自動循環(huán)檢測的狀態(tài)機(jī),用于檢測第二寄存器,當(dāng)檢測到的存儲標(biāo)記為1時,與該結(jié)果對應(yīng)的虛擬機(jī)自動開啟DMA讀取操作,虛擬機(jī)向PCIe設(shè)備發(fā)送數(shù)據(jù);若檢測的存儲標(biāo)記為0時,狀態(tài)機(jī)繼續(xù)監(jiān)測下一個存儲標(biāo)記。
進(jìn)一步,所述的第二寄存器還用于當(dāng)開啟DMA讀取操作的虛擬機(jī)的數(shù)據(jù)全部被存儲到虛擬機(jī)存儲器中后,第二寄存器與該虛擬機(jī)相對應(yīng)的存儲標(biāo)記清0。
上述進(jìn)一步的有益效果:設(shè)計了DMA排隊注冊機(jī)制以及虛擬機(jī)循環(huán)自動檢測狀態(tài)機(jī),可以使得多虛擬機(jī)的DMA在狀態(tài)機(jī)的控制下自動有序執(zhí)行,不需要PCIe設(shè)備內(nèi)的CPU的參與,不僅減輕了PCIe設(shè)備內(nèi)CPU的負(fù)擔(dān),也大大提高了多虛擬機(jī)并發(fā)DMA的數(shù)據(jù)傳輸速度。
附圖說明
圖1為本發(fā)明的一種SR-IOV環(huán)境下多虛擬機(jī)并發(fā)DMA的順序調(diào)度方法流程圖;
圖2為本發(fā)明一種SR-IOV環(huán)境下多虛擬機(jī)并發(fā)DMA的順序調(diào)度方法的示意圖;
圖3為本發(fā)明一種SR-IOV環(huán)境下多虛擬機(jī)并發(fā)DMA的順序調(diào)度方法的示意圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的原理和特征進(jìn)行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
本發(fā)明中下面所述的多個均為至少2個,如:多個虛擬機(jī)為至少2個虛擬機(jī);多個命令寄存器組為至少2個命令寄存器組。
如圖1所示,本發(fā)明的一種SR-IOV環(huán)境下多虛擬機(jī)并發(fā)DMA的順序調(diào)度方法,該調(diào)度方法包括如下步驟:
S1,多個虛擬機(jī)分別向PCIe設(shè)備里面對應(yīng)的虛擬設(shè)備發(fā)送DMA請求命令,DMA請求命令通過PCIe總線傳輸?shù)絇CIe設(shè)備,PCIe設(shè)備解析所述的DMA請求命令,若解析出來是虛擬機(jī)VF1的DMA請求命令,并將所述的DMA請求命令存儲到與該虛擬機(jī)對應(yīng)的PCIe設(shè)備內(nèi)的命令寄存器組內(nèi);
S2,設(shè)計一個按時間先后順序排隊注冊的機(jī)制,將DMA請求命令按照到達(dá)PCIe設(shè)備的時間先后順序,對多臺虛擬機(jī)進(jìn)行排隊注冊,并將注冊后的虛擬機(jī)號碼按順序依次存儲在PCIe設(shè)備內(nèi)的第一寄存器內(nèi);
S3,PCIe設(shè)備內(nèi)的第二寄存器與第一寄存器一一對應(yīng),當(dāng)?shù)谝患拇嫫靼错樞虼鎯σ粋€虛擬機(jī)號碼,則第二寄存器想應(yīng)地將存儲標(biāo)記按順序由0置成1;
S4,設(shè)計一套自動循環(huán)檢測的狀態(tài)機(jī),狀態(tài)機(jī)按順序循環(huán)地檢測第二寄存器,若檢測到的存儲標(biāo)記是1,狀態(tài)機(jī)讀取第一寄存器內(nèi)與該存儲標(biāo)記對應(yīng)的虛擬機(jī)號碼,PCIe設(shè)備自動開啟與虛擬機(jī)號碼對應(yīng)的虛擬機(jī)DMA讀取操作;
S5,啟動DMA讀取操作后,PCIe設(shè)備接收由該虛擬機(jī)發(fā)送的DMA數(shù)據(jù),并將DMA數(shù)據(jù)存儲到PCIe設(shè)備內(nèi)與該虛擬機(jī)對應(yīng)的虛擬機(jī)存儲器中;
S6,當(dāng)S5中該虛擬機(jī)DMA數(shù)據(jù)全部被存儲到虛擬機(jī)存儲器中后,第二寄存器與該虛擬機(jī)相對應(yīng)的存儲標(biāo)記清0;
S7,自動循環(huán)檢測的狀態(tài)機(jī)按順序繼續(xù)監(jiān)測第二寄存器內(nèi)下一個存儲標(biāo)記,循環(huán)檢測,直到第二寄存器內(nèi)所有存儲標(biāo)記都被清0。
一種SR-IOV環(huán)境下多虛擬機(jī)并發(fā)DMA的順序調(diào)度系統(tǒng),該調(diào)度系統(tǒng)包括:多個虛擬機(jī)、一個PCIe設(shè)備;所述PCIe設(shè)備內(nèi)包括:多個命令寄存器組、第一寄存器、第二寄存器、自動循環(huán)檢測的狀態(tài)機(jī);所述的多個虛擬機(jī)指的是操作系統(tǒng)里的多個獨立的應(yīng)用程序,通過PCIe總線與PCIe設(shè)備的虛擬設(shè)備聯(lián)系起來;多個命令寄存器組,多個命令寄存器組,用于存儲多個虛擬機(jī)發(fā)送的DMA請求命令,所述的DMA請求命令是經(jīng)過PCIe設(shè)備解析的;第一寄存器,用于存儲多個虛擬機(jī)注冊后的注冊號碼;第二寄存器,用于根據(jù)第一寄存器存儲的注冊號碼對應(yīng)做存儲標(biāo)記;其中,第一寄存器與第二寄存器是一一對應(yīng)的;多個虛擬機(jī)存儲器,用于存儲虛擬機(jī)DMA返回的數(shù)據(jù);自動循環(huán)檢測的狀態(tài)機(jī),用于檢測第二寄存器。
該系統(tǒng)還包括:自動循環(huán)檢測的狀態(tài)機(jī),用于檢測第二寄存器,當(dāng)檢測到的存儲標(biāo)記為1時,與該結(jié)果對應(yīng)的虛擬機(jī)自動開啟DMA讀取操作,虛擬機(jī)向PCIe設(shè)備發(fā)送數(shù)據(jù);若檢測的存儲標(biāo)記為0時,狀態(tài)機(jī)繼續(xù)監(jiān)測下一個存儲標(biāo)記。
第二寄存器還用于當(dāng)開啟DMA讀取操作的虛擬機(jī)的數(shù)據(jù)全部被存儲到虛擬機(jī)存儲器中后,第二寄存器與該虛擬機(jī)相對應(yīng)的存儲標(biāo)記清0。
具體實施例
如圖2所述,從圖中可以看出,PCIe設(shè)備內(nèi)部為每一個虛擬機(jī)都配置了單獨的命令寄存器組以記錄從虛擬機(jī)傳來的DMA請求命令;此外,PCIe設(shè)備內(nèi)部還為每一個獨立的虛擬機(jī)都配置了單獨的虛擬機(jī)存儲器,以存儲從虛擬機(jī)上層傳輸進(jìn)來的數(shù)據(jù)。
如圖3所述,從圖中可以看出,PCIe設(shè)備對不同虛擬機(jī)發(fā)來的DMA讀命令進(jìn)行注冊,第一個到來的虛擬機(jī)DMA請求命令被注冊到隊列中的第一號位置,同時一號位置的標(biāo)志為從0被置為1,表明該位置有DMA讀任務(wù)存在;后續(xù)到來的虛擬機(jī)DMA讀任務(wù)按照到達(dá)時間的先后順序依次排隊,并在對應(yīng)的標(biāo)志位置1。
該方案設(shè)計了DMA命令寄存器組和虛擬機(jī)存儲器,其中虛擬機(jī)存儲器,是用來存儲虛擬機(jī)DMA返回來的數(shù)據(jù),每一個虛擬機(jī)都會與一個它所綁定的虛擬設(shè)備的虛擬機(jī)存儲器所對應(yīng),該虛擬機(jī)啟動DMA操作后,PCIe設(shè)備返回的數(shù)據(jù)就存儲在該虛擬機(jī)所對應(yīng)的虛擬機(jī)存儲器中,虛擬設(shè)備的虛擬機(jī)存儲器是彼此獨立的。,命令寄存器組和虛擬機(jī)存儲器分別對應(yīng)于不同的虛擬機(jī),這樣,并發(fā)虛擬機(jī)DMA的命令的發(fā)送和虛擬機(jī)DMA返回數(shù)據(jù)的存儲彼此獨立,互不干擾。設(shè)計了DMA排隊注冊機(jī)制以及虛擬機(jī)循環(huán)自動檢測狀態(tài)機(jī),可以使得多虛擬機(jī)的DMA在狀態(tài)機(jī)的控制下自動有序執(zhí)行,不需要PCIe設(shè)備內(nèi)的CPU的參與,不僅減輕了PCIe設(shè)備內(nèi)CPU的負(fù)擔(dān),也大大提高了多虛擬機(jī)并發(fā)DMA的數(shù)據(jù)傳輸速度。
支持硬件虛擬化SR-IOV的PCIe設(shè)備允許多個不同的虛擬機(jī)并發(fā)的進(jìn)行工作,這個一個PCIe設(shè)備可以在操作系統(tǒng)上被虛擬成多個獨立的虛擬設(shè)備VF,這些不同的虛擬設(shè)備分別以VF1、VF2、…,VFn標(biāo)識。
實施例
步驟1,并發(fā)虛擬機(jī)DMA命令發(fā)送
當(dāng)上述不同的虛擬機(jī)并發(fā)工作時,在不同或相同的時刻,各虛擬機(jī)分別向各自對應(yīng)的虛擬設(shè)備VF1、VF2、…、VFn等發(fā)送DMA請求命令,這些不同虛擬機(jī)對各自對應(yīng)的虛擬設(shè)備發(fā)送的DMA請求命令,通過PCIe總線傳輸?shù)絇CIe設(shè)備,PCIe設(shè)備解析這些到來的數(shù)據(jù)包,并解析出這些數(shù)據(jù)包的含義,如果解析出來的數(shù)據(jù)包是針對虛擬機(jī)VF1的DMA命令,那該命令就被存儲到圖2所示的虛擬機(jī)VF1對應(yīng)的VF1命令寄存器組。
步驟2,并發(fā)虛擬機(jī)DMA排隊注冊
設(shè)計了一個排隊機(jī)制,該排隊機(jī)制的思想是按照不同虛擬機(jī)的DMA命令到達(dá)PCIe設(shè)備的先后時間順序進(jìn)行排隊注冊,最先到達(dá)的排在最前面,最后到達(dá)的排在最后面,從圖3可以看到,這個排隊機(jī)制采用了兩個寄存器。第一寄存器是虛擬機(jī)號登記寄存器,按照各虛擬機(jī)DMA命令到來的先后順序,對各虛擬機(jī)進(jìn)行排隊,最先到達(dá)的虛擬機(jī)VFn1排在該寄存器的首位,并把該虛擬機(jī)對應(yīng)的虛擬機(jī)號碼n1,記錄在這個位置,第二個到達(dá)的虛擬機(jī)VFn2排在第二位,并把該虛擬機(jī)對應(yīng)的虛擬機(jī)號碼n2記錄在這個位置;后續(xù)到達(dá)的虛擬機(jī)依次類推排隊注冊。
第二寄存器是隊列任務(wù)標(biāo)志寄存器,當(dāng)最先到達(dá)的虛擬機(jī)VFn1注冊好后,隊伍任務(wù)標(biāo)志寄存器的最高位由0置成1,表明當(dāng)前位置有DMA的任務(wù);第二個到達(dá)的虛擬機(jī)VFn2次高位由0置成1,其他后續(xù)到達(dá)的任務(wù)依次照此處理。
步驟3,啟動虛擬機(jī)DMA操作
設(shè)計了一套自動循環(huán)檢測狀態(tài)機(jī),當(dāng)該狀態(tài)機(jī)從頭到尾循環(huán)的檢測隊列任務(wù)標(biāo)志寄存器,當(dāng)發(fā)現(xiàn)隊列任務(wù)標(biāo)志位某一位為0時,接著去搜尋后續(xù)的隊列標(biāo)志位,當(dāng)發(fā)現(xiàn)第一個不為0的標(biāo)志位時,然后讀取對應(yīng)該位置的虛擬機(jī)號登記寄存器,讀出對應(yīng)的虛擬機(jī)號碼,然后啟動該虛擬機(jī)的DMA操作,一旦啟動該虛擬機(jī)的DMA操作,PCIe設(shè)備內(nèi)對應(yīng)于該虛擬機(jī)的DMA通道就啟動,然后PCIe設(shè)備接收該虛擬機(jī)從外部傳遞到PCIe設(shè)備內(nèi)部的數(shù)據(jù),并將這些數(shù)據(jù)存儲在與該虛擬機(jī)對應(yīng)的虛擬機(jī)存儲器中。
步驟4,隊列任務(wù)標(biāo)志寄存器位清0,啟動下一個虛擬機(jī)DMA任務(wù)
虛擬機(jī)DMA的數(shù)據(jù)可大可小,對于數(shù)據(jù)量大的DMA讀,需要虛擬機(jī)的DMA控制器發(fā)出多次DMA命令才能得到全部的數(shù)據(jù)。因此,自動循環(huán)檢測狀態(tài)機(jī),一定要等到當(dāng)前的虛擬機(jī)DMA命令全部發(fā)送出去才能將當(dāng)前虛擬機(jī)對應(yīng)的隊列任務(wù)標(biāo)志寄存器位清0。然后順序檢測下一個不為零的標(biāo)志位,一旦發(fā)現(xiàn)有新的不為0的標(biāo)志位,就啟動下一個虛擬機(jī)DMA任務(wù)。
步驟5,依次類推,循環(huán)執(zhí)行
當(dāng)隊列里沒有待處理的虛擬機(jī)DMA或者隊列搜索到隊列結(jié)尾時,重新返回到隊列初始搜索狀態(tài),循環(huán)檢測。
在本說明書中,對上述術(shù)語的示意性表述不必須針對的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任一個或多個實施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實施例或示例以及不同實施例或示例的特征進(jìn)行結(jié)合和組合。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。