王洋
摘要:隨著工業(yè)水平的不斷發(fā)展,計算機已經(jīng)滲入到工業(yè)控制的很多領(lǐng)域。隨之而來的就是大量數(shù)據(jù)的處理以及運算,這就需要一個龐大的計算機系統(tǒng)作為支持。基于計算機協(xié)同工作理論(CSCW)的分布式耦合多機系統(tǒng)就是在此前提下受到研究人員關(guān)注的。本文對CSCW的工作原理以及多機規(guī)劃相關(guān)技術(shù)進行了較為深入的分析,給出了多機規(guī)劃系統(tǒng)的實現(xiàn)方法。
關(guān)鍵詞:CSCW;多機規(guī)劃;數(shù)據(jù)分配
中圖分類號:TP311
所謂CSCW,是指在計算機技術(shù)以及網(wǎng)絡(luò)技術(shù)的支持下,處于同一區(qū)域內(nèi)的一個群體相互傳輸信息、協(xié)同協(xié)作完成一項任務(wù)。CSCW的組成要素主要有以下幾部分:(1)信息共享。(2)多媒體區(qū)域組合通信。(3)組合成員之間協(xié)作管理。
CSCW支持多個計算機系統(tǒng)共同執(zhí)行同一任務(wù),也就是說CSCW對每一個任務(wù)進行劃分,并科學分配給組合內(nèi)的每一個計算機系統(tǒng),讓它們可以同時工作,共同去執(zhí)行一項任務(wù),CSCW起到一個總體協(xié)調(diào)的作用。這其中組合工作協(xié)調(diào)系統(tǒng)是CSCW的關(guān)鍵,它要對組合內(nèi)的每一個成員分配其所要承擔的任務(wù),同時還要對組合共同執(zhí)行任務(wù)的過程進行總控制協(xié)調(diào)。
1 多機規(guī)劃技術(shù)的實現(xiàn)
1.1 多機規(guī)劃系統(tǒng)任務(wù)分配
系統(tǒng)對任務(wù)進行分配以及動態(tài)調(diào)度,主要的作用就是想充分利用每一個單位計算機系統(tǒng)的可用資源,盡可能的去平衡分配任務(wù),保證每一個單位計算機系統(tǒng)均可以在最短的時間內(nèi)做出響應(yīng),從而從整體上降低整個系統(tǒng)的運算時間,提高系統(tǒng)運行過程的同步性。平衡的任務(wù)分配功能,能夠最大程度的降低系統(tǒng)執(zhí)行時間,最大限度的提高系統(tǒng)運行效率。多機規(guī)劃系統(tǒng)中的主控機就是任務(wù)分配的主要承擔者。主控機在系統(tǒng)的作用主要有兩個方面,一方面就是等待新任務(wù)的到來,并對這些任務(wù)進行劃分,平衡分配給各個單位計算機系統(tǒng);另一方面就是接收并分析各個執(zhí)行任務(wù)的單位計算機所反饋回來的執(zhí)行結(jié)果,根據(jù)分析來確定其下一步的任務(wù)。當主控機向每一個單位計算機系統(tǒng)分配任務(wù)時,也有兩種處理方式。第一種就是當新任務(wù)出現(xiàn)時,各個單位計算機處于空閑狀態(tài),這時主控機只需要對該任務(wù)根據(jù)單位計算機系統(tǒng)的個數(shù)來劃分任務(wù),同時將每一個子任務(wù)相應(yīng)的分配給不同的單位計算機系統(tǒng);第二中就是當新任務(wù)出現(xiàn)時,各個單位計算機系統(tǒng)還處于工作狀態(tài),這時就需要主控機根據(jù)每個計算機系統(tǒng)當前所執(zhí)行任務(wù)的類型來進行新任務(wù)的分配。如果當前計算機系統(tǒng)所執(zhí)行的任務(wù)與新任務(wù)不同,那么主控機就要根據(jù)工作時間來平衡分配新任務(wù);如果當前計算機系統(tǒng)所執(zhí)行的任務(wù)與新任務(wù)相同,那么這個任務(wù)將直接分配給該計算機系統(tǒng)繼續(xù)執(zhí)行。
1.2 多機規(guī)劃系統(tǒng)動態(tài)調(diào)度
系統(tǒng)將任務(wù)分配完后,各個單位計算機系統(tǒng)就開始執(zhí)行分配給自身的子任務(wù)。任務(wù)執(zhí)行完成后,會反饋給主控機相應(yīng)的執(zhí)行結(jié)果以及執(zhí)行時間,此時主控機就開始進行動態(tài)調(diào)度。多機規(guī)劃系統(tǒng)動態(tài)調(diào)度機制可以用下表來表示:
2 多機規(guī)劃系統(tǒng)數(shù)據(jù)傳輸及同步運算的實現(xiàn)
高速可靠的數(shù)據(jù)傳輸對于多機規(guī)劃系統(tǒng)而言非常關(guān)鍵,是多機規(guī)劃系統(tǒng)是否可以安全高效的執(zhí)行任務(wù)的基本保證。
數(shù)據(jù)同步執(zhí)行是多機規(guī)劃系統(tǒng)功能安全可靠實現(xiàn)的又一重要組成部分,主控機只有將所獲得任務(wù)信息實時安全的傳送給各個子系統(tǒng),才能夠保證多級規(guī)劃系統(tǒng)能夠高效的運行。
2.1 數(shù)據(jù)傳輸。本文所提及的多機規(guī)劃系統(tǒng)進行數(shù)據(jù)傳輸時,執(zhí)行的傳輸協(xié)議是UDP協(xié)議。但是UDP協(xié)議又天生有丟包以及數(shù)據(jù)亂序的缺陷。
UDP協(xié)議中數(shù)據(jù)丟包問題可以通過系統(tǒng)所建立的確認機制來解決。數(shù)據(jù)傳輸、接收的兩方Client與Server之間需要一個數(shù)據(jù)包確認過程,即Client端經(jīng)路由器向Server端發(fā)送數(shù)據(jù)包,在Server接收到該數(shù)據(jù)包后需要向Client端發(fā)送一個確認響應(yīng),已告知Client端收到了數(shù)據(jù)包。一旦超過規(guī)定時限Client未收到該確認信息,則表明Server端未收到所發(fā)送的數(shù)據(jù)包,Client需要重新發(fā)送。但是數(shù)據(jù)包重發(fā)的次數(shù)也是有限制的,如果重發(fā)的次數(shù)大于了限值,那么就可以認為目標機器不可接收,則需要在主控機中刪除該目標機器。
對于UDP協(xié)議中可能出現(xiàn)的數(shù)據(jù)亂序的問題,解決方式是將發(fā)送的每一幀數(shù)據(jù)都添加上幀號,同時確定出數(shù)據(jù)的總幀數(shù)。每一幀的具體結(jié)構(gòu)可以通過下表來表示:
2.2 數(shù)據(jù)同步。對于多機規(guī)劃系統(tǒng)而言,數(shù)據(jù)同步可以分為兩大類,一類是由主控機發(fā)起的,對總?cè)蝿?wù)數(shù)據(jù)、子任務(wù)數(shù)據(jù)、任務(wù)調(diào)度數(shù)據(jù)或者任務(wù)結(jié)果數(shù)據(jù)進行同步;另一類是由各個子系統(tǒng)發(fā)起的,對各個機器信息進行實時數(shù)據(jù)更新。不管是哪一種數(shù)據(jù)同步方式,均需要一個高效的安全的數(shù)據(jù)同步方法。
(1)環(huán)式同步法。對系統(tǒng)中所包含的主控機以及各個子系統(tǒng)均進行順序標號,形成一個可循環(huán)的機器系統(tǒng),數(shù)據(jù)更新的順序就按照編號的順序進行。也就是說系統(tǒng)內(nèi)的所有機器均按照自身的編號排列為一個可循環(huán)的線性系統(tǒng)。這樣每一個子系統(tǒng)均由一個前驅(qū)系統(tǒng)以及一個后繼系統(tǒng),信息更新就是將該系統(tǒng)中的信息更新到與其相連的前驅(qū)系統(tǒng)中。數(shù)據(jù)環(huán)視同步過程可以簡單描述為:主控機接收到所要更新的信息后,就將該信息發(fā)送給系統(tǒng)中編號最大的子系統(tǒng),這個子系統(tǒng)就將這個更新信息發(fā)送給與其相連的前驅(qū)系統(tǒng),隨后該更新信息就逐次發(fā)送給下一個前驅(qū)系統(tǒng)。同步過程的結(jié)束是以主控機接收到編號最小的子系統(tǒng)所發(fā)送回來的確認信息為準。(2)星式同步法。所謂星式同步法,是指所需要更新的信息是由主控機直接發(fā)送給各個子系統(tǒng)的。主控機事先對需要進行更新的信息進行匯總,然后將這些更新信息直接發(fā)送給系統(tǒng)中的各個子系統(tǒng)。具體的更新過程可以描述為:主控機對任務(wù)信息進行整理后,將這些信息依次發(fā)送給各個子系統(tǒng)。當子系統(tǒng)收到主控機發(fā)送個信息后,需要向主控機反饋接收確認信號。主控機接收到反饋信號,就說明發(fā)送成功;如果未接收到發(fā)送信號,則表明發(fā)送不成功,需要進行重發(fā)。一旦超過了重發(fā)限值,則認為該子系統(tǒng)無法接受,轉(zhuǎn)入宕機處理。
(3)分組同步法。對于多機規(guī)劃系統(tǒng)而言,一旦出現(xiàn)過多的一級管理,那么勢必會影響主控機的工作性能。為了能夠解決大系統(tǒng)出現(xiàn)的這種問題,研究人員就提出了分級管理模式。所謂分級管理,就是在多機規(guī)劃系統(tǒng)中,將各個子系統(tǒng)進行組分劃分,每一個小組中有一個系統(tǒng)是該小組的負責人,主控機與這個小組中的任何一個子系統(tǒng)聯(lián)系只需聯(lián)系這個小組負責人即可,再由小組負責人來向該子系統(tǒng)具體分配任務(wù)。主控機與小組負責人之間、小組內(nèi)各個子系統(tǒng)之間實際數(shù)據(jù)同步過程與星式同步法相類似。
3 多機規(guī)劃系統(tǒng)異常處理方法
多機規(guī)劃系統(tǒng)的異常處理要在兩個層面上進行把握:一種就是程序?qū)用嫔?,每一個子系統(tǒng)運行過程的程序設(shè)計一定要考慮到異常情況的出現(xiàn),以及處理辦法,對于各種可能出現(xiàn)的異常情況都要有相應(yīng)的處理程序;另外一種就是在系統(tǒng)層面上,當一些子系統(tǒng)出現(xiàn)了宕機或者離線的情況時,不需要在執(zhí)行系統(tǒng)復(fù)位操作就可以完成所分配的任務(wù)。本文研究的多機規(guī)劃技術(shù),對于異常問題處理,給出了具體的解決程序:
try
{//可能導(dǎo)致異常的代碼
if(出現(xiàn)錯誤了?)
{
throwmyerror(“somethingbadhappended”);
}
}
Catch(myerror)
{//異常處理過程
}
3.1 拋出異常。所謂異常拋出動作,是指程序運行過程中,當出現(xiàn)異常情況時,運行的前后環(huán)境并未給出解決異常情況處理的足夠信息,此時需要建立一個包含錯誤信息的數(shù)據(jù)包,并將該數(shù)據(jù)包發(fā)送給運行環(huán)境以外的系統(tǒng)之中。通常情況下,不同情況時所拋出的對象類型也不同。
myerror是按照字符變量作為參數(shù)的一種普通類,在進行異常拋出動作時,可以選取任意的一個變量作為所需要的參數(shù)。此外,可以使用throw關(guān)鍵字來構(gòu)造函數(shù),從而新建立出一個原程序中并不包含的對象。實際上,所新創(chuàng)建的這個對象就是throw函數(shù)的返回值。
3.2 try塊。通常情況下,函數(shù)中一旦有異常拋出,那么該函數(shù)將在異常拋出后,直接退出。如用戶不想在異常拋出后,退出函數(shù),就需要在函數(shù)中新創(chuàng)建一個用于解決實際問題的程序塊。Try塊還可以對函數(shù)的調(diào)用過程進行測試。
3.3 異常處理器。當異常處理器接收到所拋出的異常信息時,就會在最短的時間內(nèi)對異常問題進行銷毀,所以對于異常處理器的設(shè)計,最重要的一點就是保證異常處理器能夠處理各種類型的異常問題。具體方法是在try塊之后,設(shè)計一個由catch類關(guān)鍵字引導(dǎo)的程序塊。每一個catch語句實質(zhì)上就是一個小型的函數(shù),該函數(shù)具有唯一的參數(shù),而且這個參數(shù)是由一個特殊類型所組成的。此外,異常處理器通常情況下都會有一個標識符。在測試塊之后一定要設(shè)定異常處理部分,當某個異常信號被拋出之后,異常處理器中的第一個參數(shù)與異常拋出對象能夠相對應(yīng)上的函數(shù)將對這個異常信號進行抓獲,之后在執(zhí)行catch語句,進入異常處理程序。
上面對多機規(guī)劃技術(shù)中的幾個關(guān)鍵部分進行了簡單的介紹與分析。一個多級規(guī)劃系統(tǒng)的建立,需要多方面的學科作為理論基礎(chǔ),在實際應(yīng)用過程中,也需要不斷地對系統(tǒng)各個部件進行性能改善。目前本文設(shè)計的多機規(guī)劃系統(tǒng)已經(jīng)初步成型,下一步的工作就是展開實際應(yīng)用調(diào)試。筆者將在今后的工作中,繼續(xù)對多機規(guī)劃技術(shù)進行更為深入的研究,以期能夠進一步的提高系統(tǒng)的性能。
參考文獻:
[1]唐蘇妍,朱一凡,李群等.多Agent系統(tǒng)任務(wù)分配方法綜述[J].系統(tǒng)工程與電子技術(shù),2010,VOL.32(10):2155-2160.
[2]何炎祥,陳新萌.Agent和多Agent系統(tǒng)的設(shè)計與應(yīng)用[M].武漢:武漢大學出版社,200l.
[3]林劍檸,吳慧中.基于遺傳算法的網(wǎng)格資源調(diào)度算法[J].計算機研究與發(fā)展,2004,VOL(12):132-135.