![一種基于Renew的有色網(wǎng)元對象協(xié)議的設(shè)計與實現(xiàn)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/fec16cbc-3ea5-409b-8012-237bf67244d8/fec16cbc-3ea5-409b-8012-237bf67244d81.gif)
![一種基于Renew的有色網(wǎng)元對象協(xié)議的設(shè)計與實現(xiàn)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/fec16cbc-3ea5-409b-8012-237bf67244d8/fec16cbc-3ea5-409b-8012-237bf67244d82.gif)
![一種基于Renew的有色網(wǎng)元對象協(xié)議的設(shè)計與實現(xiàn)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/fec16cbc-3ea5-409b-8012-237bf67244d8/fec16cbc-3ea5-409b-8012-237bf67244d83.gif)
![一種基于Renew的有色網(wǎng)元對象協(xié)議的設(shè)計與實現(xiàn)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/fec16cbc-3ea5-409b-8012-237bf67244d8/fec16cbc-3ea5-409b-8012-237bf67244d84.gif)
![一種基于Renew的有色網(wǎng)元對象協(xié)議的設(shè)計與實現(xiàn)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/fec16cbc-3ea5-409b-8012-237bf67244d8/fec16cbc-3ea5-409b-8012-237bf67244d85.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、一種基于renew的有色網(wǎng)元對象協(xié)議的設(shè)計與實現(xiàn)*齊大偉氏林明j郭勝基i王生原i董淵|qi dawei1 ,lin ming1 ,guo shengji1 ,wang shengyuan1 ,dong yuan11.清華大學(xué)計算機科學(xué)與技術(shù)系,北京,1000841. department of computer science and technology , tsinghua university, 100084, china+ corresponding author: email: qidawei 1987design and implementation of a metaobject
2、 protocol on colored petrinet based on renewabstract: a metaobject protocol for the renew petri net simulation tool is designed in order to simplify the base level net model, to gather information during the net simulation and to change the base level net dynamically. then the metaobject protocol ha
3、s been immplemented based on the renew tool. the hurried philosophers problem is taken as an example for the usage of the metaobject protocol.keywords:petri net, metaobject protocol, renew摘要:針対petri網(wǎng)模擬工具,設(shè)讓了相應(yīng)的元對彖協(xié)議以達到簡化基級網(wǎng)模型,獲取基級 網(wǎng)運行信息和動態(tài)改變基級網(wǎng)結(jié)構(gòu)等目的。以renew t具作為基礎(chǔ),實現(xiàn)了元對象協(xié)議, 并以hurried philosophers作為例子
4、來驗證了元對彖協(xié)議的功能。關(guān)鍵詞:petri網(wǎng),元對象協(xié)議,renew1 引言現(xiàn)在軟件的發(fā)展非常迅速,軟件在英生命周期中經(jīng)常需要不斷的更改。為了減少不斷更 改的開銷,現(xiàn)在通常采用的辦法是在開始設(shè)計的時候盡量的考慮到未來可能的需要,并將這 些未來可能的盂要集成到當前的系統(tǒng)中來。這種做法會使得當前的系統(tǒng)變得更加的復(fù)朵,使 得當前的系統(tǒng)需要考慮一些與當前的系統(tǒng)不相關(guān)的因素。另外,并不是所有的未來的需求都 是可以在軟件設(shè)計的時候被預(yù)見到的。petri網(wǎng)是對離散并行系統(tǒng)的數(shù)學(xué)表示,被廣泛用于 離散并行系統(tǒng)的建模當中。當petri網(wǎng)被用于對這些不斷改變的系統(tǒng)進行建模的時候,同樣 會遇到這些問題。系統(tǒng)的行為
5、和系統(tǒng)的改變應(yīng)該是正交的兩個方面,即它們町以分開進行the national natural science foundation of china under grand no. 60573017(國家自然科學(xué)基金) 考慮。為了在利用petri網(wǎng)建模的系統(tǒng)中實現(xiàn)這種分開考慮的做法,我們在基于renew i具 的基礎(chǔ)上設(shè)計并實現(xiàn)了一種元對象協(xié)議。renew創(chuàng)3】是徳國漢堡大學(xué)開發(fā)的冇色網(wǎng)的模擬工具,它采用j“va語言來進行編寫,結(jié) 構(gòu)清晰,功能強大。對于我們這個項目其最重耍的一點是,它完全的公開其源代碼。增加元對象協(xié)議,對renew i具的建模。能力也會有所增強。在我們實驗室中,有色 網(wǎng)被用于
6、處理器的描述,在對于復(fù)雜處理器的分支指令預(yù)測等特征的描述中,利用普通的有 色網(wǎng)工具會遇到一些困難叫利用在工具中增加元對象協(xié)議的方式可以解決這些問題。2元對象協(xié)議介紹的基本概念(圖1)反射(reflection):反射是指一個計算系統(tǒng)對自身行為進行觀察表示并且改變自身的行為。 具體化(reification):具體化是將基級系統(tǒng)用一組數(shù)據(jù)結(jié)構(gòu)表示出來,以便元級使用的行為。 基級(base level):基級是指實際進行運算解決問題的系統(tǒng)。元級(meta level):元級是在基級系統(tǒng)z上,用于觀察,表示,改變基級系統(tǒng)結(jié)構(gòu)或者行為 的系統(tǒng)。因果聯(lián)系(casual link):因果聯(lián)系是指基級和元級
7、的聯(lián)系。圖1元對象協(xié)議及反射機制國fig.l reflection machanism in metaobject protocol3. renew結(jié)構(gòu)的分析renew整個軟件的結(jié)構(gòu)從層次上來講共分為四層:graphic, shadow, template, instance 層(圖2) graphic和圖形界面相關(guān),shadow層為了脫離圖形界面而設(shè)置的,為了支持不同 類型的網(wǎng),提供了 shadow到template的轉(zhuǎn)換,根據(jù)shadow的不同類型采用不同的compiler 進行編譯,但是編譯之j舌的template層是統(tǒng)的。在運彳亍的時候會由template層生成instance 層的對
8、彖。graphicsshadowinstanceoccurrenceexecutiondrawingtemplateshadownetnet instancetransitiontransitionfigureshadowtransitiontransitioninstancetransitionoccurrencearcfigureshadowarcinscriptionfigureshadowinscriptiontransition inscriptionarc, uplink, downlink,etc.inscription occurrenceinscription executa
9、bleplacefigureshadowplaceplaceplaceinstancecreate after successful searchupdate continuouslycreate during compilationcreate during instantiationcreate during search圖2 renew的結(jié)構(gòu)分析fig.2 architecture of renewrenew的運行過程一個petri網(wǎng)的運行過程就是尋找可以發(fā)射的transition,然后進行發(fā)射的過程。在 transition發(fā)牛的過程中會對整個網(wǎng)的marking產(chǎn)牛改變,在改變z后重復(fù)
10、以上查找發(fā)射的 過程,百到找不到可以發(fā)射的transition為止。renew的內(nèi)部實現(xiàn)當然也要遵守上而的規(guī)則。在renew中增加了時序的機制,也就是 某些token在某時刻z前是不可見的,這樣做是為了提高效率。對于transition也增加了時 間的標簽。通過這些標簽來標明一個transition在某時刻z前是不可能enable的,因此也就 沒必要進行搜索,從而減小了搜索的空間,提高了運行的效率。在 renew 中采丿ij searchqueue 來保存所羊j的 transitioninstance,在 searchqueue 屮會保 存一個全局的時鐘,在某一個時刻可以從searchqueu
11、e中獲得所有當時可能enable的 transitioninstance的集介。在獲得這個集合之后,從屮選取一個可能搜索消耗最小的 transitioninstance來進行搜索,由于是冇色網(wǎng),搜索采用合一算法,進行遞歸的搜索。如果 搜索成功,即找到一個有效的合一,那么便執(zhí)行這個transitionlnstanceo執(zhí)彳亍的時候由于一 個transition會有很多相關(guān)的動作,這些動作是存儲在transition中的,被稱為 transitioninscription set,其中就包含冇arc,(簡單的arc的動作包括從某個place移除token, 或者將token加到某個place里面)
12、。這些存儲的并不是真正執(zhí)行的動作,而是類似于一個 沒冇具體化的動作,比如一個input arc要移除一個token,只冇在成功的找到token的綁定 z后才會知道耍移除的是哪個具體的token o所以在搜索成功z后,再由這些 transitioninscription來牛成具體的executables來具休的改變網(wǎng)的marking并且來產(chǎn)生高級網(wǎng) 的一些其它的改變。4 具體的設(shè)計與實現(xiàn)4.1整體設(shè)計以petri網(wǎng)在renew中原來的表示作為基級,這個表示既包括靜態(tài)的農(nóng)示(網(wǎng)的結(jié)構(gòu)) 也包括動態(tài)的表示(某一時刻的marking)0新增加元級來加強renew的功能,在元級可以實現(xiàn)對網(wǎng)的結(jié)構(gòu)和mar
13、king的動態(tài)的改變,并且可以獲得某級的運行是的信息。(圖3)元 級的具體的操作是由用戶通過元級的程序來自己定義的。用戶使用renew中的元對象協(xié)議 的一個整體的過程可以是:a.在renew中進行基級網(wǎng)的編輯,b.対應(yīng)基級網(wǎng)編輯相應(yīng)的元級 程序,c.模擬運行。如果用戶并不需要元級的功能,那么只是簡單的省略掉步驟b,便可以 按照renew中原來的執(zhí)彳了了,整個renew不會受任何影響。neta levelbase level圖3 renew中元對象協(xié)議整體結(jié)構(gòu)fig.3 architecture of metaobject protocol in renew4.2基級對象在元級的表示對于一個運彳
14、亍時的petri網(wǎng),如果需要完全的描述它的狀態(tài),需要采用place, transition, arc的集合并且用marking來對每個place屮的token進彳亍表示。這只是基本網(wǎng)的要求,如 果是高級網(wǎng),就需要對transition和arc上的表達式進行表示。聯(lián)系到renew的系統(tǒng),采用netlnstance, net, serachqueue來表示基級對彖可以對基 級對象進行完全的表示。net中包含的網(wǎng)中對象的集合,在這個集合中包含transition和place, arc包含在 transition 中。每個 place 的 token 儲存在 placelnstance 里面。arc
15、是儲存在 transition 中的。對于基級的修改,最關(guān)鍵的就是一致性的問題,也就是修改后的基級的表示仍然nj以被 renew當作一個止常的狀態(tài)來繼續(xù)進行執(zhí)行,而renew系統(tǒng)的其它部分對整個修改不會有所 察覺。如果一個狀態(tài)是符合如下條件的我們認為這個狀態(tài)是一致的:1) netlnstance和net中的對象相互一致:如果在netlnstance中存在一個placelnstance(transitioninstance)那么在net屮應(yīng)該存在相應(yīng)的place (transition),反之亦然。2) 在 searchqueue 中存在的 transitioninstance 必然在 netl
16、nstance 中存在3) 在任意一個transition中存在的arc對應(yīng)的兩端的transition和place必然在net中存在。對于所有的元級操作成功的一個必要條件是保持基級的一致性。4.3元對象協(xié)議的結(jié)構(gòu)和用戶接口提供兩種元對象,metaplace和metatransition它們都是metaobject的子類;基級對 象相應(yīng)的為 placelnstance 和 transitioninstance0現(xiàn)在提供的都是一對多的綁定的方式,即一個元對象可以綁定一個基級對彖,但是一個 基級對象可以被多個元對象所綁定(圖3)。對于元對象提供的接口包括:4.3.1用于元級和基級關(guān)系的建立publ
17、ic void attach(string placename);public void detach(string placename);siring gelname();用八可以通過amch來將元対彖綁尢到相應(yīng)的基級対彖上,通過detach來解除這種綁泄。 用戶可以通過getnameo來獲得所綁定的某級對彖的名字,這個名字和在圖形界面上進行的 命名的名字是相同的。4.3.2用戶對基級改變的接口改變基級行為的改變基級結(jié)構(gòu)的mp.inserttoken(object token)addps(string names)mp.removetoken(tokenremovecondition con
18、dition)public static void addts(string names)mp.addtoken(object tokens)addarc(string place, string transition, int arctype)removearc(string place, string transition, int arctype transitioninstance,int arctype)void rempfs(string names)void remtfs(string names)void remps(string . names)void remts(stri
19、ng . names)表1對基級進行改變的接口table 1 the interface for changing the base level對于基級行為的改變主要是對marking的改變,其中加入token相對比較容易,當然這 個token要rfl用戶進行定義,如果需要用到renew中的有色的概念,就需要了解renew中 的token的類型的概念。同吋可以加入多個token,釆用數(shù)組的形式。對于token的刪除,相對比較因難,因為用戶并不知道在某個place屮有哪些token, 然后還要制定刪除哪些token,如果要用戶把place中的所冇ioken都自行的檢查一遍,就會 顯得不簡潔。這里
20、我們提供的刪除的機制是由用戶提供一個條件類tokenremovecondition, 由用戶自行定義這個類,來確定刪除哪些tokeno這個類只有一個函數(shù)就是boolean delete(object token);用戶可以繼承這個類自行定義判斷是否刪除的條件。4.3.3對基級進行觀察mp.miirkingo;這個函數(shù)提供對marking的觀察,這個函數(shù)會返i葉個metaplace對應(yīng)的placeinstance屮所 有的token,返回的token是以數(shù)組的形式進行組織的。object base();base()函數(shù)會返冋所綁定的基級的對象。4.3.4其它的一些輔助的函數(shù)getmetaplac
21、e(string name); getmetatransiton(string name);上而這兩個函數(shù)用于方便用八對元對象的獲得,并且可以節(jié)省資源的使用,也就是說在 這兩個函數(shù)中幫助用戶完成了元對象的定義,綁定的過程,如果z前有元對象綁定到相應(yīng)的 基級的對象上的時候,此時直接返回該元對象,而不是重新定義一個新的元對象。void register(string event,string function,string name, int type);void unregister(string event,string name, int type);這兩個函數(shù)用來實現(xiàn)用八口定義的事件和re
22、new中事件的聯(lián)系.register函數(shù)用來建立 聯(lián)系在元對象協(xié)議的實現(xiàn)中,我們允許用戶在元級通過程序的方式來定義某些事件發(fā)生后的 行為,我們可以通過函數(shù)的方式將這個行為在元級程序屮表示出來。這類函數(shù)的樞架是這樣的:public static void youractionname(metaobject metaobject)在這個函數(shù)屮會傳入發(fā)生時間的元級對象作為一個參數(shù),通過這個元級對象用戶可以很 容易的獲得相應(yīng)的基級對象,這樣在用戶自定義的程序中便可以靈活的使用這個參數(shù),進行 豐富的擴展。4.4對基級的觀察這個方而主要是利用在attach的時候存儲了基級的對象來實現(xiàn)的,對于base ()
23、即直接 返冋存儲的對象,對于marking來說,也是利用存儲的placelnstance來獲得相應(yīng)的marking 來實現(xiàn)的。4.5對基級的改變對基級的petri網(wǎng)的改變包括兩個方面:行為方面的改變和結(jié)構(gòu)方面的改變。行為方而的改變目前主要包括對網(wǎng)的marking的改變,包括增加和刪除一些tokeno 對于網(wǎng)的marking的改變相對比較容易,因為在元級的每個metaplace屮都存儲著相應(yīng)的基 級的placelnstance,所以只是需要調(diào)用placelnstance的相應(yīng)的函數(shù)就可以實現(xiàn)了。在這里注 意的一點就是在進行改動的時候要獲得相應(yīng)對象的互斥鎖,這樣才可以保證改動的一致性。 至于刪除t
24、oken的時候的因難及具體的解決辦法在上面的元對象協(xié)議的結(jié)構(gòu)和用戶接口一小 節(jié)冇詳細的描述。結(jié)構(gòu)方面的改變就是在運行時改變基級網(wǎng)的結(jié)構(gòu),包括對place, transition, arc的增 刪。在前面提到過對于網(wǎng)結(jié)構(gòu)的改變最重要的一點是一致性的保持。增加網(wǎng)元素:在增加網(wǎng)元素的時候,增加單獨的place,或者是單獨的transition都沒冇 很復(fù)雜的情況,只是把在基級把 placeinstance, transitioninstance 和 place, transition 加入 到相應(yīng)的結(jié)構(gòu)中就可以了。這甲.對于transition的加入需要注意的一點是,在加入transition 的時
25、候要把相應(yīng)的transition加入到searchqueue中,否則這個transition將永遠都不會得到 執(zhí)行。對于增加網(wǎng)元素來講,比較復(fù)雜的是增加arc,因為增加arc需要依賴相應(yīng)的transition 和place,如果相應(yīng)的transition或者place不存在的話,必然會導(dǎo)致錯誤。另外arc冇很多 類型,這個需要用戶在寫元級程序的時候進行指定。刪除網(wǎng)元素:在刪除網(wǎng)元素的時候,和增加的過程恰恰相反,刪除arc會相對比較容易 -些,但是刪除place或者transition的時候就要注意到其相關(guān)聯(lián)的arc to在具體的實現(xiàn) 中我們提供兩種操作(以刪除place為例)void remp
26、fs(string names) void remps(string names) 一種是強制刪除的版本,另外一種需要用戶口行解決和關(guān)的arc的問題。> 對于強制刪除,就是不管有沒有關(guān)聯(lián)的arc,只要確定刪除就會把place或transition 給刪除掉,然厲如果有想關(guān)聯(lián)的arc的話,相關(guān)聯(lián)的arc也會被刪除掉。這種刪除是和 在圖形界而上編輯基級網(wǎng)時候的刪除是一致的。> 對于非強制性的刪除,如果有相關(guān)聯(lián)的arc的話,刪除就會失敗。在實現(xiàn)過程中,非強制刪除相對容易,對于強制性刪除,在上面提到過,arc是作為 transitioninscription保存在transition中的,
27、因此對于transition來講,強制刪除只是將 transition和transitioninstance給刪除掉就可以了,這樣相應(yīng)的arc也就沒有了。但是對于 place來講,一個place所相關(guān)聯(lián)的arc可能會存儲在不同的transition中,而且在renew原 來的實現(xiàn)中,無法知道這些arc存儲在哪些transition中除非你對所冇的transition進行完 全的掃描。在我們的具體實現(xiàn)屮,在place增加了相關(guān)聯(lián)的arc的集介,這樣便于在刪除place 時對是否有相關(guān)聯(lián)的arc的判斷。4.6基級和元級之間的因果聯(lián)系元級和基級的因果聯(lián)系包括兩個方面,一方面是從元級到基級的聯(lián)系,另-
28、方面是從基 級到元級的聯(lián)系。冗級到基級的聯(lián)系:在每個元対彖中,存儲這相應(yīng)的基級対彖的引用。這個基級対彖是 在attach操作的時候獲得的。通過獲得相應(yīng)的基級對象,我們可以在z后的操作中使用這個 基級對象來直接進行。那么在元對象這一級實際上對基級對象進行了封裝,對用戶看起來像 是在對元對象進行的操作,在實際的實現(xiàn)中,元對象一級只是進行了一個轉(zhuǎn)換的過程。比如inserttoken的操作public void inserttoken(object token)_placelnstanceocko ck();try_placeinstance.inserttoken(token);catch(exce
29、ption e)system.ou匸printlnc'metaplace.inserttoken h4-e.tostnng();)finally _placelnstance. lock. unlock(); 基級到元級的聯(lián)系:基級到元級的聯(lián)系同樣是在attach的時候建立起來的。這里利用了 renew 中原有 的 eventlistener 的機制來實現(xiàn)的。在 renew 中 transition, place, transitioninstance, placeinstance都冇想對應(yīng)的eventlistenerset,當相應(yīng)的事件發(fā)生的時候, 在eventlistenerset
30、中的元素相應(yīng)的函數(shù)就會被調(diào)用。這個是transitioninstance中的代碼synchronized void firingstarted(firingevent fe) pendingevents.add(fe);listeners.firingstarted(fe);tran sition.getlistenerset().firi ngstarted(fe);這是變量 listener 對應(yīng)的 transitioneventlistenerset 類的 firingstarted 的代碼public synchronized void firingstarted(final firi
31、ngevent fe) dispatch(new listenersetdispatcher() public void dispatchto(object listener) (transitioneventlistener) listener).firingstarted(fe););利用這個機制,在元級每一個元對象都實現(xiàn)了基本的eventlistener的接口,然后在attach 的時候,相應(yīng)的元對象會被加入到相應(yīng)的基級對象的eventlistenerset的里而,所以當基級 對象發(fā)生某些事件的時候,就會陷入到元級,從而實現(xiàn)了基級到元級的聯(lián)系。5 例子hurried philosophe
32、rs151這個例了主要體現(xiàn)在運行的時候動態(tài)的改變網(wǎng)的結(jié)構(gòu),并月也冇對網(wǎng)的marking的改 變。利用加入了元對象協(xié)議的renew nj*以很容易的完整的實現(xiàn)這個例子,在參考文獻7中 說明了如果用普通的p/t網(wǎng)只能實現(xiàn)哲學(xué)家數(shù)日1古i定的情況,并h需要很熟練的petri網(wǎng)建 模的經(jīng)驗才能夠完成,具體釆用普通的p/t網(wǎng)對限定數(shù)11的哲學(xué)家問題的解決辦法在參考文 獻中有具體的描述。hunied philosophers 例子介紹:1. 當一個哲學(xué)家沒有他的左邊的叉子的時候,他可以向他左邊的哲學(xué)家來請求叉子,同樣 適用于右邊的情況。2. 當一個哲學(xué)家有右邊的叉子,并口他右邊的哲學(xué)家請求這個叉子的時候,
33、他必須答應(yīng)這 個請求。同樣適用于左邊的情況。3. 只有一個哲學(xué)家同時具有兩把叉子的時候才可以進餐。4. 一些哲學(xué)家可以邀請其余的一些哲學(xué)家入座,當某個哲學(xué)家被邀請入座的時候他口己會 攜帶一把叉子。5. 一些哲學(xué)家可以請左邊或右邊的哲學(xué)家離開座位,或者口己離開座位,當某個哲學(xué)家離 開的時候,他會呆著一把叉子離開。6. 按照以上的公平的規(guī)則,產(chǎn)生的現(xiàn)象是哲學(xué)家輪流進行就餐。7. 在任意時刻,桌上至少有兩個哲學(xué)家。本文采用的例子是進行了如下具體限定的情形:1. 哲學(xué)家剛?cè)胱臅r候?qū)⒉筒娣旁诳诩旱挠疫叀?. 每個哲學(xué)家都可以邀請其余的哲學(xué)家,哲學(xué)家的數(shù)口有一定的上限(>=2)03. 哲學(xué)家不可以
34、自行離開餐桌,某個哲學(xué)家離開餐桌只能被其它哲學(xué)家驅(qū)逐。4. 哲學(xué)家可以驅(qū)逐左邊或者右邊的哲學(xué)家。5. 邀請或者驅(qū)逐的哲學(xué)家位于左邊或者右邊隨機決定。6. 初始的情況桌上有兩個哲學(xué)家。圖4 hurried philosophers例了的初始情況fig.4 the initial state of the hurried philosophers example在元級程序屮我們定義了三種元級對象,分別對應(yīng)基級對象中的transition: invite ,chase_away, eat。元級對象invitechase_away對應(yīng)的元級程序用來動態(tài)改變相應(yīng)的棊 級的結(jié)構(gòu)。invite的元級程序會加
35、入一個philosopher所需要的所冇基級的結(jié)構(gòu),包括上面圖 4 中 place: ph,thingking_ph,eat,tk 和 transiton:invite,chase_away,think,take_fk,release_fkso chase_away對應(yīng)的元級程序"j以刪除相應(yīng)基級的place和transitiono另外述要在invite和 chase_away的元級程序中,進彳一些arc的加入和刪除來維持元級的philosophers之間的相 鄰的關(guān)系。元級對象eal用來監(jiān)視基級的行為。在invite> chase_away和cat的相應(yīng)的元級的 代碼屮,進行
36、輸出一些信息來監(jiān)視整個系統(tǒng)的運行狀況。下面就是實際的系統(tǒng)的一次運行結(jié) 果:實際執(zhí)行的效果:2 invite 3 to sit right1 chase away 21 invite 2 to sit right1 chase away 31 invite 3 to sit right3 invite 7 to sit right3 chase away 13 chase away 73 invite 1 to sit left3 chase away 21 invite 2 to sit left1 chase away 21 invite 2 to sit left1 chase away
37、31 invite 3 to sit right1 invite 7 to sit right3 invite 6 to sit left6 chase away 76 invite 7 to sit right3 invite 5 to sit left5 chase away 32 is eating7 invite 3 to sit right7 chase away 62 invite 6 to sit right2 invite 4 to sit left2 chase away 46 chase away 27 is eating5 is eating7 invite 2 to s
38、it right2 chase away 76 invite 7 to sit right2 chase away 12 chase away 72 is eating2 chase away 62 chase away 52 invite 1 to sit right1 is eating2 is eating2 invite 7 to sit left1 is eating7 chase away 37 chase away 1對應(yīng)的元級程序見附錄。6 結(jié)語目前在關(guān)于petri網(wǎng)的模擬工具的元對象協(xié)議擴展方面的研究并不多見,在參考文獻 中設(shè)計了一種實現(xiàn)方式,并且打算以greatspn工具作
39、為基礎(chǔ)進行擴展,但是目前為止 并沒有相關(guān)工作的結(jié)果發(fā)表。在木文屮設(shè)計并基于renew實現(xiàn)了在有色網(wǎng)上的元對彖協(xié)議。 petri網(wǎng)是強大的用于系統(tǒng)建模和協(xié)議驗證的工具,renew是眾多petri網(wǎng)模擬工具中比較優(yōu) 秀的一個。在renew中實現(xiàn)元對象協(xié)議,可以使得對不斷改變的系統(tǒng)的建模變得更加的容 易,更加的直觀。通過hurried philosophers的例子來說明了其在建模方i僑的優(yōu)勢。在renew屮增加元對象 協(xié)議會有如下的一些應(yīng)用:對于普適的情況:1可以簡化基級別的網(wǎng)模型2.可以在不改變基 級的情況卜獲取基級信息3.可以通過對基級的控制來改變基級網(wǎng)結(jié)構(gòu)。對于處理器描述的方 面1.簡化分支
40、預(yù)測恢復(fù)的建模2.獲取處理器運行時的一些信息。本文中所提到的所有的具體實現(xiàn)都可以在 :8080/2004011351/renew/renew/index.html 獲得源代碼,具體的使用 方法也請參考該網(wǎng)址。7參考文獻1 h "ursch, w. and videira lopes: separation of concerns:c technical report 1995 nu-ccs-95-03, northeastern university, boston.2j olaf kummer frank wienberg michael duvigneau.renew 一 arc
41、hitecture guide: may 26, 2006 www.renew.de3 olaf kummer frank wienberg michael duvigneau. renew 一 user guide: may 26, 2006. www.renew.de4 michael golm: design and implementation of a meta architecture for java: d5 c sibertin-blanc concurrent object-oriented programming and petri nets: advances in pe
42、tri nets:mj. springer-verlag new york, inc.: 536 一 5376 lorenzo capra and walter cazzola a petri-net based reflective framework for the evolution of dynamic systems:c electronic notes in theoretical computer science. fsen2005. 24 may 2oo6.vblume 159:41-597 lorenzo capra and walter cazzola self-evolv
43、ing petri nets:jj. journal of universal computer science, no. 13 (2007). vol. 13: 2002-2034附中文參考文獻:8 林明:基于冇色網(wǎng)的處理器描述研究:d nov. 2007附錄:hurried philosophers的例了的元級程序import java.lang.*;import java.ulil.set;import java.util.hashset;import java.util.hashmap;import java.util.random;import de.renew.meta.*;imp
44、ort .arc.*;import .transition;import de.renew.unify.tuple;import java.util.iterator;public class hp extends metascript /folks are placed on the right side of philosophers/the number of the philosopherspublic static int amount=8;/keep a set of unseated philosopherspublic static set numset;public stat
45、ic hashmap left;public static hashmap right;public static void setup(metaplugin metaplugin) trymetaplugin=_metaplugin;numset=new hashset();left=new hashmapo;right=new hashmapo;left.put(,l,;,2h);ieft.put(“2“,t“);right.put(t“,”2“);right.put(“2“,t);for(int i=3;i<=amount;i+) numset.add(new integer(i)
46、.tostring();register("firingcomplete", "chase_away' "chase_away2m, transition);registercfiringcomplete1', "chase_away", hchase_awayl", transition); register("firingcomplete,;,invite,;,inviter,transition); register("firingcomplete,uinvite",uin
47、vite2u,transition);getmts("invitel","chase_awayr',"think r',"take_fkr','release_fksr',"invite2","chase_away2,',think2,"take_fk 2”,”release_fks2“);register("firingcomplete,'/'take_fk","take_fkr,transition);reg
48、ister(,firingcomplete,take_f'k,take_fk2",transition); catch(exception e)system.out.println(huserscript.setup m+e.tostring();public static void chase_away(metaobject metaobject)/add the chased away philosopher to the settrytransition transition=(metatransition)metaobject).gettransitioninstan
49、ce().gettransition();string name=transition.getname();string mynum=name.replace(nchase_awaym/mt);random random=new random();string num;if(left.get(mynum).equals(right.get(mynum)/only two phils left return ;if(random.nextfloat()>0.5) num=(string)(left.get(mynum);metaplace tmpmp=getmetapiace(nfkh+n
50、um);if(tmpmp.getplaceinstance().getnumberoftokens()<=0)return;left.put(mynumjeft.get(num);right.put(len.get(num),mynum);string leftnum=(string)(left.get(mynum);removearc(hfkn+nu m/,take fkm+mynum,arc.i n);removearc(mfkm+num/,release_fks,+mynum,arc.out);if(numset.size()>-1) addarc(nfkn+leftnum/
51、take_fkm+mynum,arc.in); addarc(ufl<n+leftnum/,release_fks,+mynum,arc.out);elsenum=(string)(right.get(mynum);metaplace tmpmp=getmetaplace(nfl<n+num);if(tmpmp.getplaceinstance().getnumberoftokens()<=0)return;right.put(mynum,right.get(num);left.put(right.get(num),mynum);string rightnum=(string
52、)(right.get(mynum);removearc(mfl<n+num,mtake_f'k,+rightnum,arc.in); removearc(hfkm+num/,release_fksh+rightnum,arc.out);if(numset.size()>-1) addarc(nfkn+mynum,take_fkh+rightnuni,arc.in); addarc(nfkn+mynum/,release_fksn+rightnum,arc.out);)system.out.println(mynum+m chase away m+num);left.rem
53、ove(num);right.remove(num);numset.add(num);rempfs(,phn+num/lthinking_ph,+num/,eatu+num/ffk,+num);remtfs(hinviten+num/,thinkn+num/,chase_awayn+num/,take_fkn+nuni/,release_fks,+num); catch(exception e)system.out.println(muserscript.chase_away m+e.tostring();)public static void invite(metaobject metaob
54、ject)/pick a num from the set randomly/decide the invited ph to sit left or righttrytransition transition=(metatransition)metaobject).gettransitioninstance().gettransition();string name=transition.getname();string mynum=name.replace(uinvite,7,n);random random=new random();iterator iterator=numset.it
55、erator();string num=new stringo;if(iterator.hasnext()num=(string)(iterator.next();iterator.remove();system.out.print(mynum+ ” invite h+num+ u to sith);elsereturn;string leftnum,rightnum;if(random.nextfloat()>0.5)/sit leftsystem.out.println(,ieftn);leftnum=(string)(left.get(mynum);rightnum=mynum;right.put(num,mynum);left.put(num,left.get(mynum);right.put(left.g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- PQA-18-生命科學(xué)試劑-MCE-3779
- Filiformine-生命科學(xué)試劑-MCE-8234
- 11-Hydroxy-9-R-hexahydrocannabinol-生命科學(xué)試劑-MCE-8544
- 4-Iso-THC-4-Iso-tetrahydrocannabinol-生命科學(xué)試劑-MCE-2807
- 2025年度磚廠承包與市場拓展合作協(xié)議
- 2025年新推出門面房出租管理服務(wù)合同
- 二零二五年度企業(yè)自愿離職合同解除范本及離職補償金計算標準
- 二零二五年度數(shù)字音樂版權(quán)互惠合作合同
- 二零二五年度洗煤廠煤炭洗選技術(shù)租賃合同
- 智能科技與家庭旅游的融合探索
- 水稻葉齡診斷栽培技術(shù)課件
- 會計公司員工手冊
- 中國周邊安全環(huán)境-中國人民大學(xué) 軍事理論課 相關(guān)課件
- 危險化學(xué)品MSDS(五氯化磷)
- 雞蛋浮起來實驗作文課件
- 醫(yī)療器械設(shè)計開發(fā)流程培訓(xùn)課件
- 警情處置與執(zhí)法安全匯編課件
- 動物生物技術(shù)(課件)
- 注塑成型工藝流程圖
- 廣東省緊密型縣域醫(yī)療衛(wèi)生共同體雙向轉(zhuǎn)診運行指南
- 檢驗科臨檢組風(fēng)險評估報告文書
評論
0/150
提交評論