• 検索結果がありません。

Debug method using Execution Model in Parallel Object Oriented Language DinnerBell

N/A
N/A
Protected

Academic year: 2021

シェア "Debug method using Execution Model in Parallel Object Oriented Language DinnerBell"

Copied!
30
0
0

読み込み中.... (全文を見る)

全文

(1)[27]. !"#, $%&', ()*+, ),-.. /012345 Tokio 678. In Logic Program-. ming Conference '86, 1986.. !"#, 9:;<, =>?@, ),-.. ABCDEFGHIJKLMN ORAGA - OPQ RSTUVWCDEFGHIJXYZ[\]Z -. ^_`2abc 33 d (ef 61 ghi) j klb, number 5D-2, 1986. [29] mno, pqrs, tuvw, xyz{.  |T}~H€‚H6ƒ„. ^_`2abc 34 d (ef 62 g i) jklb, number 6U-2, 1987. [30] p)†#. ABCDEFGHIJ‡ˆ‰KLMN ORAGA - XYZ[\]ZŠ‹ŒŽ6 ‘. PhD thesis, The University of Tokyo, 1986. ’“lala”•a–—˜™^_•aš ›œžŸ1 . [31] p)†#, ¡¢£¤, ),-., ¥¦§. ABCDEFGHIJ45 DinnerBell 6¨©. Technical Report SF-11-3, ^_`2abª«H¬F­U®1—˜b, 1984. [32] =>?@, !"#, ),-.. ABCDEFGHIJ45 DinnerBell { ¯°±²³>´6 µ¶‚·]Z. ^_`2abc 35 d (ef 62 ghi) jklb, number 3R-6, 1987. [33] =>?@, !"#, ),-.. ABCDEFGHIJ45 DinnerBell 6µ¶‚GŒ. ^ _`2abc 36 d (ef 63 g i) jklb, number 1H-4, 1988. [28].

