|
Orca´Â loosely coupled ºÐ»ê ½Ã½ºÅÛ¿¡¼ µ¹¾Æ°¡´Â º´·ÄÇÁ·Î±×·¥À» ±¸ÇöÇϱâÀ§ÇÑ ¾ð¾î·Î ³×µ¨¶õµåÀÇ Vrije ´ëÇÐÀÇ Henri E. Bal ÀÌ ÁÖÃàÀÌ µÇ¾î 1986³âºÎÅÍ °³¹ßµÇ°í ÀÖ´Ù. Orca°¡ °³¹ßµÈ µ¿±â´Â ºÐ»ê ½Ã½ºÅÛ±â¹Ý¿¡¼ ±âÁ¸ÀÇ ¸Þ¼¼Áö Àü´Þ ¹æ½ÄÀ¸·Î
È®ÀåµÈ ¼øÂ÷ó¸® ±â¹ÝÀÇ ¾ð¾î¸¦ °¡Áö°í º´·ÄÇÁ·Î±×·¥À» ¸¸µå´Âµ¥ ¹ß»ýÇÏ´Â ¹®Á¦Á¡µéÀ»
±Øº¹Çϱâ À§ÇÑ °ÍÀ̸ç, Orca´Â ½Ã½ºÅÛ ÇÁ·Î±×·¡¹ÖÀ» À§ÇÑ °ÍÀÌ ¾Æ´Ï¶ó ºÐ»ê
ÀÀ¿ë ÇÁ·Î±×·¡¹ÖÀ» À§ÇØ ¿¬±¸µÇ°í °³¹ßµÇ¾î ¿Ô´Ù.
1 ºÐ»ê °øÀ¯ ¸Þ¸ð¸®(Distributed Shared Memory) ´ëºÎºÐÀÇ ºÐ»ê ÇÁ·Î±×·¡¹ÖÀº ¸Þ¼¼Áö Àü´Þ ¹æ½Ä¿¡ ÀÇÁ¸Çϰí ÀÖ´Ù. ±â¹Ý Çϵå¿þ¾î°¡
¸Þ¼¼Áö Àü´ÞÀ» ÀÌ¹Ì Áö¿øÇϱ⠶§¹®¿¡ ÀÌ·¯ÇÑ ¼±ÅÃÀº ¸Å¿ì ÀÚ¿¬½º·¯¿î °ÍÀÌ´Ù.
±×·¯³ª ¸ðµç °æ¿ì¿¡ ÀÖ¾î¼ ÀÌ ¹æ¹ýÀÌ È¿°úÀûÀÏ ¼ö´Â ¾ø´Ù. ¿©·¯ ÇÁ·Î¼¼½º°¡
±¤¿ªÀÇ »óÅ Á¤º¸¸¦ °øÀ¯ÇÏ¿© Åë½ÅÀ» ÇÏ´Â °æ¿ì¿¡´Â ¸Þ¼¼Áö Àü´Þ ¹æ¹ýÀÌ ÀûÀýÇÏÁö
¾Ê´Ù.
ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ ¼·Î ´Ù¸¥ ½Ã½ºÅÛ°£¿¡ µû·Î Á¸ÀçÇÏ´Â ¹°¸®ÀûÀÎ ¸Þ¸ð¸®¸¦ ÇÁ·Î±×·¡¸Ó¿¡°Ô´Â ³í¸®ÀûÀ¸·Î ÇϳªÀÇ °øÀ¯µÈ ¸Þ¸ð¸®·Î º¸ÀÌ°Ô ÇÏ´Â ¿¬±¸°¡ ÁøÇàµÇ¾î ¿ÔÀ¸¸ç À̸¦ ºÐ»ê °øÀ¯ ¸Þ¸ð¸®(Distributed shared memory)¶ó ºÎ¸¥´Ù. °øÀ¯ ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â ´ÙÁß ÇÁ·Î¼¼¼ ½Ã½ºÅÛ¿¡¼´Â °øÀ¯ µ¥ÀÌÅÍ ±¸Á¶°¡ °øÀ¯ ¸Þ¸ð¸®¿¡ ÀúÀåµÇ¸ç ÀúÀåµÇ¾î ÀÖ´Â µ¥ÀÌÅ͸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀº ±âº»ÀûÀ¸·Î Áö¿ª ¸Þ¸ð¸®¸¦ Á¢±ÙÇÏ´Â °Í°ú µ¿ÀÏÇÏ´Ù. ÇÑ ÇÁ·Î¼¼½º°¡ °øÀ¯ µ¥ÀÌÅÍÀÇ ÇÑ ºÎºÐÀ» ¹Ù²Ù·Á°í Çϰí ÀÌ ¶§ ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ÀÌ °øÀ¯ µ¥ÀÌÅÍ ±¸Á¶¿¡ ¾î¶°ÇÑ Á¢±Ùµµ ÇÏÁö ¾Ê°Ô Çϱâ À§Çؼ ÀÌ·¯ÇÑ ½Ã½ºÅÛÀÇ °æ¿ì¿¡´Â ±× ºÎºÐ¿¡ ´ëÇÏ¿© "Àá±Ý(lock)"À» ÇÏ´Â ¸ÞÄ¿´ÏÁòÀ» °¡Áø´Ù. ÀϹÝÀûÀ¸·Î Áö¿ª ¸Þ¸ð¸®¿¡ Á¢±ÙÇÏ´Â °Íº¸´Ù ÀÌ·¯ÇÑ °øÀ¯ ¸Þ¸ð¸®¿¡ Á¢±ÙÇÏ´Â °ÍÀÌ ´õ ¸¹Àº ¿À¹öÇìµå¸¦ ¹ß»ý½ÃŲ´Ù. ºÐ»ê ½Ã½ºÅÛ¿¡¼´Â °¢ ½Ã½ºÅÛÀÌ ÀÚ½ÅÀÇ Áö¿ª ¸Þ¸ð¸®¸¦ °¡Áö°í Àֱ⠶§¹®¿¡ °øÀ¯ ¸Þ¸ð¸® ´ÙÁß ÇÁ·Î¼¼¼ ½Ã½ºÅÛ¿¡¼¿Í´Â ´Þ¸® ¸Þ¸ð¸® Á¢±Ù¿¡ ´ëÇÑ ¿À¹öÇìµå°¡ ÇÊ¿äÇÑ µ¥ÀÌÅÍÀÇ À§Ä¡¿¡ ÀÇÁ¸ÇÑ´Ù. ºÐ»ê ½Ã½ºÅÛ¿¡ °øÀ¯ ¸Þ¸ð¸®¸¦ ±¸ÇöÇϱâ À§Çؼ °øÀ¯ ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â ´ÙÁß ÇÁ·Î¼¼¼ ½Ã½ºÅÛó·³ °øÀ¯ µ¥ÀÌÅÍ¿¡ ´ëÇÏ¿© ¾²°í, Àаí, Àá±ÝÇÏ´Â Àú ¼öÁØÀÇ ¸í·É¾î¸¦ ¾ð¾îÂ÷¿ø¿¡¼ Áö¿øÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ±×·¯³ª Orca¿¡¼´Â ÀÌ¿¡ ´ëÇÑ ÇØ°áÃ¥À¸·Î °øÀ¯ µ¥ÀÌÅÍ ±¸Á¶¸¦ "µ¥ÀÌÅÍ °´Ã¼(data-object)"¶ó´Â °÷¿¡ encapsulateÇÑ´Ù. µ¥ÀÌÅÍ °´Ã¼¿¡ encapsulateµÈ °øÀ¯ µ¥ÀÌÅÍ´Â »ç¿ëÀÚ°¡ Á¤ÀÇÇÑ ¿¬»ê¿¡ ÀÇÇØ¼
°ü¸®µÈ´Ù. Orca¿¡¼ »ç¿ëÇÏ´Â µ¥ÀÌÅÍ °´Ã¼´Â Ãß»óÈ µ¥ÀÌÅÍ Çü(abstract
data type)ÀÇ ÀνºÅϽº·Î º¼ ¼ö ÀÖ´Ù.
2 ÇÁ·Î¼¼½º
ÄÄÆÄÀÏ·¯°¡ º´·Ä¼ºÀ» È¿À²ÀûÀ¸·Î ¸¸µé¾î ÁÙ ¼ö ¾ø±â ¶§¹®¿¡ Orca¿¡¼´Â ¸í½ÃÀûÀ¸·Î º´·Ä¼ºÀ» ±¸ÇöÇÑ´Ù. Áï, Orca¿¡¼´Â ¼øÂ÷ ÇÁ·Î¼¼½º¸¦ ¸í½ÃÀûÀ¸·Î »ý¼ºÇÔÀ¸·Î½á º´·Ä¼ºÀ» ±¸ÇöÇϰí ÀÖ´Ù. Orca ¾ð¾î·Î ¸¸µé¾îÁø ÇÁ·Î±×·¥ÀÌ Ã³À½ ½ÃÀÛÇϸé ÇϳªÀÇ ÇÁ·Î¼¼½º¸¸ ½ÇÇàÀÌ µÈ´Ù. ±×·¯³ª »õ·Î¿î ÇÁ·Î¼¼½º¸¦ fork statement¸¦ »ç¿ëÇØ¼ ¸í½ÃÀûÀ¸·Î »ý¼ºÇÑ´Ù. fork name(actual parameters) [ on (cpu-number)]; À§ÀÇ ¹®ÀåÀº »õ·Î¿î anonymous ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ »ý¼º½ÃŲ´Ù. fork ¹®ÀåÀº on ¿¹¾à¾î¸¦ »ç¿ëÇÒ ¼ö Àִµ¥, on À» »ç¿ëÇÏ¿© cpu¸¦ ÁöÁ¤Çϸé ÀÚ½Ä ÇÁ·Î¼¼½º´Â ÁöÁ¤ÇÑ ÇÁ·Î¼¼¼¿¡ »ý¼ºµÈ´Ù. onÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸é ÀÚ½Ä ÇÁ·Î¼¼½º´Â °°Àº ÇÁ·Î¼¼¼¿¡ »ý¼ºÀÌ µÈ´Ù. »ç¿ë°¡´ÉÇÑ cpu´Â NCPUS standard functionÀ» ÅëÇØ¼ ¾Ë¼ö ÀÖ´Ù. ÇÁ·Î¼¼½º´Â input°ú sharedÀÇ µÎ °¡Áö Á¾·ùÀÇ ÆÄ¶ó¹ÌÅ͸¦ °¡Áú ¼ö ÀÖ´Ù. input ÆÄ¶ó¹ÌÅͷδ ¾î¶² Á¾·ùÀÇ µ¥ÀÌÅÍ ±¸Á¶µµ °¡Áú ¼ö ÀÖÀ¸¸ç ÇÁ·Î¼¼½º´Â ÀÌ ÆÄ¶ó¹ÌÅÍÀÇ º¹»çº»À» °¡Áö°Ô µÈ´Ù. ºÎ¸ð ÇÁ·Î¼¼½º´Â ÀÚ½Ä ÇÁ·Î¼¼½º¿¡°Ô °øÀ¯ ÆÄ¶ó¹ÌÅÍ·Î½á µ¥ÀÌÅÍ °´Ã¼¸¦ ³Ñ°Ü ÁÙ ¼ö ÀÖ´Ù. ÀÌ °æ¿ì¿¡´Â ºÎ¸ð¿Í ÀÚ½Ä ÇÁ·Î¼¼½º°¡ µ¥ÀÌÅÍ °´Ã¼¸¦ °øÀ¯Çϸç ÀÌ °øÀ¯ °´Ã¼¸¦ ÅëÇØ¼ ¼·Î Åë½ÅÀ» ÇÏ°Ô µÈ´Ù. ¿¹¸¦ µé¾î child ¶ó´Â ÇÁ·Î¼¼½º°¡ ´ÙÀ½Ã³·³ ¼±¾ðµÇ¾ú´Ù°í °¡Á¤ÇÏÀÚ. process child(Id: integer; X: shared AnObjectType); begin ... end; ±×·¯¸é »õ·Î¿î child ÇÁ·Î¼¼½º´Â ´ÙÀ½°ú °°ÀÌ »ý¼ºµÇ¾î Áú ¼ö ÀÖ´Ù. MyObj: AnObjectType; # °´Ã¼ ¼±¾ð
ÀÚ½Ä ÇÁ·Î¼¼½º´Â °øÀ¯ °´Ã¼¸¦ ÀÌ¿Í °°Àº ¹æ½ÄÀ¸·Î ÀÚ½ÅÀÇ ÀÚ½Ä ÇÁ·Î¼¼½º¿¡°Ô
³Ñ°ÜÁÙ ¼ö ÀÖÀ¸¸ç, ±× ÀÚ½Ä ÇÁ·Î¼¼½º´Â ¶Ç ´Ù½Ã ÀÚ½ÅÀÇ ÀÚ½Ä ÇÁ·Î¼¼½º¿¡°Ô °°Àº
°øÀ¯ °´Ã¼¸¦ ³Ñ°Ü ÁÙ ¼ö ÀÖ´Ù. ÀÌ·± ½ÄÀ¸·Î µ¥ÀÌÅÍ °´Ã¼°¡ °øÀ¯ µÇ´Â °ÍÀÌ´Ù.
¸¸¾à °øÀ¯ °´Ã¼¸¦ °øÀ¯Çϰí ÀÖ´Â ÇÁ·Î¼¼½º Áß¿¡ ¾î´À ÇÑ ÇÁ·Î¼¼½º°¡ ÀÌ °øÀ¯
°´Ã¼ÀÇ ¿¬»êÀ» °¡ÇÏ¸é ´Ù¸¥ ¸ðµç ÇÁ·Î¼¼½ºµéµµ °°Àº È¿°ú¸¦ º¸°Ô µÈ´Ù. ÀÌ´Â
¸¶Ä¡ ±× °´Ã¼°¡ ÇϳªÀÇ °øÀ¯ ¸Þ¸ð¸®¿¡ ÀÖ¾î¼ Àá±è¿¡ ÀÇÇØ º¸È£ ¹Þ´Â µíÀÌ º¸À̰Ô
µÇ´Â °ÍÀÌ´Ù.
3 °øÀ¯ µ¥ÀÌÅÍ °´Ã¼¿Í Ãß»óÈ µ¥ÀÌÅÍ Çü(Shared data-objects and abstract data types) °øÀ¯ µ¥ÀÌÅÍ °´Ã¼´Â Ãß»óÈ µ¥ÀÌÅÍ °´Ã¼(°´Ã¼ Çü)ÀÇ ÀνºÅϽºÀÌ´Ù. Orca¿¡¼ Ãß»óÈ µ¥ÀÌÅÍ ÇüÀÇ Á¤ÀÇ´Â »ó¼¼(specification)ºÎºÐ°ú ±¸Çö(implementation)ºÎºÐÀÇ µÎ ´Ü°è·Î ÀÌ·ç¾îÁø´Ù. »ó¼¼ ºÎºÐ object specification IntObject;
±¸Çö ºÎºÐ object specification IntObject;
operation Value(): integer;
operation Assign(v: integer);
ÀÏ´Ü °´Ã¼ Çü(object type)ÀÌ Á¤ÀǵǸé, Á¤ÀÇµÈ ÇüÀÇ ÀνºÅϽº´Â ´ÙÀ½°ú °°ÀÌ »ý¼ºµÇ°í »ç¿ëµÈ´Ù. X: IntObject;
X$Assign(3);
# 3À» X¿¡ ÇÒ´ç
°´Ã¼°¡ »ý¼ºµÇ¸é ±× °´Ã¼ÀÇ Áö¿ª º¯¼ö¿¡ ´ëÇÑ ¸Þ¸ð¸®°¡ ÇÒ´çµÇ°í ÃʱâÈ Äڵ尡 ½ÇÇàµÈ´Ù. Orca´Â ÇϳªÀÇ Ãß»óÈ µ¥ÀÌÅÍ ÇüÀ» Áö¿øÇÑ´Ù. ´Ù½Ã ¸»Çؼ ¶È °°Àº Ãß»óÈ ÇüÀ» °¡Áö°í Áö¿ª °´Ã¼(local object)¿Í °øÀ¯ °´Ã¼¸¦ »ý¼ºÇÑ´Ù. ÀÌ Á¤º¸´Â °´Ã¼ ¼±¾ð ¶Ç´Â °´Ã¼ Çü ¼±¾ð ½Ã¿¡ ÁÖ¾îÁöÁö ¾Ê°í, fork ¹®ÀåÀ» ÀÌ¿ëÇØ¼ »õ·Î¿î ÇÁ·Î¼¼½º »ý¼º½Ã °øÀ¯ ÆÄ¶ó¹ÌÅÍ·Î Àü´ÞµÇ´Â °´Ã¼´Â °øÀ¯ °´Ã¼·Î »ç¿ëµÇ°í ±×·¸Áö ¾ÊÀº °´Ã¼´Â Áö¿ª °´Ã¼·Î »ç¿ëµÈ´Ù. ¹°¸®ÀûÀÎ Çϵå¿þ¾î ºÐ»êÀ» °¨Ãß°í °øÀ¯ µ¥ÀÌÅ͸¦ È¿°úÀûÀ¸·Î ½Ã¹Ä·¹À̼ÇÇϱâ
À§Çؼ Orca¿¡¼´Â º¹»ç(replication)¿Í ¾ÈÁ¤µÈ ºê·ÎµåÄɽºÆÃreliable broadcasting)¿¡
±â¹ÝÇÑ ±¸ÇöÀ» Çϰí ÀÖ´Ù. °¢ ÇÁ·Î¼¼¼´Â °¢ °øÀ¯ °´Ã¼ÀÇ º¹»çº»À» °¡Áø´Ù.
ÀÌ °øÀ¯ °´Ã¼¿¡ ´ëÇØ¼ ¾Æ¹«·± º¯È¸¦ ÁÖÁö¾Ê´Â ¿¬»ê(read ¿¬»ê)Àº Áö¿ª¿¡ º¹»çµÇ¾î
ÀÖ´Â °øÀ¯ °´Ã¼ÀÇ µ¥ÀÌÅ͸¦ Á÷Á¢ »ç¿ëÇϰí, ÀÌ °øÀ¯ °´Ã¼¿¡ º¯È¸¦ °¡ÇÏ´Â
¿¬»ê(write ¿¬»ê)Àº º¯ÈµÈ »õ·Î¿î °ªÀ» ´Ù¸¥ ¸ðµç ÇÁ·Î¼¼¼¿¡°Ô ºê·ÎµåÄɽºÆÃ
ÇÏ´Â ¹æ¹ýÀ¸·Î °øÀ¯ °´Ã¼¸¦ ¾÷µ¥ÀÌÆ® ÇÑ´Ù.
4 µ¿±âÈ(Synchronization) Orca¿¡¼ÀÇ Ãß»óÈ µ¥ÀÌÅÍ ÇüÀº Áö¿ª °´Ã¼»Ó¸¸ ¾Æ´Ï¶ó °øÀ¯ °´Ã¼¸¦ »ý¼ºÇϴµ¥
¸ðµÎ »ç¿ëµÉ ¼ö ÀÖ´Ù. °øÀ¯ µ¥ÀÌÅÍ °´Ã¼ »ý¼ºÀÇ °æ¿ì´Â µ¿±âÈÀÇ ¹®Á¦°¡
¹ß»ýÇÏ¸ç µÎ °¡Áö Á¾·ùÀÇ µ¿±âȰ¡ ÀÖ´Ù.
4.1 »óÈ£ ¹èŸ µ¿±âÈ(Mutual exclusion synchronization) »óÈ£ ¹èŸ µ¿±âÈ´Â °´Ã¼¿¡ ´ëÇÑ ¸ðµç ¿¬»êÀ» ³ª´©Áö ¾Ê°í ½ÇÇàÇÔÀ¸·Î½á
³»Æ÷ÀûÀ¸·Î ÀÌ·ç¾î Áø´Ù. °³³äÀûÀ¸·Î °¢ ¿¬»êÀº ÀÌ ¿¬»êÀÌ Àû¿ëµÇ´Â ¸ðµç °´Ã¼¿¡
´ëÇÏ¿© Àá±Ý(lock)À» Çϰí, ±× ÈÄ¿¡ ÇØ´ç ÀÏÀ» ÇÑ´Ù. ÇØ´ç ÀÏÀÌ ¸ðµÎ
³¡³ ÈÄ¿¡´Â Àá±ÝÀ» ÇØÁ¦ ÇÑ´Ù. ¶ÇÇÑ ÀÌ ¸ðµ¨ÀÌ Áö¿øÇÏ´Â »óÈ£ ¹èŸ µ¿±âÈ´Â
serializabilityÀ» º¸ÀåÇÑ´Ù. Áï, µÎ °³ÀÇ ¿¬»êÀÌ µ¿½Ã¿¡ °°Àº °øÀ¯ °´Ã¼¿¡
Á¢±ÙÇÏ¸é °á°úÀûÀ¸·Î´Â ÇϳªÀÇ ¿¬»êÀÌ ´Ù¸¥ ¿¬»êÀÇ ´ÙÀ½¿¡ Àû¿ëµÇ´Â °Í°ú
°°Àº °ÍÀÌ µÈ´Ù. ±×·¯³ª, ¿¬»ê¿¡ ´ëÇÑ ¼ø¼´Â »çÀü¿¡ °áÁ¤µÇ¾îÁöÁö ¾Ê´Â´Ù
4.2 Á¶°Ç µ¿±âÈ(Conditional synchronization) Á¶°Ç µ¿±âÈÀÇ °æ¿ì´Â ¾î¶² ƯÁ¤ Á¶°ÇÀÌ ¸¸Á·µÉ ¶§±îÁö ¸ðµç ÇÁ·Î¼¼½º°¡ ´ë±âÇÑ´Ù. ÀÌ ¸ðµ¨¿¡¼´Â Á¶°Ç µ¿±âÈ´Â ¿¬»êµé¿¡ Àá±ÝÀ» Çã¿ëÇÔÀ¸·Î½á ¿¬»êÀÇ ¼öÇà°ú °áÇյǾî ÀÖ´Ù. operation op(formal parameters): ResultType;
Á¶°ÇÀº boolean À̸ç guard·Î ºÒ¸°´Ù. À§ÀÇ ¿¬»êÀº guard Áß¿¡ Çϳª°¡
ÂüÀÌ µÉ ¶§±îÁö Àá±èµÈ´Ù. Çϳª°¡ ¼±ÅÃµÇ¸é ±× ±¸¹®ÀÌ ½ÇÇàµÇ´Â °ÍÀÌ´Ù.
5 °èÃþÀû °´Ã¼(Hierarchical objects) Ãß»óÈ µ¥ÀÌÅÍ ÇüÀº °£´ÜÇÏ°Ô ¾ð¾î°¡ »õ·Î¿î ÇüÀ» °®µµ·Ï È®ÀåÇÒ ¼ö ÀÖ´Ù. »õ·Î¿î ÇüÀ» ±¸ÃàÇÏ´Â ¹æ¹ýÀº »õ·Î¿î µ¥ÀÌÅÍ ÇüÀ» ¸¸µå´Âµ¥ ±âÁ¸ÀÇ Ãß»óÈ µ¥ÀÌÅÍ ÇüÀ» ÀÌ¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ °èÃþÀûÀÌ´Ù. µû¶ó¼, ÇÑ °´Ã¼ÀÇ ³»ºÎ µ¥ÀÌÅÍ´Â ±× ÀÚü°¡ °´Ã¼¶ó°í º¼ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ÀÌ·¯ÇÑ °èÃþ±¸Á¶°¡ °´Ã¼ÁöÇâ ¾ð¾î¿¡¼Ã³·³ Çϳª°¡ ´Ù¸¥ Çϳª¸¦ »ó¼ÓÇÑ´Ù´Â °ÍÀº ¾Æ´Ï´Ù. »õ·Î¿î µ¥ÀÌÅÍ °´Ã¼¿Í ¿¹ÀüÀÇ µ¥ÀÌÅÍ °´Ã¼ »çÀÌ¿¡´Â »ó¼ÓÀÇ °ü°è°¡ ¾Æ´Ñ ¡°»ç¿ë¡±ÀÇ °ü°è¸¦ °¡Áø´Ù. ÀÌ·¯ÇÑ °´Ã¼ÀÇ nestingÀº ½ÇÀç·Î µðÀÚÀÎÀ» ¾î·Æ°Ô ¸¸µå´Â ¹®Á¦¸¦ ³»Æ÷Çϰí ÀÖ´Ù. ¾Æ·¡¿Í °°ÀÌ OldTypeÀ̶ó´Â ±âÁ¸ÀÇ °´Ã¼°¡ ÀÖ´Ù°í ÇÏÀÚ. object specification OldType;
OldTypeÀº ´Ù¸¥ ÇüÀ» ±¸ÇöÇϴµ¥ »ç¿ëµÇ¾î Áú ¼ö ÀÖ´Ù. object implementation NewType;
À§ÀÇ Äڵ忡¼ »õ·Î¿î ÇüÀÇ °´Ã¼´Â OldTypeÇüÀÇ NestedObject¸¦ Æ÷ÇÔÇϰí
ÀÖ´Ù. ÈÄÀÚÀÇ °´Ã¼¸¦ nested °´Ã¼¶ó ºÎ¸£´Â ÀÌÀ¯´Â ÀÌ °´Ã¼°¡ ´Ù¸¥ °´Ã¼ÀÇ
ÀϺκÐÀ̱⠶§¹®ÀÌ´Ù.
6. ¼º ´É(Performance)* Orca¾ð¾îÀÇ ¼º´ÉÀ» ¾Ë¾Æº¸±â À§ÇÏ¿© º´·Ä branch-and-bound ¾Ë°í¸®ÁòÀ¸·Î ±¸ÇöµÈ traveling saleman problem(TSP)À» °¡Áö°í Å×½ºÆ®ÇØ º¸¾Ò´Ù. [±×¸² 1]Àº »ç¿ëµÈ ¾Ë°í¸®ÁòÀ» º¸¿©ÁØ´Ù. ÇÁ·Î±×·¥ÀÌ ½ÃÀÛµÇ¸é ¸ÕÀú Manager ÇÁ·Î¼¼½º°¡ ÇϳªÀÇ ÇÁ·Î¼¼¼¿¡¼ ±¸µ¿µÈ´Ù.
±× ÈÄ ManagerÇÁ·Î¼¼½º´Â Ãʱâȸ¦ À§ÇÏ¿© JobQueue °øÀ¯ °´Ã¼¿Í Minimum °øÀ¯
°´Ã¼¸¦ ¸¸µé°í, ÀÏÀ» ÇÒ Worker ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ ´Ù¸¥ ÇÁ·Î¼¼¼À§¿¡ Çϳª¾¿
±¸µ¿µÇµµ·Ï »ý¼ºÇÑ´Ù. ÃʱâȰ¡ ³¡³ª¸é ManagerÇÁ·Î¼¼½º´Â JobQueue °øÀ¯
°´Ã¼¿¡ JobÀ» Çϳª¾¿ Áý¾î ³Ö´Â´Ù. JobQueue °øÀ¯ °´Ã¼¿¡ µé¾î°¡´Â JobÀº °¢
µµ½Ã¸¦ À̾îÁÖ´Â ÀÓÀÇÀÇ °æ·ÎÀÌ´Ù. ±×·¯³ª Àüü µµ½Ã°¡ ´Ù ¿¬°áµÇ¾î ÀÖÁö´Â
¾Ê°í ÀϺÎÀÇ µµ½Ã¸¸ À̾îÁ® ÀÖ´Â JobÀÌ´Ù. °¢ Worker ÇÁ·Î¼¼½º´Â JobQueue °øÀ¯
°´Ã¼¿¡ µé¾îÀÖ´Â JobÀ» °¡Á®´Ù°¡ ÀÌ JobÀ» ±âÁØÀ¸·Î »ý¼º°¡´ÉÇÑ ¸ðµç °æ·Î¸¦
¸¸µé¾î Minimun °øÀ¯ °´Ã¼¿¡ µé¾î ÀÖ´Â ÇöÀç±îÁöÀÇ ÃÖ¼Ò °æ·Î¿Í ºñ±³Çغ»´Ù.
ºñ±³ °á°ú ´õ ªÀº °æ·Î¸é Minimun °øÀ¯ °´Ã¼¿¡ µé¾î ÀÖ´Â °æ·Î¸¦ ¾÷µ¥ÀÌÆ®
½ÃŰ°í ±×·¸Áö ¾ÊÀ¸¸é ´Ù½Ã ´Ù¸¥ JobÀ» JobQueue °øÀ¯ °´Ã¼·Î ºÎÅÍ ²¨³»¿Í °°Àº
ÀÛ¾÷À» ¹Ýº¹ÇÑ´Ù.
ÀÌ ½ÇÇèÀÌ ½ÃÇàµÈ ȯ°æÀº 10Mbit/s EthernetÀ¸·Î ¿¬°áµÇ¾î 16
°³ÀÇ MC68030 cpu(16MHz) ·Î ÀÌ·ç¾îÁø ºÐ»ê ½Ã½ºÅÛÀÌ¸ç ±× °á°ú´Â ´ÙÀ½ ±×¸²¿¡
³ªÅ¸³ª ÀÖ´Â ±×·¡ÇÁ¿Í °°´Ù.
*Bal. H.E., Kaashoek, M.F., and Tanenbaum A.S.: "Orca: A Language for
Parallel Programming of Distributed Systems", IEEE Transactions on Software
Engineering, vol. 18, No. 3, March 1992, pp. 190-205 (Copyright (c) 1992
by IEEE).
|