¼Ò¼³°°ÀºC#  Á¦1°­ÀÇ C#ÀÇ ±âÃÊ  03. ÄÄÆÄÀϰú ½ÇÇà  

 

 

1.3 ÄÄÆÄÀÏ(Compile) °ú ½ÇÇà(Run)

 

´å³Ý ȯ°æ¿¡¼­ ÇÁ·Î±×·¥À» ½ÇÇàÇÑ´Ù´Â Àǹ̴ °øÅë¾ð¾î·±Å¸ÀÓ(CLR)ÀÌ ¡®¾ð¾î¸¦ ¹ø¿ªÇؼ­ ½ÇÇàÇÑ´Ù.¡¯ ¶ó´Â Àǹ̸¦ ´ã°í ÀÖ½À´Ï´Ù. ÀÌ ¸»Àº µÎ °¡ÁöÀÇ Ãø¸é¿¡¼­ »ý°¢ÇØ º¼ ¼ö ÀÖ½À´Ï´Ù. ù¹øÂ°°¡ ½ÇÇàµÉ ¼ö ÀÖµµ·Ï ¸¸µå´Â ÀÏ, µÎ ¹øÂ°°¡ ±×·¸°Ô ¸¸µç °ÍÀ» ½ÇÇà½ÃŰ´Â ÀÏÀÔ´Ï´Ù. ¾à°£ÀÇ ¾î°¨ Â÷À̹ۿ¡´Â ¾ø´Â °Í °°Áö¸¸, ÀÌ µÑÀº ¾ö°ÝÈ÷ ±¸ºÐÇØ¾ß ÇÕ´Ï´Ù. ´ÜÀûÀ¸·Î ¸»Çϸé ÀüÀÚ´Â ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ¼­ ¸¸µé¾îÁö°í, ÈÄÀÚ´Â °øÅë¾ð¾î·±Å¸ÀÓ¿¡ ÀÇÇØ¼­ ÄÄÆÄÀÏ µÈ °ÍÀÌ ·ÎµùµÇ°í ½ÇÇàµÇ¾îÁö´Â °ÍÀ» ¸»ÇÕ´Ï´Ù.

 

¢Ã °øÅë¾ð¾î·±Å¸ÀÓ(CLR)ÀÇ ¿ªÇÒ

q                 ½ÇÇà µÉ ¼ö ÀÖµµ·Ï ¸¸µå´Â ÀÏ(ÄÄÆÄÀÏ·¯)

n                   Áß°£¾ð¾î(IL) ÇüÅ·Π¸¸µç´Ù.

q                 ½ÇÇà µÉ ¼ö ÀÖµµ·Ï ¸¸µç °ÍÀ» ½ÇÇàÇÏ´Â ÀÏ(·±Å¸ÀÓ)

n                   ILÇüÅÂÀÇ ¾ð¾î¸¦ JIT°¡ ÀçÄÄÆÄÀÏ ÇÏ¿© .Net ȯ°æÀÇ CLRÀÌ ½ÇÇà½ÃŲ´Ù.

 

½ÇÇàµÉ ¼ö ÀÖµµ·Ï ¸¸µå´Â ÀÏÀ̶õ CLR¿¡¼­ ÀÌÇØÇÒ ¼ö ÀÖ´Â Áß°£¾ð¾î(Intermediate Language)·Î ¸¸µå´Â ÀÏÀÔ´Ï´Ù. ÀÌ·¸°Ô º¯È¯µÈ Äڵ带 Áß°£¾ð¾î(IL)¶ó°í Çϸç, C#¿¡¼­´Â .exe ÆÄÀÏÀ̳ª .dllÆÄÀÏÀÌ ÀÌ¿¡ ÇØ´çµË´Ï´Ù.

 

¢Ñ C#ÀÇ ¾î¼Àºí¸®

Áß°£¾ð¾î ÇüÅÂÀÇ .exe³ª .dll ÆÄÀϵéÀ» C#¿¡¼­´Â ¾î¼Àºí¸®¶ó°í ¸»ÇÑ´Ù. ÀÌ ¾î¼Àºí¸®´Â ¸ÞŸ µ¥ÀÌÅÍ(Meta Data), ¸Å´ÏÆä½ºÆ®(Manifest) ±×¸®°í ¸®¼Ò½º(Resource)·Î ±¸¼º µÇ¾îÁö¸ç ¸ÞŸ µ¥ÀÌÅʹ Ŭ·¡½ºÀÇ ¸ðµç Á¤º¸¸¦ °¡Áö°í ÀÖÀ¸¸ç ¸Å´ÏÆä½ºÆ®´Â ¾î¼Àºí¸® ÀÚü¿¡ ´ëÇÑ Á¤º¸¸¦ º¸À¯Çϰí ÀÖ´Ù.

 