(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µ‚1Y‚G2Ä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}ØÄÅ6‡ˆ„6,-ӆBß¾~¿Þ»Êlßį^g³XYZ[NTìÞßÃÄ ‡ˆ„²TÃU<³. ÜÐ~¿. »Ä Petri-Net 6ƒ„‡TÃugÊÐ~ÅÍÊޏºß¾~¿ DinnerBell ÜÃÄ Petri-Net ܃„Üð³¾ABKLMN (HïG]6ˆÓ7DÕ~Ù6) ÓÄÿ‚ëïET‰Š»‹NOŒ ÓolßфÜð~¿ÞŽÞÄÿ‚ëïE6NOÍÂiʍŽ¾»,-ÃÄÅÅÜñ¾»òó ÜÃ=QÜ𳾿 ¦™a‘’laÜ{³“ºß~ Petri-Net Ž Ward 6 {Calculus 6Ö× [29] ÃÄÅÅ Üñ¾»kµ€]Z6p”Æ8•6XYZ[NÔ¸T0aÕ~¿ÞŽÞÄ {Calculus ÜÃį °±É6–RÊÄ port Óolß{³“ºß¾~¿Õ³“pÄ¥6 Petri-Net ÊÀÁÇÈÉÊÄË 7.

(10) ackB! ackA! to:Out split:Data. output:X write.... — 25: ˜Þ¾ Talk 6XYZ[N6H€‚H.

(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[N6H€‚H [ 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¹ŠßÄ¥»R‡Teï¦ÓBßD‡Þß¾~¿ Å6XYZ[NÊ˸Õ~ Petri-Net Êė 23ÜÐ~¿Å6‚HÃ^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ʃ„¹ºß¾~¿ Å6Ÿ6¶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´6‚HӃÞß¾~¿Å6‚H6µ‚1Y‚GÊÄ(6. XYZ[N6 µ‚1Y‚GT0aÕ~¿Å6 Petri-Net Ã^g³6Üĵ‚1Y‚GÕ~Ž8ƎÃÄNOZ [«Ó~³86«¡²³ Petri-Net 6=QÜ*ê~ÅÍÊÜð~¿×;²TÃÄÕêß6 Ê pickR! 6NOTR~ÍÄÝpԓŠ~ free! 6HïG]ʳW³ØÄÞ»ÊlßWØ9 :³HïG]ʳ¾¿Õ³“pĵ‚1Y‚GÕ~¿ Comitted Choice 345³86µïÙTUVW45ÜÃÄÐ~Öý6QRÓÚº»ØÄ ÓÕêðÛ/Ó0³Žl»ØÕ~jÔTĵ‚1Y‚GÊ}W¬Å~¿(6}Ƴµ‚1Y‚ GÃÖý2ÿ‚ëïE0Ü16RD‡6kï1=Q2Ä Algorithmic Program Debugging ³8 ÜÙXÁB~ÅÍÊÜð~¿Å6 Dining Philosopher 6µ‚1Y‚GÃÄ«ÅïG6ÏÐÑ2Ó ÝÞÍÕ~¶ZÜÐØÄRD‡6kï1=QÜÃXÁB~ÅÍÊÜ𳾿³¸³ÄÅ6µ‚ 1Y‚GÃ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µ‚1Y‚GÃj;6XYëL6Ð~J±6jÔT¬ð~¿ Þ»ÊlßÄÅ6µ‚1Y‚GÓ¬ÅÕÑ{KLÓXÁB~»YTÃÄÐ~\6„69:³Ñ {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}Ƴµ‚1Y‚GÓ¬ÅÕ Ü6ã{ä™Ó{³Æ[©Ã³ WÄPd6Ñ{KLÜ[©³^_ÓÎ~ÅÍÊÜð~¿ Å6µ‚1Y‚GÃÄ«ÅïGÍÃaÄTìÕ~ÏÐÑ2Z[«6îïXT}Ø7DÕ~Å ÍÊÜð~¿ÅÅÜ&¸Þ» Petri-Net ÃÄÂi‰&TìÕ~ÏÐÑ2Z[«ÓPPÆÞ»Ù6 ÜÐ~¿ÑÒĵ‚1Y‚GÞ»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µ‚1Y‚GÓ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ÓÍ~͵‚1Y‚Gʬð~¿ 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 TJŽlßÀ³~ÔØÕÓÓՎÜÐ~ (jÔ 1)¿ ÔØÕÓÓ¹³¾jÔÃÄÂÌ Petri-Net Ó^Õ~ÅÍÊÜð~ (jÔ 2)¿ 6.6jÔ ÃÄÅ6TÁ6ò6jÔÊDßW~¿ (jÔ 1) 6CDEFGHTÃÄTÁ6 CDEFGHŽ601ÊÐØ/~ÊÄ. >Ä 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 6‚GT0aÕ~¿./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¿ ÿ‚ëïE5‚K]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~ÍÄ8pŽT 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ßõöÕ~ (µ‚1Y‚G)  óÞ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ïN–BT ¾ßÄ 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:ÜÃÐ~Ê戄²TÃ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Ä  ­GI€‚EÓÜ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ø ùÓ*êßÙ(6ˆPMÓ*ê~ÅÍÃ<Þ¾¿³¸³Ä(ºÃ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Ãÿ‚ëïE5‚K]Z6&Ô ÜÐØÄ ACTOR kµî [7] ͯÄÌÿ‚ëïE5‚K]ZTÃÄÞ6ìíTUVWN56ì íÊÐ~¿ Petri-Net Ó˸Þß¾W­îO€PNӐ/~»YTÄÅ6N56ӂƒôa³j 56Ӑ/~¿N56Žj56Ó˸Õ~QTbcÉÊÐ~6ÜÄÑ{KLTÇÞßPcT°. ~kµîÜó¾ÊÄÅ6bcÉÃÅÅÜÃx©Üó¾¿Å6j56Ó»8lßÿ‚ëïE 5‚K]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ÊÜBBº~Í transition Ó3UÞßħý66CDEF.

(25) 6 itBlock TJBß0º~¿Å6/T T2GÞ» wait: ÓolßÄD‡6CDEFGHŽ 6­GI€‚EÓÝ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! 68pŽPòÍ 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Ç]Õ ~¿ÞŽÞÄ8p6jÔÜÙÄABÑ{ »Ãį°±Éӂƒ}Ƴ45\]TÇÞßÃÄ Ñ{6¯¢Ó¾´Tƒ„Þ»Ñ{kµîT󏳾¿¯°±ÉÍÂi‰&6TԊÊRD‡2 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 Ó­GI€‚ETo¾Ä yes: Ó wait: 6Q“ØToÆÅ ÍÙÐ~¿ 4.4 MessageJoin ghi statementBlock Í MessageJoin ÓTԓŠßĹ j ³Âi,-Ó DinnerBell ÜXYZ [NÕ~ÅÍÊÜð~¿ÅÅÜx©³ÅÍÃÄÿ‚ëïE6ÝpԓŠ6EŽÃÄÕêßÿ‚ëï E5‚K]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. »DY‚GÃÄ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ԓŠ»¾ÖýTJŽlß·ïï 1 wait: ÓolßDY‚GÓ01Õ~¿ DinnerBell ÜÃÄÿ‚ëïE601ÃÄ01%Ê»±Õ ~ Üzi¹º~¿ÕÊ»±Õ~Í wait: ÿª‚1Ê ¬¹ºÄDY‚GT eval! 6ÿ‚ëïE Ê0ºDY‚GÊðDÕ¿ Å6 L]1ÍÕ60T}lß©àÙ / yzGH / Âi class Waiter. [ ]. wait: B. B eval!. — 7: yzGHDY‚GÓ¬Õ~ÿª‚1 6»Y6‚]1KF6GÓ{Æ¿./0ÄÖý Out2 6ÕÊ»±Þ»Ä to: Out2 ;Æÿ‚ ëïEÓø´T0Ø»¾ÍÕ~¿Å6/TÃÄÇ|6}ÆTÄ(6ÿ‚ëïE01Óµ«ÅîH 6ÿ‚ëïE5ï]ÓÀÁ statementBlock TÁWlßÄÝpԓŠ»¾ÖýTJŽlß·ï.

(28) pick! 1 free!. ;Æ5ï]³0ÄRS6 pick! 6 Continuation Ê sender#1 ÜÐØÄ free! 6 Continuation Ê sender#2 ͳ~¿ Continuation 6L4ïX̓„ÃJ£Tæ±¹ºß¾~¿ÅºÃÇTéê ~åæ ÜÃÄÌåæ Ã(6†6ÿª‚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Ç ÞßDY‚GÓ0ØÁB~ÅÍT}ØÄ"6/Tà yes: Ü0º»DY‚GTĔ6/Tà no: Ü0º»DY‚GT eval! Ê0ºßÄ(6DY‚GÊðDÕ¿DY‚G6,6ÖýÍ Continuation ÃıÍ^¹º~ (— 5)¿ •p–9—˜ ÿ‚ëïE5ï]ʈ‰¹º»CDEFGHTÃÄ eval! ;Æÿ‚ëïE5ï]Ê7± ¹º~¿Yï™î³CDEFGHÍÅ6ˆ‰óÓolßÄåæ|ÓéÞ»6ÊÇ6źÓÎ ñÞ».‰6‡ˆ6.ÜÐ~ (— 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ÖýÃÄ(6ƒ„6@ÄÕÊ{ð×/º~ÅÍó¾¿ 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 6DY‚GTÇ]Õ~ Ù6ÜÄDY‚G6,ͱÜÖýÃ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­®³WDY‚GӖRÕ ~ÅÍÊÜð~¿ 4.3.1. ¯°“±. Continuation. ÜÃDY‚Gù j ³³Üo“º~ÊÄRÙWo“º~6ÃQR ÍÞß oÆÅÍAqÆ¿ DinnerBell ÜÃQR Ü¹/Ùÿ‚ëïE5‚K]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ÇÞßÿ‚ëïE5‚K]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 &amp; 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