Debug method using Execution Model in Parallel Object Oriented Language DinnerBell
全文
(2) [10] Kenneth Kahn, Eric Dean Tribble, Mark S. Milller, and Daniel G. Bobrow. Objects in Concurrent Logic Programming Languages. In OOPSLA 86, pp. 242{257. ACM, 1987. [11] G.E. Kaiser. MELDing Data Flow and Object-Oriented Programming. In OOPSLA 87, pp. 254{267. ACM, 1987. [12] E. Meijer. Petri net models for the -calculus. In Advances in Petri Nets 1987, LNCS 266. Springer-Verlag, 1987. [13] J. E. B. Moss. Nested Transactions: An Approach to Reliable Distributed Computing. Technical Report LCS TR-260, MIT Laboratory for Computer Science, Jun. 1981. [14] T. Moto-oka, H. Tanaka, H. Aida, K. Hirata, and T. Maruyama. The architecture of a parallel inference engine -PIE-. In Proc. of the Int. Conf. on Fifth Generation Computer Systems. ICOT, 1984. [15] M. Murakami. An Axiomatic Veri
(3) cation Method for Synchronization of Guarded Horn Clauses Programs. Technical Report TR-339, ICOT, 1988. [16] E. Y. Shapiro. Algorithmic Program Debugging. M.I.T. Press, 1982. [17] A. Takeuchi. Algorithmic Debugging of GHC Programs and Its Implementation in GHC. Technical Report TR-185, ICOT, 1986. [18] Kazunori Ueda. Guarded Horn Clause. Technical Report TR-103, ICOT, Jan. 1985. [19] Kazunori Ueda and Koichi Furukawa. Transformation Rules for GHC Programs. In Proc. of the Int. Conf. on Fifth Generation Computer Systems. ICOT, 1988. [20] S.A. Ward and R.H. Halstead. A syntactic theory of message passing. J. ACM, Vol. 27, No. 2,, 1980. [21] Daniel Weinreb and David Moon. Flavors: Message passing in the lisp machine. Technical report, Nov. 1980. [22] Xerox. The smalltalk-80 system. Byte, Vol. 6, No. 8,, Aug. 1981. [23] Y. Yokote and M. Tokoro. Concurrent Programming in ConcurrentSmalltalk. In ObjectOriented Concurrent Programming. The MIT Press, 1987. [24] A. Yonezawa, E. Shibayama, T. Takada, and Y. Honda. Modeling and programming in an object-oriented concurrent language ABCL/1. In Object-Oriented Concurrent Programming. The MIT Press, 1987. [25] Kaoru Yoshida and Takashi Chikayama. A'UM - a stream-based concurrent object oriented language -. In Proc. of the Int. Conf. on Fifth Generation Computer Systems. ICOT, 1988. [26] Y. Zhong and M. Sowa. Towards an Implicitly parallel Object Oriented Language. In Procs. of Compsac 87, pp. 481{485, 1987..
(4) ¸¹º» Program T¼½¹º³¾¿ DinnerBell 6ÀÁ MessageJoin T}~ÂiÃÄÅ6}Ƴ ¯ÇÈÉÊË̳¾Í¾ÆÎÏÊÐ~¿ÑÒ Petri-Net DinnerBell 6XYZ[NÓÔ¸Õ ~ÅÍÃÄ {Calculus TÇÕ~Ö×}ØÙÚÛÜÐ~Íiݹº~¿ÅºÃÄABXYZ[\ ]Z45ÍÞßÄ DinnerBell Êàºß¾~ÏÜÐ~¿ 8. áâã. ÃOPQRT}Ø Fine Grained Parallelism ÓäåT湺»CDEFGHI J45ÜÐ~¿çèéê»}ÆTÄ DinnerBell XYëL6ÂiìíÓîïXÓ³Õ PetriNet ÜÕ~ÅÍÊÜð~¿ÅºÓñ¾ßÄ Algorithmic Program Debugging 6òóÊôñ Üð³¾}ƳõöÞ³¾XYZ[N6ÂiìíTÁ¾ßÙ÷²³µ¶ZÓ{³ÆÅÍÊÜ ð~¿ DinnerBell øùTìÞßÃÄ DinnerBell Ó micro-message ÍúûüýOþ6ÿëïE01 6Ñ{OþT23Õ~4]56[ÍÄ micro-message ÓÑ{Õ~78²³ 64 9 Ü6ABXY ë KLMN6K\
(5) ïÊÞß¾~¿ÅºÃÄ4]56[Ä[]6Nîï]Í Ù C Üé¹ºßØÄ VAX, Sun/3 èÜÞß¾~¿ Petri-Net 6˸ÃÄ DinnerBell Prolog 64]56[ÍÞßé¹ºßØÄHï G6Ä4]56[Ä6]XÄÃÕêß Prolog Ü鹺߾~¿ÅºÃÄ ,ÜÐ~¿ DinnerBell. [1] G. Agha and C. Hewitt. Concurrent programming using actors. In Object-Oriented Concurrent Programming. The MIT Press, 1987. [2] E. A. Ashcroft. Data ow and eduction: data-driven and demand-driven distributed computation. In Current Trends in Concurrency, LNCS 224. Springer-Verlag, 1986. [3] J.D. Brock and W.B.Ackermann. Scenario: A model of nondeterminate computation. In Formalization of Programming Concepts. Springer-Verlag, 1981. [4] Keith Clark and Steve Gregory. Parlog: Parallel progaming in logic. Technical Report Research Report DOC 84/4, Imperial College of Science and Technology, April 1984. [5] J.B. Dennis. Models of data ow computation. In CompCon. IEEE, 1984. [6] A.S. Grimshaw and J.W.S. Liu. Mentat: An Object-Oritented Macro Data Flow System. In OOPSLA 87, pp. 35{47. ACM, 1987. [7] Carl Hewitt. Control Structure as Patterns of Passing messages. In Arti
(6) cial Intelligence: An MIT Perspective, volume 2, pp. 435,465. 1979. [8] Carl Hewitt and Russell R. Atkinson. Speci
(7) cation and Proof Techniques for Serializers. IEEE Transactions on Software Engineering, Vol. SE-5, No. 1,, Jan. 1979. [9] Y. Ishikawa and M. Tokoro. Orient84/K: An Object-Oriented Concurrent Programming Language for Knowledge Representation. In Object-Oriented Concurrent Programming. The MIT Press, 1987..
(8) µ¶ZTÇÕ~ÎÏͳ~¿ !"#$% ÑÒ6XYZ[N6Ñ{TUV¾ßÄ Petri-Net Ó&'ÞĹT(6 Petri-Net 6É)Ó* ê~;ÆABXYZ[N6µ¶ZòóT}ØÄABXYZ[NÜÃÄ+É6³¾}Ƴ, -Ä./0Ä Dining Philosopher 6µ1YG2Ä3164,Ü6566q7ɳ86µ¶ ZÓ9:TÕ~ÅÍÊÜð~¿ÅºÃÄÅ6/XYZ[Nj;678;Æ<Þ¾,-Ó=> TÄÐ~Ñ{6?@ABCØDÞß,-TÕ~ÅÍÊÜð~ÜÐ~¿ Algorithmic Program Debugging TÇÕ~EFó6G³ÎÏÃÄ HIXYëL6µ¶ZÄ ¯Âi316µ¶ZÄ J±6Ñ{KL6±MNO6PP²=QÄ ÜÐ~¿RS6TÏÃÄ Algorithmic Program Debugging ÜÃÑ.ʳ¾ÞÄÑÒU<ÜÐ~¿ Rh6JVT}ØÄ+É6³¾A{XYZ[N6¶Z6WX6»YTÄA{Ñ{69:³LZ E
(9) ï]ZÓÕêß*ê~[©Ê³¾¿J±6.ÜÙÄÐ~\ÄÂiìíÓ*ê~ÅÍÊÜ ð~¿ÅºÃÄ Algorithmic Program Debugging ÓA{XYZ[N6]ñÕ~ÒT^_ÜÐ ~ [17]¿ źÃÄA{XYZ[N6XYëL6ÂiìíÓ¥6XYZ[N´`ÞßÄ=QÕ~Å ÍT0aÕ~¿»AÞÄbc6dý6XYëLÓeïf/»5[ÿïÜ~Ù6TÇÞ ßÃÄÅÅÜf/»òóÜÃ^g³ Petri-Net Ó˸Õ~ÅÍÃÜð>Ähi²U<³¯^g³ Petri-Net 6=QÓ[©ÍÕ~¿ÞÞÄÅ6}ƳjÔÜÙÄÑ{KLT}ØkµîÓ~Å 6òóÜÃÄ5[ÿïʰ lßHïG]6ýÊ^gͳl»/Ï6=QÃ{³ÆÅÍÊÜð ~¿ »6N¬H65[ÿïÊÐ~}ƳÂiìíÊÿëïE6NOTmWn7Õ~} ƳXYZ[NÃÄ>´²³=QTÞo/³¾¿ ÙpqrÄÅ6òóÃÄÐW ܵ¶ZÜÐØÄÐ~J±6Ñ{TìsÕ~¶ZÞÇt T³³¾6ÜÄÅ6ÏÃugÊÐ~¿ÞÞÄ3M6XYZ[NÜÃÄj;ʱM²TWÄ Á ØÄ¾WÁ6XYëLÊv*Þ߾߾~NOÊÐ~¿Å6}ƳNOÜ6XYëL0 w6ìíÓ*ê~ÅÍÊÙlÍÙx©ÜÐØÄÅÅÜyÞ»òóÊ^_ͳ~¿z{³Êį MT|}TXYëLÊ˸~Õ~jÔTÃÄÅÅÜéê»òóÓoÆÅÍÃÜ𳾿 CDEFGHIJ45Í Petri-Net 6ìíÃÄWÃÄ Message System Í Petri-Net 6ìí ÍÞß/ºßð»¿Å6/ÃÄ Petri-Net ÊÄ Message System ÓÅÍÊy¹º»AB ÜÄ Petri-Net 69§,-ÊÕÜT²T<Þ¾Ù6ÜÐ~çèÄÐ ØÎ ól»¿ ÅÅÜÃÄ^g³ Petri-Net è69§,-Ä »ÃÄ Petri-Net 6^gÉ67D,-,-Óu ~ÅÍT}ØÄÅ66,-ÓBß¾~¿Þ»Êlßį^g³XYZ[NTìÞßÃÄ ²TÃU<³. ÜÐ~¿. »Ä Petri-Net 6TÃugÊÐ~ÅÍÊ޺߾~¿ DinnerBell ÜÃÄ Petri-Net ÜÜð³¾ABKLMN (HïG]6Ó7DÕ~Ù6) ÓÄÿëïET»NO ÓolßÑÜð~¿ÞÞÄÿëïE6NOÍÂiʾ»,-ÃÄÅÅÜñ¾»òó ÜÃ=QÜ𳾿 ¦alaÜ{³ºß~ Petri-Net Ward 6 {Calculus 6Ö× [29] ÃÄÅÅ Üñ¾»kµ]Z6pÆ86XYZ[NÔ¸T0aÕ~¿ÞÞÄ {Calculus ÜÃį °±É6RÊÄ port Óolß{³ºß¾~¿Õ³pÄ¥6 Petri-Net ÊÀÁÇÈÉÊÄË 7.
(10) ackB! ackA! to:Out split:Data. output:X write.... 25: Þ¾ Talk 6XYZ[N6HH.
(11) ack!. to:Out p4. p1 p2. t1. t2. p3 output:X. split:D. t4. p6. t3. t5. t6. p7 p8. 23: Ø6Ð~ Talk 6XYZ[N6HH [ between:User1 and:User2 DA ( Display newFor:User1 out:StdErr. DB ( Display newFor:User2 out:StdErr. KeyBoard from:StdIn to:DA and:DB. KeyBoard from:StdIn to:DB and:DA. class Talk. ]. [ newFor:~User out:Out to:Out; output:X1 to:Out1 Out2 ( ((Out1 write:~User) write:X) nl!. Out2 wait: ( to: Out2. *TRUE). class Display. ]. KeyBoard [ from:~In to:~A and:~B ackA!.ackB!; ackA!1ackB! split: (~In getC!); split: Data (~A output: Data) yes:( ackA!). (~B output: Data) yes:( ackB!). class. ]. [ Talk between:"Rick " and:"Eliza ". class Test. ]. 24: Þ¾ talk.
(12) [ between:User1 and:User2 Display1 ( Display newFor:User1. Display2 ( Display newFor:User2. Split1 ( Split to:Display1 and:Display2. Split2 ( Split to:Display2 and:Display1. KeyBoard newFor:User1 to:Split1. KeyBoard newFor:User2 to:Split2. class Talk. ]. class Display. ]. [. newFor:~User to:StdErr; output:X1 to:Out1 Out2 ( Out1 write: ~User write:X nl!. Out2 wait: ( to: Out2) [ to:~A and:~B; output:X ~A output:X. ~B output:X. class Split. ]. [ newFor:~User to:Out from:StdIn to:Out; from:In to:Out (X) ret: (In getC!). (X=:0) no:( Out output:X. from:In to:Out). class KeyBoard. ]. [ Talk between: "a" and: "b". class test. ]. 22: talk.
(13) ÿ6]6XYZ[NÜÐ~ TÄ between:and: ;ÆÿëïEÓ0~ÅÍT}ØÄT Á6·ïï1ÍTÁ6µLX 66@ÜÄP Í631Ê ~¿ ÃÄ , , 6 3 6CDEFGHÓTÁ>ÁØÄ(º ºÓ¡IÕ~¿ 6CDEFGHÃÄ 66]L]LÓüýÍÞßÀÁ from: Ó¢dÞßXYëLÓ~¿ Å6ÿëïE6P¢TÇ]Þß output: ;ÆÿëïEÜRÊ T0º~¿(ÅÜÄ output: ÃTÁT´BºÄ£¤6 T0º~¿ ÜÃNOÓÀÁ Ó to: ;ÆÿëïEÜ¢d¹ßÄ¥»RTeï¦ÓBßDÞß¾~¿ Å6XYZ[NÊ˸Õ~ Petri-Net ÊÄ 23ÜÐ~¿Å6HÃ^gܳ¾¿ÅºÃÄ ÊÄWËÕ~ÿëïEÊ^gܳ¾ÅÍT}~¿ÑÒÅ6XYZ[NÃÄ ÊÿëïEÓ§ýWËÕ~ÅÍT}ØÄ(ÅT¡I¹º» Place T¾WÜÙHïG]Ó¨2 ÕÅÍÊÜð~¿(6 Place THïG]Ê» ~Í ©ªÍl»ÿëïE65 6ÉóW³lßÞ ¾Ä ÍÄ 6@6ÿëïE656ÉÙ³W³lßÞ. Æ¿ Å6XYZ[NÃÄkµî6¯^gÉÊÄ«¡¶ZÓüð¬ÅÕ.T³lß¾~¿Á ØÄ XYZ[6/ß¾~®¯ÍÞß^g³kµîÓ/ß¾~6TÇÞßÄXYZ[Nï^g ³kµîÓ˸ÞßÞ Æ¿ÅºøùʶZ67yÞß¾~¿ Å6@°¾Ó³Þ»Ù6ÊÄ 24ÜÐ~¿Å6/ÃÄ ÊÄ 6 ackA!, ackB! ÓÝpÔ~ÅÍT}ØÄÂiÓÍlß¾~¿ÅºË¸¹º~ Petri-Net ÃÄ DinnerBell ^g³Ñ{kµîT³lß¾~¿ Petri-Net Óol»kµî6JV6PÁÃÄkµî6´`Ô¸ÊÚÛ³ÏÜÐ~¿Å6.ÜÙÄ Ä ÃÄÅ6 Petri-Net 6±T´`¹ºß¾~¿ÅÅÜÃÄ Petri-Net T²RÕ~ 6]«FïLÊÄHïG]ÓPÁ0~ÍHïG]ÊPÁR~}Ƴ³T³lß¾~Í/ß¾ ~¿Á ØÄ±>6HïG]Ê Petri-Net 6^gÉÓ´µÞß³¾¿ÑÒ6 Input/Output Ãħ¶³£6 Petri-Net T}عº~Ã>AÊÄÅÅÜÃÄO·³ Petri-Net T}ØÄ( 6UE²³É)ABʹºß¾~¿ Å66¶ZÃÄ Commited Choice 345ÜéÞ» Talk ÜúTW¾¿³¸³Ä( º645ÜÃÂi31Ê,¹ÜÐØÄLHïN6ïEÊ«¡T¯^g³XYZ[NÓ~ ÅÍʳ¾»YÜÐ~¿ÅºÃÄÂi31Tu~jÔÃÄ^g³ Petri-Net 6ªÊ˸¹º~» YÜÐ~¿ÑÒ6 Unix ³8ÜÃÄ Talk ÜÙ31º6»± Ü6¯Âi31ʯMT<Þ¾>´ ÜÐ~¿Âi31ÜÐ~0w31ÃÞq2¹Þ¾>´ÜÐ~¿¯Âi31ÓLHïNÍï EÜÑÞ»Ä}ا¶³jÔTÄÅ6}Ƴ¶ZÊWËÕ~ÅÍÊÐ~¿ Å6.ÜÙÄÇtÃHIXYëLÜÐØÄµ¶ZÊ<Þ¾XYZ[N6PÁÜÐ~¿ Alorthmic Program Debugging ³8ÜÃÄÅ6}Ƴ¯Âi31Ó¼ÆÅÍÃÜ𳾿ÑÒïE ÓABÜN½Ã¾´T§¶T³lßÞ Æ¿¯Âi316ÀÁ<Þ¹ÃÄCDEFGHIJ 452 ï¶ / G[6]Hkµî³8TJ^6,-ÜÐØÄÅ6µ¶ZFó6e¿ïG³Ï ÜÐ~¿ Å6}Ƴ¯ÂiXYH4îTìÞßÃĵ¶Z}ØÙÄÞq78Txðʺßð »¿786jÔÃÄÐ~J±6XYH4îTìÕ~®¯Ó°YßÄ(6®¯ÍXYH4îÊ¼Þ ß¾~8ÆÓXYH4î69:³NOÕêßTìÞß*ê³Wß󳾿Å678à JTXYH4îT º~XYëL6ýʱ6/TÃJT<Þ¾¿ÞÞÄÅÅÜyÞ»ò óÃÄÐ~J±6Ñ{KLTUV¾ß¾~»YTÄÐ~J±6ý6XYëLÊ º»/Ï6 Petri-Net Ó=QÞß¾~¿ÅºT}~0Dz³=Q6ÚÛ¹ÊÎÏ6PÁÜÐ~¿Å6ÏÜÄ XYH4î Petri-Net Ó˸Þß78Ó{³ÆòóÍÃÀ³~¿ XYH4î6Þ¹ÃÄÅÅÜ6òóÜÃq8Üð³¾ÊÄÞW³¾XYH4î6µ¶ ZÍ/~ÍıMNOT³l»/6Âiìí6É)Ó*êº~ÅÍÊÄH ïLTUV¾» Talk. Talk. Split. KeyBoard. Display. KeyBoard. StdIn. Split. Display. Display. StdErr. KeyBoard. keyBoard. KeyBoard. Display. KeyBoard. KeyBoard. StdIn. StdErr. Display.
(14) pick!. freeR! pickL!. pick! pickR! freeL!. pickL!. pick!. pick!. eat!. freeR!. 21: Dining Philosopher 6 Petri-Net.
(15) [ pick! 1 free!. class Fork. sender#1. ]. ret:TRUE. % sync free and pick. class Philosopher. [. left:~Lfork right:~Rfork id: ~N ; pickL! pickR!. ]. (~Lfork pick!) yes: (. pickR! );. (~Rfork pick!) yes: ( eat! ); freeL! ; eat! freeL! ~Lfork free! . freeR! ; ~Rfork free! . think! ; freeR! think! pickL!. class diningPhilosopher. [. ]. Fa ( Fork free!. ( Fork free!. Fb Fc ( Fork free!. ( Fork free!. Fd Fe ( Fork free!. ( Philosopher new! . Pa left:Fa right:Fb id:1. Pa ( Philosopher new! . Pb left:Fb right:Fc id:2. Pb Pc ( Philosopher new! . Pc left:Fc right:Fd id:3. Pd ( Philosopher new! . Pd left:Fd right:Fe id:4. ( Philosopher new! . Pe left:Fe right:Fa id:5. Pe Pa think!.Pb think!.Pc think!.Pd think!.Pe think!. 20: Dining Philosopher.
(16) Å6.ÜÃÄ >ÁÂ6ÃaÄÍÁÁ6«ÅïGʺÄ(º ºSiƹº~¿ÃaÄ ÃÄø´øùTÿëïEÓ0~ÅÍ (ÿëïE6¢d) T}ØXYëLÓ&¸Þß¾~¿ø ´6NOÃÄ¢dÕ~ÿëïET}ذ ØÄǤTÈÉÞß¾W¿ ÃÄ 5 Á6«ÅïGÍ 5 Â6ÃaÄÓSiÆÓÕ~¿ ÃÄÅÅÜ free! Ê0º=ÊNOTÐ~¿ÃaÄà left:right: 6ÿëïET}ØÄ(º ºÊrlß¾~ «ÅïGÊ˺~¿(ºÄ think! Ê0º 6XYëLÊ ~¿ÌÂ6X YëLÃÄ pickL!, pickR!, eat!, freeL!, freeR!, think! 6 6 Á6ÿëïET}~NOÈÉ ³~¿ÌXYëLà TÇÞßÄ pick! Ó0~ÅÍÜ«ÅïGÓÍÎÞÄ free! Ó0~ÅÍÜ =ÊÕ~¿ ÜÃÄ free! Í pick! 6ÝpÔT}ØPÁ6«ÅïG6ÏÐÑ2Ó{³¾Ä pick! Üð»Ù6T»Ò6 ÓÓÞß¾~¿ÅÅÜ6 6ÔØÕ 0º ~ yes: ÃÄ wait: ÍÂÌÖðÓÞß¾~¿ Å6/˸¹º~ Petri-Net ÃÄÕêß6CDEFGHÊ˸¹º»hÃÄÖÆÞ³¾¿ 21ÃÄ(6P´6HÓÞß¾~¿Å6H6µ1YGÊÄ(6. XYZ[N6 µ1YGT0aÕ~¿Å6 Petri-Net Ã^g³6Üĵ1YGÕ~8ÆÃÄNOZ [«Ó~³86«¡²³ Petri-Net 6=QÜ*ê~ÅÍÊÜð~¿×;²TÃÄÕêß6 Ê pickR! 6NOTR~ÍÄÝpÔ~ free! 6HïG]ʳW³ØÄÞ»ÊlßWØ9 :³HïG]ʳ¾¿Õ³pĵ1YGÕ~¿ Comitted Choice 345³86µïÙTUVW45ÜÃÄÐ~Öý6QRÓÚº»ØÄ ÓÕêðÛ/Ó0³l»ØÕ~jÔTĵ1YGÊ}W¬Å~¿(6}Ƴµ1Y GÃÖý2ÿëïE0Ü16RD6kï1=Q2Ä Algorithmic Program Debugging ³8 ÜÙXÁB~ÅÍÊÜð~¿Å6 Dining Philosopher 6µ1YGÃÄ«ÅïG6ÏÐÑ2Ó ÝÞÍÕ~¶ZÜÐØÄRD6kï1=QÜÃXÁB~ÅÍÊÜ𳾿³¸³ÄÅ6µ 1YGÃXYëL60wñT}lßÃÌY߬ð~Ù6ÜÐØÄÅÅ6kï1=Qøùà ޾»YÜÐ~¿. »Ä Algorithmic Program Debugging ÜÃÄÅ6}Ƴ¶ZÓ7DÕ~ÅÍÃ<Þ¾¿P ÁÃÅ6XYZ[NÃHI²³XYëL³lß¾~»YTÄßj³ Answer Substitution Ó àY~ÅÍÊÜ𳾿 »ÄÅ6µ1YGÃj;6XYëL6Ð~J±6jÔT¬ð~¿ Þ»ÊlßÄÅ6µ1YGÓ¬ÅÕÑ{KLÓXÁB~»YTÃÄÐ~\669:³Ñ {KLÓ*ê³Bº0³³¾¿ ÅÅÜyÕòóÜÃÄ Dining Philosopher ʱM²³31ÓÃÌY»NO6 Petri-Net Ó ~ÅÍÊÜð~ÍÄ(6NO6ÂiìíÓáÞW*ê~ÅÍÊÜð~¿Þ»ÊlßÄ9:³Ñ{ ÓÕêß*ê~ÅͳWıMNOT{ðâWÅ͹/Üðº0¾¿ÑÒÅ6jÔÃÄ Algorithmic Program Debugging 6}Ƴµ1YGÓ¬ÅÕ Ü6ã{äÓ{³Æ[©Ã³ WÄPd6Ñ{KLÜ[©³^_ÓÎ~ÅÍÊÜð~¿ Å6µ1YGÃÄ«ÅïGÍÃaÄTìÕ~ÏÐÑ2Z[«6îïXT}Ø7DÕ~Å ÍÊÜð~¿ÅÅÜ&¸Þ» Petri-Net ÃÄÂi&TìÕ~ÏÐÑ2Z[«ÓPPÆÞ»Ù6 ÜÐ~¿ÑÒĵ1YGÞ»NO6 Petri-Net ÜÄ(6WØåæÓ»8~ÅÍT}ØÄÏÐ Ñ2Z[«6îïXT0aÕ~Ù6ÓÎ~ÅÍÊÜð~¿ 6.2 Talk ç 22ÃÄ Talk 6XYZ[N.ÜÐ~¿ Äw¾T Ó©ªÍlßÄø´Í 0F6 Display T0ØDÕ¿ Display ÃÄNOÓÀÁCDEFGHÜÐØÄ MessageJoin Óol ßÂiÓÍlß¾~¿Å6XYZ[NTÃÄÿëïE656ÉÊq8¹º³¾Í¾Æ¶ZÊÐ ~¿ÅºTÁ¾ßÄè Üéêßð»òóÊ8Æo/~*êߪ}Æ¿ diningPhilosopher. Fork. Philosopher. Fork. Fork. TRUE. Fork. TRUE. Philoso-. pher. KeyBoard.
(17) Å6TÁ6jÔ6 Petri-Net ÓX~ÍÄ (jÔ 1) 6éÇT³lß¾~¿ÅºÃÄ MessageJoin 6ÀÁÿëïE6Ü1016éÇÉ6ÙÆPÁ£³³ÜÐ~¿Å6 Petri-Net 6}ÆTÄë «ÅÍÞß MessageJoin ÓoÆXYZ[N6jÔTÃÄÙÞXYZ[NÊ^g³0Ä[>Å 6Ç6³ÊDßW~¿ÅºÃÄ^g³XYZ[NÓ~/6Uê6PÁÜÐ~¿ »ÄÐ~ÿ ëïEÊ˸޻ Petri-Net Ä(6ÿëïEÍÂÌÿëïEÓø´øùT0~jÔÃÄ Åº ÜTl» Net 6¡Iͳ~¿Å6}Æ³Ä Petri-Net è6îïXÊÄ DinnerBell 6 XYëLT0aÕ~¿ 5.4 ëìíîïð# !"ñò Å6}ÆTÞß˸޻kµîÃÄóÞW6]L]LÊ˸¹º~ ÜÄÁ Ø itBlock Öý6]GÜ&¸Þ»µï«YïZ[«6&¸ÊP±ÜÐ~@6ÄA{XYZ[N6ô6 ÂiìíÓÞß¾~¿Å6kµîÜÃÄ õ±¹º» itBlock Öý6]GT}~îïXÄ NOÓ~»YT(6îïXÓ¢dÕ~ method ÖýÓÀl»ÿëïE 6TÁ6©öÊXYëLÓÞß¾~¿ÂÌ}ÆTîïXÓ~jÔÜÙÄ d6îïXè6 method ÖýÊÇ6dÜÙ÷ø¹º~jÔÄ./0 6}ƳÙ6ÃÄÅ6kµîÜÃÄ8r8 rlðW³~ Petri-Net Ó~¿Å6kµîTÃçù6}ƳÉ)ÊÐ~¿ úûüýþÿ0 itBlock ÖýT}~CDEFGH6@6¡IÃq»ºß¾~¿ »Ä¢dÕ~ HïG]6ýÃÄ DinnerBell Ü6XYëL6ýÜÐ~¿ 1234þÿ0 ÂiìíT6ªTâäÕ~/Ä¢dÕ~ÿëïE6ÀÁNOTÃÚººß Þ Æ¿ÿëïE65ûÕTUVWåæ´6ÃÄ Place D~§ý678ÍÞß Í Yº~¿ 9 ü Petri-Net øù6lð¹ÃÄ PlaceÄ TransitionÄ786ýܰ ~¿Ë ¸¹º~ Petri-Net ÃÄRlÃÿëïE6KLj;ͳ~¿ÞÞÄÿëïE6¢d T}~XYëLÃÄPÁ6 Petri-Net T Í~ÅÍÊÜð~6ÜıM²³XYëLÓ4 ]5GHTÜð~¿ Å6kµîÃA{XYZ[NÓÄ¢dÕ~ÿëïET}~XYëLÓÕ~Ù6ÜÐ~¿ Factorial. [. ]. [. ]. [Petri-Net. ]. !
(18) îç ÅÅÜÃÄ Phased Petri-Net ÓÎñÞ»µ¶Z6.ÓTÁÐ~¿PÁÃÄ Dining Philosopher ,-ÜÄXYZ[N6µ1YGÓXÁB~.ÜÐ~¿ÙÆTÁäÃÄÿëïE016 566q7TìÕ~¶ZÓXÁB~.ÜÄTÁ6 ÍÄTÁ6 ÓolßÄ w¾TÞÓÕ~KLMN \Talk" ÜÐ~¿ 6.1 Dining Philosopher ãç Dining Philosopher ,-6XYZ[NÓ 20TyÕ¿ÁÂ6ÃaÄÊÄÁÁ6«ÅïGÓà ¹rÜT³lߨÄ(º ºÊø´6òTÐ~«ÅïGÓ/¤ÍlßÓÕ~;ÆÙ 6ÜÐ~¿PÁ6«ÅïGÊTÂ6ÃaÄT}lß^¹ºß¾ßÄÓ{³lß¾~¿ ÁÂ6ÃaÄÊÂ/TÄ6«ÅïGÓÍ~͵1YGʬð~¿ 6. Display. KeyBoard.
(19) '$ &% '$ &%. think!. : . freeR! -. P. free!. PP. P P. P P q. : . freeL!. '$ &% '$ &% '$ &%. free!. -. P PP P. P P P q. freeR!. 18: §ý6ÿëïEÊPÁ6 Petri-Net Ó^Õ~. '$ &% '$ &% '$ &% PP. pick!. P P. P P. P P q -. free!. : . XX XX X. . ret:. XX X z. free!. . pick!. 1 . '$ &% '$ &%. ret:. 19: §ý6ÿëïEʧý6 Petri-Net Ó˸Õ~.
(20) '$ &% '$ &%. pick!. P PP P. . P P. . P P q -. . 1 . '$ &%. ret:. free!. 15: Fork 6«[Zÿ]H 1 (5ï]T}~Öý6QR) TÇ]Þßųº~Ù6ÊÐ~¿èÄ 166}Ƴ ÿëïE01Êųº»ÍÕ~¿ Å6/Ä ~Lfork pick! ÊWØÞ»ÍÕ~ÍÄ Í TRUE. (~Lfork pick!) yes: ( pickR! );. 16: Fork 601 ¾ÆCDEFGHÊÓ¹ºßÄ(ºTÄ yes: ;ÆÿëïEÊ0º~¿Å6ÍðÄ«[Zÿ ]HÊ¡I¹º~¿¹TÄ ÊÄ0º» itBlock TÄ eval! Ó0~¿Å6¡I6¯¢ ÃÄ 17T³~¿. '$ &% '$ &%. TRUE. pick!. P PP P. . P P. . P P q -. . free!. 1 . '$ '$ &% &% -. yes:. -. eval!. 17: «[Zÿ]H6¡I ÂÌCDEFGHÂÌ·ïï16ÿëïEÓ§ý01Õ~jÔÄÂÌ Petri-Net ʧ ýd˸¹º~¿ÅºÃ Method Öý6ÕABÊÀ³lßÄÑÒT(º ºÿëïEÓ0l» CDEFGH6(º º6 Continuation TJlßÀ³~ÔØÕÓÓÕÜÐ~ (jÔ 1)¿ ÔØÕÓÓ¹³¾jÔÃÄÂÌ Petri-Net Ó^Õ~ÅÍÊÜð~ (jÔ 2)¿ 6.6jÔ ÃÄÅ6TÁ6ò6jÔÊDßW~¿ (jÔ 1) 6CDEFGHTÃÄTÁ6 CDEFGH601ÊÐØ/~ÊÄ. >Ä free! 6ÿëïETÃÄÔØÕʳ¾6ÜÄÅ6ÿëïEÃPÁ6 Place 60 1ͳ~ ( 18)¿ (jÔ 2) pick! 6ÿëïEÃÕÓÓÕ6ÜÄTÁ£¤6 Petri-Net Ó~ ( 19)¿ MessageJoin 6jÔ6¡IÃJ£ÜÄ free! 6ÿëïEÃÄTÁ6 pick! 68pÍÙ Join Õ~9: ÉÊÐ~¿ Fork. Fork. Philosopher.
(21) '$ &%. Place1. : P. T1. PP. P P. '$ &% '$ &%. Place2. P P q. Place3. 12: Petri-Net «[Zÿ]H. '$ &% '$ &%. -. -. yes:. '$ &%. eval! -. no:. '$ '$ '$ &% &% &% '$ &% 13: TRUE 6«[Zÿ]H. yes:. L. L 1 L L . -. 1 . -. P. P PP 2 P q 2P P P P 2 P q. no:. 14: åæ .
(22) ³8ÊÐ~¿Å6}ƳXYZ[N6jÔTÃÄ >Ä(6/T¨Õ~XYëL (= HïG]) TÇÞßÄóÞWCDEFGHÓ˸Õ~}ÆTÕ~ÅÍT}ØÄÂÌÖðÓÕ~^g³XYZ [NÓ~ÅÍÓ/~¿(ºÊÜð³Bº0ÄHïG]6ýÓuÕ~į^g³>´ÓØ DÕ³86òóÊÐ~¿Åº6òóÜÙ^gTÜð³¾XYZ[NÃį^g³ Petri-Net 6 =QÓ[©ÍÕ~¿ 5.2 !" ! ÅÅܱ"Õ~ kµîÃÄXYZ[N6#$ÍÇ6NO6ÈÉÓÕ Place ÓB/» Petri-Net ÓoÆ¿kµîÃÄçù6©ö³~¿ Place NOÈÉÕ~ Place (XYZ[N6õöÙ) Token Transition Place Transition 678 Transition Place 678. źÓÄÅÅÜÃĦ Í{ð%6Á¾» Place 6&Ô;Æ}Ƴ³ÜտźÃÄ (º º^u6&ÔÜÐ~¿¹TÄCDEFGHÓóÞW˸Õ~}ƳÿëïE (Å6} ƳÿëïEà Petri-Net 6É)ÓÖ/ßÞ Æ) ÊÐ~ÊÄÅÅT'§Õ~ÍÅ6 Petri-Net 6()Ã#$Õ~¿ 5.3 !"*+ Petri-Net 6˸6»YTÃÄ DinnerBell 6Ìÿª1ÍT Place TÄÿëïE6RD 68ÓÁB» Petri-Net ÓñcÕ~¿ źӫ[Zÿ]HÍúÄRDÓÕ Place TÃÄ input, output 6 2 ,ÊÐ~¿ Transition ÃÄ DinnerBell 6GT0aÕ~¿./0Ä 46 output: ÓTÁT´B~ 6.6«[Zÿ]Hà 126}Ƴ Petri-Net T³~¿ kµ î6˸à 3 -.T³lß¾~¿ >ÄÌÿª1TÇÞß«[Zÿ]HÓ˸ÞÄ(ºÄ ÿëïE6Ñ{KïZ]LTUV¾ßÄ(ºÓ¡IÞß¾W¿RhT/³>´ÓCØ0W¿ ÿëïE5K]ZÃÇ6}ÆTÞß Petri-Net 6Ç]VBº~¿ >Äÿª16ÿ ëïE5ï]ÃÄPÁ6 Place TÖ×¹º~¿(6hTÄPÁ Transition Ó1W¿(6 Transition Ä(6ÿª1ʬ¹º»/T01¹º~ÿëïETÇ]Õ~ Place 78ÓD Õ¿ ÅÅÜÃåæ Ó.TÞßUE²³ Petri-Net 6˸Ó2GÕ~¿åæ ÜÃÄÐ~ÿëï E6Û/ÍÞßÄ Ä 6T3ØÐ~¿ 56XYZ[NÃÄ 13TyÕ«[Zÿ ]HTÖ×¹º~¿ Å6CDEFGHTÇÞßÄ yes:, no: 6·ïï1T}ØTÁ6 itBlock Ó0~ÍÄ8pT eval! 6ÿëïEÊ0º~¿ÅºÊÄåæ 6ÜÐ~ ( 13)¿Å 6jÔ6 Petri-Net 6¡IÃçù6}ÆT³~ ( 14)¿. » MessageJoin 6jÔÃÄÝpÔ~ÿëïE6̤TÇÞßÄ Place ÓØÄ(6 hTPÁ Transition ÓW¿ 206XYZ[NÃÄ 156«[Zÿ]HTÖ×¹º~¿ Å6}ÆTÄÿª1ÍT˸޻«[Zÿ]HÓÑ{6KLT3lß¡IÕ~Í PetriNet Ê˸Üð~¿¡IÃÄÿëïE601TÇ]Þßųº~Ù6ÍÄÿëïE6Ü Split. TRUE. FALSE.
(23) GH601ʬð~¿Å6}ÆTÄ3M place transition TÃÿëïE6Ü1ÓÕP Á678ÊÐØÄ transition ÃÿëïE601ÓÕ§ý678Ê6 place 6~¿ Å6/Ä MessageJoin TÃÄ transition TÇÕ~§ýRÊÇ]Õ~¿ Å6}ÆTÞßÄÿëïE6KLÓ Petri-Net 6BÜÕÅÍÊÜð~¿ÅºÊÄÅÅÜ oÆÑ{kµîÜÐ~¿Å6 Petri-Net Ó=QÕ~ÅÍT}ØÄXYZ[N6ÂiìíÓ*ê~ ÅÍÊÜð~¿ ÍWT6]L]L˸64Ø6@6±MNOTÁ¾ß/}Æ¿Å6}Ƴ6]L] L6˸ʳ¾@6 Petri-Net 6HïG]5ïNTÃçù6}Ƴ6ÊÐØÆ~¿ HïG] Ê~ÞßÊõöÕ~ (Þ¾XYZ[N6#$) HïG] ÊWØÜð³W³lßõöÕ~ (µ1YG) óÞW6]L]LÓ~ transition T'§Õ~ (Ç6 phase 6É{) è¾>ºTÙ'§>ÄH7THïG]5ïNÊIW (HIXYëL) RS6 3 Á6NOT[>{ðÁW}ƳÙ6ÃÄRh6NOAB,-TÕº0¾¿Å6/ÃX YZ[NÃ8ÇÑ{Ü6H ïLT}~µ¶Z³8T}Ø=QÕ~ÅÍÊÜð~¿A{XYZ [N69:6Ð~jÔÃÄRh6H7THïG]5ïNÊIW9:ÉÊÐ~/ÜÐ~¿./0C ïM]ZKLMN2Ä ï¶G[6]Hkµî6 ï¶Ä311[6¶ÄXYëL6 ïE;³86^ñ³XYZ[NÊÅ6G[LT<Õ~¿Åº6G[LÜÃį°±²Ñ{2 +É6³¾¶ZÊÐØÄH ïL³86=76òóÜÃÆ Wµ¶ZÜ𳾿ÅÅÜéê » Petri-Net T}~kµîà DinnerBell XYZ[N6>´²³±MNOÄÁ ØÄXYëL@ 60wñ6=QòóÓ>?Õ~¿XYZ[Nj;6c:Ãħý6^g Petri-Net 6@6¯° ±²³NOÈÉBÍÞßf/~ÅÍÊÜð~¿ HIXYëLÓÕ Petri-Net 6=QÃÄ(6U<¹T}ØÄ(6HïG]5ïNBT ¾ßÄ Petri-Net @6HïG]6ýTèuÊÐ~jÔ (^g) Í(ÆÜ³¾jÔT´Bº~¿ ABC Petri-Net TÇÕ~9§,-Ó Place 6HïG]6´D65ï]TÇÞß NOÈÉÓ~ÅÍT}Ø=WÅÍÊÜð~¿9§,-Ê=B~ÅÍÃÄ Petri-Net T ìÕ~EÍr8Õêß6,-Ê=B~ÅÍÓc:Õ~¿ FABC ¯^gÜÐ~;ÆÅÍÃÄÐ~J±6 Place 6HïG]Ó¾WÜÙ ¨2~;ÆÅÍÜÐØÄ¯°±²³XYëLý6¨Óc:Õ~¿¯^g³ Petri-Net TÇÕ~9§,-Ã=°9:ÜÃÐ~ÊIJTÃU<ÜÐ~¿ ÅÅÜ6 Petri-Net 9§,-ÍÃÄSiNOÄÐ~9:³HïG]6´DNOTÄ'§ Üð~8ÆÓ*ê~,-ÜÐ~¿ ^g³XYZ[NT}Ø[©³ABXYZ[N6EÍr86G[LÓÕ~ÅÍÊÜð~¿ ÍWT¯^gÉøùÊÄ (hÜyÕ}ÆT) [©³56ÉÓ´µÞß¾~}ƳjÔÊÐØÄÅ 6}ƳjÔï^gÉ67DABÓ{³/0¾¿,-öZÓJ±Üð~}ƳÄ=QÉ6 ¾kµîÓÀÁXYZ[NÓ~ÅÍÜÐØÄ^gÉÃA{XYZ[\]Z6PÁ6GHUê Í/~ÅÍÊÜð~¿ ¯^g³ Petri-Net ÓËÌ~}ƳXYZ[NÍÞßÃÄ./0Ä üý N Óf/ß N d6ÿëïEÓÂÌCDEFGHTÇÞß01Õ~Ù6Ä GIEÓÜBÍ>TÿëïEÓJuT˸Õ~CDEFGH [. [. Petri-Net]. Petri-Net].
(24) Time. Phase 1 ..... Phase n. 11: Phased Petri-Net ÅÅÜ6Ñ{kµîÍÃÄXYZ[N6ÌÑ{66]L]L6&KÓyÕÙ6ÜÐ~¿X YZ[NøùÃÄXYZ[6Àlß¾~®¯ÓL»¹³¾ÅÍ (¶Z) ÊÐØÄXYZ[Nø ùÓ*êßÙ(6PMÓ*ê~ÅÍÃ<Þ¾¿³¸³Ä(ºÃPP²³78,-ÜÐ~ ÜÐ~¿(º}ØÙÄd¤6Ñ{ÊÄXYZ[6/ß¾~®¯ÍPMÞß¾~8ÆÓ* ê~òÊMT2¹Þ¾¿ÞÞABÑ{ÜÃÑ{kµî(6Ù6ʧ¶T³lßÞ Æ6ÜÄÅ ÅÜÃÂiìí6ª6Ñ{kµîÓ±"Þß¾~¿ 5.1. Phased Petri-Net. Pd6XYZ[NÑ{6KLÓ/~¿ DinnerBell ÜÃKLÃÿëïE5K]Z6&Ô ÜÐØÄ ACTOR kµî [7] ͯÄÌÿëïE5K]ZTÃÄÞ6ìíTUVWN56ì íÊÐ~¿ Petri-Net Ó˸Þß¾WîOPNÓ/~»YTÄÅ6N56Óôa³j 56Ó/~¿N56j56Ó˸Õ~QTbcÉÊÐ~6ÜÄÑ{KLTÇÞßPcT°. ~kµîÜó¾ÊÄÅ6bcÉÃÅÅÜÃx©Üó¾¿Å6j56Ó»8lßÿëïE 5K]Z6&ÔÓÄ6]L]L˸6ÿëïEÓT´)Õ~¿ DinnerBell TÃÄ 2 ,6ÖýÊÐØÄPÁà method Öý (P/Öý) ÜÄÙÆPÁà itBlock Öý (6]L]LÖý) ÜÐ~¿ DinnerBell ÃÄOPQRÜÐ~Ä itBlock Öý6ÕÃÄ CDEFGH6˸ç¥Ö³¾¿PòÄ method Öý6òÃÄÿëïE01ÍTÕÊÖ ~¿ÅºTRäÞßÄ6]L]LÓ˸Õ~ÿëïEÍÄ(ÆÜ³¾ÿëïE6TÁT ÿëïEÓ´,Õ~¿Å6´,ÃÄÿëïEÊG[LT0º~Ä6]L]L (Öý) T 0º~T}lßS£Üð~¿ Å6/Ä(º º6´)¹º»>´ÃÄ6]L]LÓ˸޳¾ÿëïEAB³l ß¾~¿Å6ÿëïE6²ºÍÄ6]L]LÄ Petri-Net Ó&¸Õ~ÅÍÊÜð~¿ÿ ëïE6Ü1ÃÄPT6 place Í transition ͳ~¿CDEFGHT0º»ÿëïEÊ¥~ jQÊ place ÜÐØÄÿëïEÊÜBBº~Í transition Ó3UÞßħý66CDEF.
(25) 6 itBlock TJBß0º~¿Å6/T T2GÞ» wait: ÓolßÄD6CDEFGH 6GIEÓÝlß¾~¿ ÂÌÿëïE5ï]ÃÄPÁ6CDEFGHTPÁÞV¹º³¾ÊÄTÁ6ÿëï E5ï]ÊÂÌPÁ6ÿëïE5ï]Ó^Þß MessageJoin Ó&¸Õ~ÅÍÃV¹º~¿ Å6ÍðTÃÄÝÔ6ñcÊÜðß¾~òÊWX¹º~¿ÅºÓolßÑÒTNOÖýÓÑ Õ~ÅÍÊÜð~ ( 10)¿ ÅÅÜÃÄ state:X ;ÆÿëïEÊ¢dÕ~¿Å6ÿëïE ÃÄ write:XÄ read! 68pPòÍ Join Õ~¿ÅÅÜÃTÁÐ~ Continuation 6Æp read! TÇÞß6ªÛ/Ó01Þß¾~¿ Å6 TÃÄ >SiÆÍÞß state:0 6ÿëï Register. class Register. ]. [. read!1 state:X *X. state:X; write: X1 state:Y state:X. 10: Register in DinnerBell E0~¿Å6CDEFGHT write:1 Ê0º»ÍÞ}Æ¿Õ~ÍÄ itBlock 6 iteration T}Ø state:1 ÊÄø´øùT0º~¿ÇT read! Ê¥~ÍÄ state:1 Í Join ÞßÕ6 1 ÊÄ read! T ÇÞßÓ¹º~¿§ý6 read! ʥ߾»ÍÞßÙÄ(6,6PÁÞ Join Þ³¾¿(ºÃÄ state:1 ÊPÁÞ³¾ÜÐ~¿ write: Ó¾W»W¹r0lßÙ state: ÿëïEè/³¾ÅÍ TRcÞßYÞ¾¿ 5 DinnerBell Z[ !" 8Ç36XYZ[\]Z45ÜÃÄÑ{6ÓÕkµîÍÞßÄ./0ÄÐ~XYZ[N 6Ñ{T¾ßÄ(6XYZ[NTº~Õêß6ìý6RÍÕ6TÓC~ÅÍÊÜð~¿. »Ä12345ÜÃÄÕêß6é5TÇÕ~12Öý6Õ6CØò6&ÔÊÑ{kµîTÇ]Õ ~¿ÞÞÄ8p6jÔÜÙÄABÑ{ »Ãį°±ÉÓ}Ƴ45\]TÇÞßÃÄ Ñ{6¯¢Ó¾´TÞ»Ñ{kµîT󳾿¯°±ÉÍÂi&6TÔÊRD2 12Öý6Õ6CØòTº³¾^º»NOÓØAÞß¾ßĹTÅ6^º»NOÓÄ£³ Âi&T}Ø_`Õ~ÅÍÊÜð~¿Å6^º»NOÃÄXYëL6ÂiìíÓÞß¾~¿ źÃÄ Brock-Ackermann Anomaly[3] ÍÞßrºß¾~¿ÞÞÄÅ6}Ƴab³RD Ó}ƳÑ{kµîïMT§¶T³lßÞ Æ¿ (ÅÜÄ¥6XYZ[N6Ñ{KLľq¾q³^_ÓcßßXYëL@6ìíABÓ dðDÞ»kµîÓ~ÅÍÓ/~¿ DinnerBell ÃÄ MessageJoin Óol»Âi&ÓÀÁ 45ÜÄ(6Ñ{ÃÄ Petri-Net 6˸Í(6èÜ6HïG]5ïNÍ/~ÅÍÊÜð~¿( ÅÜÄÐ~ Petri-Net ܹº»±MNOÓ/@eòJT¡IÞ»}ƳÙ6Ó/~¿(ÅÜ ÅºÓ Phased Petri-Net ( 11) ÍúûÅÍTÕ~¿ Å6kµîÃÄ DinnerBell 6Ð~J±6Ñ{KLTÇÞß˸¹º~¿Á ØÄÂÌXYZ [NÓÂÌRµïTÇÞßÑ{¹ßÙÄÑ{6PdÍTÅͳ~kµîÊÜð~¿Å6 kµîÃÄ |TÇ]Þ»kµî [12] ³86}ÆTÄXYZ[N6Ñ{Ó(6. Petri-Net T Ö×Õ~6ÜóWÄÑÒ6XYZ[N Petri-Net ܹº~XYëL6ôABÓdðD Þ»Ù6ÜÐ~¿./0Ä¥6XYZ[NÜÃÄÿëïEÃÕÓ5ûÙ6ÜÐ~ÊÄ˸¹º » Petri-Net Ó=QÕ~/TÃÄÅ6ÕÓJfÞß¾~¿.
(26) ï1 wait: Óolß01Õº0¾BÜÐ~¿ Out2 wait: ( to: Out2). h6.ÜDßW~}ÆTG[L ÓGIETo¾Ä yes: Ó wait: 6QØToÆÅ ÍÙÐ~¿ 4.4 MessageJoin ghi statementBlock Í MessageJoin ÓTÔßĹ j ³Âi,-Ó DinnerBell ÜXYZ [NÕ~ÅÍÊÜð~¿ÅÅÜx©³ÅÍÃÄÿëïE6ÝpÔ6EÃÄÕêßÿëï E5K]ZT}l߸9Þß¾~ÏÜÐ~¿ÅºT}ØÄkµî6&'ÊÚÛT³lß¾~6 ÜÐ~¿ TRUE. 4.4.1. klmn. ÅÅÜÃÄhÜoÆ Dining Philosopher 6.-6,ÜÏÐÑ2Ó{³Æ«ÅïGÓ2GÕ~¿ Å6«ÅïGTÇÞßÄ > free! Ó0~ÅÍT}ØSiÆÕ~¿«ÅïGÓo¾»¾XYëL ÃÄ pick! Ó0~¿Å6«ÅïGÃÄ free! ÍÄ pick! 6TÁ6ÿëïEÓÝpÔ~}ÆT ³lß¾~6ÜÄoÊ free! Þ³Bº0Ä pick! Ü𳾿źÃÄ DinnerBell ÜÄ binary semaphore ÓÑÕ~/6åê²³òóÜÐ~ ( 8)¿ Å6/Ä ÃÄ pick! TÇ]Õ~ TRUE. [ pick! 1 free!. class Fork. sender#1. ]. ret:TRUE. % sync free and pick. 8: Fork in Dining Philosopher Continuation TÇÞß01¹º~¿ 4.4.2. lpq. §ý6XYëL¥~§ý6ÿëïEÓPÁ6LHïNT ÍY~ÅÍÊÄïEÜ ÐØÄ./0ÄRD³8T[©T³~¿ÅÅÜÃÄÿëïEÇXYZ[N Talk 6P>6 ÓXߪ}Æ¿ >Ä newFor: T}ØÄ itBlock Öý User Teï¦Óæ±ÞÄ to: Ü Out 6SiNOÓI±Õ~¿(ÞßÄÅ6CDEFGHÓNOÓÀl» to:Out ;Æÿëï EÓø´T0~¿Á ØÄÅ6 to:Out Ê Ó¢dÞß¾~¿Å6¢dÞß¾~ÿëï EÍÝpÔ~ÅÍT}lßÄïEÊѹº~¿Å6}ÆTÞ³¾Í Out TÇÞßÄ write: Í nl! Ê5ÂT0ºßÞ Æ ( 9)¿ to:Out ÃÄÅ6,6 statementBlock 6,Pr± Display. Display. [ newFor:~User out:Out to:Out; output:X1 to:Out1 Out2 ( ((Out1 write:~User) write:X) nl!. Out2 wait: ( to: Out2. *TRUE). class Display. ]. 9: Merge and Display.
(27) [ yes: aBlock no: aBlock. class TRUE. ]. aBlock eval! ;. [ no: aBlock aBlock eval! ; yes: aBlock ;. class FALSE. ]. 5: TRUE and FALSE ðTîïXÃÄPr@s6 itBlock 6 self TÇÞß{º~¿ÅÅÜÃÄ fact: Ê(6}Ƴÿ ëïET³lß¾~¿ÅºÓÿëïE6¢dÍúû¿ class Factorial. fact: N. ]. [. (N =: 0) yes: ( * 1) no: ( * ( (fact: (N 0: 1)) *: N) ). 6: Factorial. t9u4vwx. »DYGÃÄyzGHToÆÅÍÙÜð~¿ DinnerBell 6}ƳOPQR3µïÙ 645ÜÃÄÖýà AÕÓ{ð| ºß¾³¾}±6NOÍÄÕÊ{ð| º»NO6T Á6NOÓÀlß¾~¿ÕÊ{ð| º~;ÆÅÍÓÕÊ»±Õ~ÍپƿÐ~Öý6ÕÊ 4.3.4. »±Õ~ÅÍT}ØÄJ±6 statememntBlock 6,ÓÑ{Õ~;ƳÜÂiÓÍØ»¾ÍÞ }ƿźà active value[21] 6}ƳÙ6Í/ß¾¿ DinnerBell ÜÃĵ«ÅîHÜ 76G[LÓ ~ Þß¾~¿Þ»Êlßbc6Öý (R# ²TÃÄ 6CDEFGHT»±Õ ~) TÄÅ6ÿëïEÓ0~ÅÍÊÜð~¿o¾òÃÄÝpÔ»¾ÖýTJlß·ïï 1 wait: ÓolßDYGÓ01Õ~¿ DinnerBell ÜÃÄÿëïE601ÃÄ01%Ê»±Õ ~ Üzi¹º~¿ÕÊ»±Õ~Í wait: ÿª1Ê ¬¹ºÄDYGT eval! 6ÿëïE Ê0ºDYGÊðDÕ¿ Å6 L]1ÍÕ60T}lß©àÙ / yzGH / Âi class Waiter. [ ]. wait: B. B eval!. 7: yzGHDYGÓ¬Õ~ÿª1 6»Y6]1KF6GÓ{Æ¿./0ÄÖý Out2 6ÕÊ»±Þ»Ä to: Out2 ;Æÿ ëïEÓø´T0Ø»¾ÍÕ~¿Å6/TÃÄÇ|6}ÆTÄ(6ÿëïE01Óµ«ÅîH 6ÿëïE5ï]ÓÀÁ statementBlock TÁWlßÄÝpÔ»¾ÖýTJlß·ï.
(28) pick! 1 free!. ;Æ5ï]³0ÄRS6 pick! 6 Continuation Ê sender#1 ÜÐØÄ free! 6 Continuation Ê sender#2 ͳ~¿ Continuation 6L4ïXÍÃJ£Tæ±¹ºß¾~¿ÅºÃÇTéê ~åæ ÜÃÄÌåæ Ã(66ÿª16 Continuation Ó^Þ»òÊγ»YÜÐ~¿ à method ÖýAÊÄL4ïXà itBlock ÖýÍÞßCؼº~¿3MÃÜ1sÜÃçù 6}Ƴ³ÜÛ/Ê01¹º~¿ sender#1 ret: 3. ÿëïE01/6 Continuation 6I±ÃÄ ( ÓoÆ& Êñc¹ºß¾~¿Ü1s6 ContinuationÄ sender#1 ÃÄ * Óñ¾ß *#1ĹTÄÅ6}ÆT 1 r6jÔÃÄOT * ÍÕ~ ÅÍÊÜð~¿¹TÄ Continuation TÁ¾ß÷ïï1ÙÓVÕ¿ÿëïE5ï ]AB³~ statementBlock ÃÍGÓÕ~ÅÍÊÜðßÄ »Äµ«ÅîH6 ·ïï1ÍÞß ret: Êoº~ÅÍT³lß¾~6ÜÄ01sÃçù6}ÆT³~¿ źT }ØÄè6TÁ6|Ãçù6}ÆTÜð~¿ X. ( 1 +: 2. *3. źÜÄ Smalltalk-80 ͯ6& TX/~}ÆT³l»¿ »ÅÅÜùÊO³~ܳ WÄ& 6P>Ó&¸Þß¾~¿78øùÃÄ Continuation Ó/~»Y6ÜÐØÄ( 6/%ÃÄ5ï]ܳ¾ÄCDEFGHÜÙ}¾¿Â¯Tçù6}ÆTABQRÙÑÜ ð~¿ high: H low: L( List. split!. Û/601sÜÃÄÇ6}ÆT high: Í low: 6TÁÓÂ/TP\T sender#1 T01ÞßÙ¾ ÞÄ sender#1 high: H low: L. Ð~¾Ãçù6}ÆTT\T=lߣ¤T01ÞßÙ¾¿ sender#1 high: H. sender#1 low: L. »£¤6CDEFGHÊÄ high: Í low: Ó£¤T01ÞßÙ¾¿ 4.3.2. . ÜÃ"2ÕÙCDEFGHÍÞßÓ¹º~¿ Smalltalk-80 ͯTÄ"2ÕTÇ ÞßDYGÓ0ØÁB~ÅÍT}ØÄ"6/Tà yes: Ü0º»DYGTÄ6/Tà no: Ü0º»DYGT eval! Ê0ºßÄ(6DYGÊðDÕ¿DYG6,6ÖýÍ Continuation ÃıÍ^¹º~ ( 5)¿ p9 ÿëïE5ï]ʹº»CDEFGHTÃÄ eval! ;ÆÿëïE5ï]Ê7± ¹º~¿Yïî³CDEFGHÍÅ6óÓolßÄåæ|ÓéÞ»6ÊÇ6źÓÎ ñÞ».66.ÜÐ~ ( 6)¿ÿëïE01|T¾ß01%ÓÕ~Íĵ«Åî HÍÞßÄ01Õ~CDEFGHøùÜÐ~ self Ê01%ͳ~¿ÅºÊîïXÓÕ¿Å6Í DinnerBell. 4.3.3.
(29) ³µï«YïZ[«T0aÕ~¿ÅÅÜÃÄ DinnerBell 6 2 ,6Åͳ~ÓÀÁÖý ÊDßðß¾~¿ÙpqrÄź6ÖýÃÄ(66@ÄÕÊ{ð×/º~ÅÍó¾¿ A 6 /6 \~" ÃÄ A Ê Smalltalk-80 66]L]LÖýT0aÕ~ÖýÜÄ itBlock ÖýÜÐ ~ÅÍÓÕ¿Å6ÖýÃÄCDEFGH (itBlock) ÍÂÌÓÀpÄÅ6G[L6}ÆTÄ ±ý2õ±¹º»µï«YïÓÕÅÍToÆ¿ DinnerBell ÜÃÄT Smalltalk-80 6P/ ÖýT0aÕ~ method Öý;ÆÙ6ÊÐØÄÅÅÜ6 X Ê(ºÜÐ~¿G[LÍÞß4¹ ºß¾³WßÄ \~" Ù 1¹ºß¾³¾¦ à method ÖýÜÐ~¿Å6Öý6Ãÿª1 úDÞ6(ºÍÂÌÜÐØÄÅ6CDEFGHT output: ;ÆÿëïEÊ¥~/TóÞW º~¿Þ»ÊlßÄOPQRÖýÞÀ»³¾45ÜÐlßÙÂÌCDEFGHTÇÞßÄ output:1 Í output:2 6}ÆTÿëïEÓdÜÙ0~ÅÍÊÜð~¿Å6.6}ÆT DinnerBell ÜÃÄ method ÖýÜÜB~ÿëïE5ï]Í itBlock Öý6016]GÊµï «YïZ[«Ó&¸Õ~ÅÍʾ¿ itBlock ÖýÓÿëïE5ï]6§ý6ÿëïE6'â2ÄÖýÓ^Õ~CD EFGHÜ6§ý6ÿëïE6'â³8ÃÄOPQR6°¼Í³~¿ DinnerBell ÜÃÅ6 }ƳjÔ[ïÍÞßÞ ÆÊÄÃ~IÕ~¿ 4.3 ã ¡¢£¤¥¦§¨ () ÜWW~ÅÍT}ØÿëïE01|ÓLH¹~ÅÍÊÜð~¿./0 1 +: (2 +: 3) 6}ƳéÊÜð~¿¹TÄCDEFGH6,T () ÜWWl»ÄGÓÀÁ©96C DEFGH statementBlock Ó~ÅÍÊÜð~¿ÅºÃÄ Smalltalk-80 6DYGTÇ]Õ~ Ù6ÜÄDYG6,ͱÜÖýÃjWÂÌÙ6ÓIÕ¿Þ»Êlß statementBlock Ê(6± 6 itBlock ÍÂÌÓÀÁ;ÆÅÍÙÜð~¿ Å6}ƳÓ^Þ»Rº¢6CDEFGHÃÄ Lisp ÜÃÄ closure ÍÞßrºÄµï ªïL6´!ÜÃÄ Nested Transaction[13] ÍÞß¹ºß¾ß¾~¿{ð×/9:³Öý ÓoÆXYZ[\]Z45ÜÃÄABùÜRº¢T³l»§ý6CDEFGHÓÂ/Ñ{¹ ÁÁÄ(ºÓCDEFGH6NO6«B9:ÉÓ«ÀÕ~ÅÍÃ<Þ¾¿ Smalltalk-80 2 ABCL/1 ÜÃÄCDEFGH6,ÜÑ{Ê8Ç3T³~6ÜÄѬÕ~ÅÍÊÜ𻿠DinnerBell 6jÔÃCDEFGH6,6ÖýÊNOÓÀ»³¾6ÜÄÚÛT®³WDYGÓRÕ ~ÅÍÊÜð~¿ 4.3.1. ¯°±. Continuation. ÜÃDYGù j ³³Üoº~ÊÄRÙWoº~6ÃQR ÍÞß oÆÅÍAqÆ¿ DinnerBell ÜÃQR ܹ/ÙÿëïE5K]ZT}ØÑ¹º~¿ DinnerBell Üà Actor kµîͯTÄÛ6Ó²ÃÄÛ60Ø%ÓIÕÖýÜÐ~ Continuation Óol ßѹº~¿ÑÒÿëïE5ï]AB³~µÊ³6 statementBlock Ó Continuation ÍÞß0~ÅÍT}ØQR ÓÑÜð~¿5ï]]ZÊÑÒ6QR6()Ó6 »Þß¾~¿Û/ÃÅ6 continuation: Ü0º»CDEFGHTÇÞßÿëïE5K]Z ÜÓ¹º~¿ÅºÃçù6}ÆT鹺~¿ DinnerBell. 1 +: 2 continuation: (ret:X ). JTÿëïE6 MessageJoin Óol»ÿª16jÔTÃÄÿëïE601Äçý7Õ ~6Ü Continuation Ù§ý7Õ~¿(ÅÜ(º º6ÿëïE5ï]65T 1 r ÓBß4£Õ~¿ÅÅÜÄ Continuation ³86J£³ÖýÃÄ´µÖýÍú sender#1Ä sender#2 ³8ÍéÕ~¿.
(30) =:X free! 1 pick! to:A and:B output: X. 2: Message Pattern ¯°±ÉÊËÌ~¿ÅºÃABÑ{ù6Âi&TUVW¯°±ÉÜÐ~¿Å6jÔÄÂi& ÍÞßo¾2ÕWÕ~»YÄÕêß6ÿëïEÊ(qÆ ÜµÃÑ{¹º³¾ÍÞß¾~¿ 36}ÆT MessageJoin ÃÄ& ²TÙc:²TÙABÿëïE01ÍéÇÜÐ~¿. 8 8. 8 * 8. H H. H H j. -. -. H H. 8 8. H H j. Parallel Message Send. 8 * 8. MessageJoin. 3: Symmetry of MessageJoin 4.2. §ï¶ !. 46 ÃÄ DinnerBell 6G[L±"6·3ÜÐØÄ »Ä DinnerBell 6CDEFGH 6·3²³o¾òÜÙÐ~¿RS6 ÊG[L¦ÓÕ¿ DinnerBell 6G[LÃÄ itBlock Íú0º~¸¹6,TÄ \;" Ü4l»§ý6ÿª1ÓAê»Ù6ÜÐ~¿ÿª 1ÃÿëïE5ï]ÍÿëïE016TÜÄÿëïE5ï]ÍÿëïE01à GÍú0º~¸¹Ü4º~¿G6hq601|õÍú0º~¿ itBlock 6 it à iteration ÓÞß¾ß+º²ÿëïE016OþÜÐ~ÅÍÓÞß¾~¿ Å6CDEFGHÃÄ A Í B ;ÆTÁ6CDEFGHTÄ output:X ;ÆÿëïEÓ4»ï Split. class Split. [ to:~A and:~B; output:X ~A output:X. ~B output:X. class Split. ]. 4: Class De
(31) nition ÞßÄ(6TÁT0Ø|ÖðÓÕ~¿pÆ8źÃÄ A Í B HïG]Ó4»ïÕ~}Æ.
関連したドキュメント
During the implementation stage, we explored appropriate creative pedagogy in foreign language classrooms We conducted practical lectures using the creative teaching method
The objectives of the model are maximizing the development density, maximizing the mixed land use, maximizing the biophilic open space, maximizing the bikeway accessibility,
Rapid Motion Change Experiment (figure 3, figure 4). The experiment environment of this experiment is as follows. y It is single-unit as for ten times of bending and stretching. y
ü modeling strategies and solution methods for optimization problems that are defined by uncertain inputs.. ü proposed by Ben-Tal & Nemirovski
According to our new conception object-oriented methodology is based on the elimination of decision repetitions, that is, sorting the decisions to class hierarchy, so that the
As a module itself may be defined as an alias or a composition of other modules using paths, it might happen that module definitions end up being mutually dependent. The question is
New Bounds for Ternary Covering Arrays Using a Parallel Simulated Annealing.. Himer Avila-George, 1 Jose Torres-Jimenez, 2 and Vicente Hern
To overcome the drawbacks associated with current MSVM in credit rating prediction, a novel model based on support vector domain combined with kernel-based fuzzy clustering is