ÀÌ·± ÇàÀ§¸¦ ÀϹÝÀûÀ¸·Î ¡®ÄÄÆÄÀÏ ÇÑ´Ù¡¯¶ó°í ÇÕ´Ï´Ù. ±× ´ÙÀ½ÀÇ ¡®½ÇÇàÇÑ´Ù¡¯ ¶ó´Â °ÍÀº Áß°£¾ð¾î(IL) ÇüŸ¦ CLR¿¡¼­ ÇØ¼®ÇÏ¿© ½ÇÇà °¡´ÉÇÑ »óÅ·Π¸¸µç ÈÄ ½ÇÇàÇÑ´Ù¶ó´Â ÀǹÌÀÔ´Ï´Ù. Áß°£¾ð¾î·Î ÄÄÆÄÀÏ µÈ ÄÚµå´Â µ¿ÀûÀ¸·Î CLR¿¡ ÀÇÇØ¼­ ·Îµù µÇ¾îÁ®¼­ CLR ³»¿¡¼­ ½ÇÇà µÇ¾îÁý´Ï´Ù. Áß°£¾ð¾î´Â CLR³»ÀÇ JIT(Just In Time Compiler)¿¡ ÀÇÇØ¼­ ¿Ïº®ÇÑ ½ÇÇàÆÄÀÏ·Î Àç ÄÄÆÄÀÏ µÈ ÈÄ ½ÇÇà µË´Ï´Ù. ÀÌ·¯ÇÑ ÀÏÀ» ÀüÀûÀ¸·Î ´ã´çÇÏ´Â °ÍÀÌ .Netȯ°æÀÇ CLRÀÔ´Ï´Ù.

 

¢Ã ½ÇÇàµÉ ¼ö ÀÖµµ·Ï ¸¸µå´Â °Í°ú ½ÇÇàÇÏ´Â °Í

q                 ½ÇÇà µÉ ¼ö ÀÖµµ·Ï ¸¸µå´Â ÀÏ

n                   Source è Compiler è MSIL(Microsoft Intermediate Language)

q                 ½ÇÇà µÉ ¼ö ÀÖµµ·Ï ¸¸µç °ÍÀ» ½ÇÇàÇÏ´Â ÀÏ

n                   Áß°£¾ð¾î(IL) è JIT ÄÄÆÄÀÏ è¿ø½Ã±â°è¾î è ½ÇÇà

 

ÀÌ¿Í °°ÀÌ ´å³Ý¿¡¼­´Â ÇÁ·Î±×·¥ÀÌ Ç÷§Æû¿¡ µ¶¸³ÀûÀ¸·Î ½ÇÇàµÉ ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­, ´å³Ý ÇÁ·¹ÀÓ¿÷À̶ó´Â µ¶ÀÚÀûÀΠȯ°æÀ» Á¦°øÇÕ´Ï´Ù. ±×¸®°í ÀÌ È¯°æ¿¡¼­ ½ÇÇà °¡´ÉÇÑ »óÅÂÀÇ Áß°£¾ð¾î(IL)ÇüÅ·θ¸ µÇ¾î ÀÖ´Ù¸é CLR¿¡¼­´Â ÀÌ Áß°£¾ð¾î(IL)¸¦ ¹ø¿ªÇؼ­ ½ÇÇàÇÏ°Ô µÇ´Â °ÍÀÔ´Ï´Ù. Áï ¾î¶°ÇÑ ¾ð¾î·Î ÀÛ¼ºµÇµç »ó°ü¾øÀÌ Áß°£¾ð¾î·Î µÇ¾î ÀÖ´Ù¸é °øÅë¾ð¾î·±Å¸ÀÓ(CLR)ÀÌ µ¿ÀÛ½Ãų ¼ö ÀÖ½À´Ï´Ù.

 

±×·¯³ª ¸ðµç ¾ð¾îµéÀÌ ´Ù Áß°£¾ð¾î·Î º¯È¯ÀÌ °¡´ÉÇÑ °ÍÀº ¾Æ´Õ´Ï´Ù. º¯È¯ÀÌ °¡´ÉÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇϱâ À§Çؼ­´Â ÁöÄÑÁ®¾ß ÇÒ ÃÖ¼ÒÇÑÀÇ ±ÔÄ¢ÀÌ ÀÖ½À´Ï´Ù. ÀÌ ±ÔÄ¢À» ¸ð¾Æ ³õÀº °ÍÀÌ À§¿¡¼­ ¾ð±ÞÇÑ °øÅë¾ð¾î±â¼ú¼­(Class Language Specification: CLS)ÀÔ´Ï´Ù.

 

