´å³Ý ȯ°æ¿¡¼ ÇÁ·Î±×·¥À» ½ÇÇàÇÑ´Ù´Â Àǹ̴ °øÅë¾ð¾î·±Å¸ÀÓ(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°ÀÇ ÀúÀÚ:ÃÖ¿µ°ü |