¾Õ¿¡¼­ »ìÆìº» IL, JIT ±×¸®°í CLRÀº »ç½Ç .Net ÇÁ·¹ÀÓ¿÷ÀÌ ÀÚµ¿À¸·Î °ü¸®¸¦ ÇØ Áֱ⠶§¹®¿¡ »ç¿ëÀÚ°¡ Á÷Á¢ ÇÚµéÇÒ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ´ÜÁö °³³äÀûÀ¸·Î ±×·¸°Ô ¼öÇà µÇ¾îÁø´Ù´Â °ÍÀÔ´Ï´Ù. °øÅë¾ð¾î·±Å¸ÀÓÀº ´å³Ý ÀÚü¿¡¼­ ¸Å¿ì Áß¿äÇÑ ¿ªÇÒÀ» ´ã´çÇϰí ÀÖÀ¸¹Ç·Î ±× ±¸¼º ¿ä¼ÒµéÀº ¿ë¾îÀûÀÎ Â÷¿ø¿¡¼­ Çѹø º¸°í ³Ñ¾î°¡½Ã±â ¹Ù¶ø´Ï´Ù.

 

±¸¼º ¿ä¼Ò

¿ªÇÒ

Class Loader

Ŭ·¡½º¸¦ ·ÎµùÇÏ°í ¸ÞŸµ¥ÀÌÅÍ(Metadata)¸¦ °ü¸®ÇÑ´Ù.

IL to Native Compiler

JIT ÄÄÆÄÀÏ·¯¿¡ ÇØ´çÇϰí, Áß°£¾ð¾î(IL)¸¦ ¿ø½ÃÄÚµå(Native Code)·Î ÄÄÆÄÀÏÇÑ´Ù.

Code Manager

ÄÚµå ½ÇÇàÀ» °ü¸®

Garbage Collector

¸ðµç °³Ã¼ÀÇ ¶óÀÌÇÁŸÀÓÀ» ÀÚµ¿À¸·Î °ü¸®

Security Engine

ÄÚµåÀÇ º¸¿ÏÀ» ´ã´ç

Debug Engine

ÄÚµåÀÇ ½ÇÇà ÃßÀû°ú ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ µð¹ö±×¸¦ ¼öÇà

Type Checker

Type ¾ÈÁ¤¼ºÀ» ´ã´çÇÔ. ºÒ¿ÏÀüÇÑ Type ij½ºÆÃ, ÃʱâÈ­ÇÏÁö ¾ÊÀº º¯¼öÀÇ »ç¿ëÀ» ¸·À½

Exception Manager

¿¹¿Ü 󸮸¦ ´ã´ç 

COM Marshaler

COM°ú ¸¶¼£¸µÀ» Á¦°ø

Base Class Library Support

ÄÚµå¿Í ±âº» ¶óÀ̺귯¸®¸¦ Á¦°øÇÏ´Â ·±Å¸ÀÓÀ» ÅëÇÕ

Ç¥ 1-1 °øÅë¾ð¾î·±Å¸ÀÓÀÇ ±¸¼º ¿ä¼Ò¿Í ¿ªÇÒ

 

°øÅë¾ð¾î·±Å¸ÀÓ(CLR)Àº À§¿Í °°Àº ±¸¼º ¿ä¼ÒµéÀÌ Áö¿øÇÏ´Â ´Ù¾çÇÑ ±â´ÉÀ» °¡Áö°í Àֱ⠶§¹®¿¡, ´Ù¾çÇÑ ¾ð¾îµéÀ» ÅëÇÕÇØ¼­ »ç¿ëÇÒ ¼ö ÀÖ°Ô µÇ¾ú°í, ¿î¿µ üÁ¦¿¡ »ó°ü¾øÀÌ °øÅë¾ð¾î·±Å¸ÀÓÀÌ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é ¾î¶°ÇÑ Ç÷§Æû¿¡¼­µµ ½ÇÇàÀÌ °¡´ÉÇÏ°Ô µÈ °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸ Áö±ÝÀº À©µµÀ§Áî¿ë CLR¸¸ÀÌ °³¹ßµÇ¾î ÀÖ°í ´Ù¸¥ ¿î¿µÃ¼Á¦¿ë CLRÀº °³¹ßÁß¿¡ ÀÖ´Ù°í ÇÕ´Ï´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºC# Á¦1°­ÀÇ
ÀúÀÚ:ÃÖ¿µ°ü