http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=2034 [º¹»ç]
À̹ø ÀåÀº ¸Þ¸ð¸® ¿µ¿ª¿¡ ´ëÇؼ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.
¸Þ¸ð¸® ¿µ¿ªÀº 1Àå¿¡¼ ¼³¸íÇÑ linker command file¿¡ ÀÇÇؼ ¼³Á¤µÈ´Ù.
°³¹ßÀÚ´Â
- ÇöÀç ½ÇÇà ÆÄÀÏÀÌ ±¸µ¿µÉ systemÀÇ ¹°¸®ÀûÀÎ memory´Â ¾î¶»°Ô ±¸¼ºµÇ¾î ÀÖ´ÂÁö
- BuildµÉ ÄÚµå¿Í º¯¼ö, stack°ú heapÀº ¾î¶»°Ô ½ÇÁ¦ memory¿¡ ÇÒ´çÀ» ÇÒ °ÍÀÎÁö
¸¦ linker command file¿¡ Á¤ÇØÁø ¹®¹ý¿¡ µû¶ó¼ Á¤ÀÇÇÏ°í,
ÀÌ°ÍÀ» linkerÀÇ ÀÔ·ÂÀ¸·Î ´øÁ® ÁÖ°Ô µÈ´Ù.
Linker´Â Àü´Þ¹ÞÀº linker command fileÀ» Çص¶ÇÏ¿©¼,
ÇÊ¿äÇÑ address¸¦ °è»êÇÏ°í ÇÒ´çÇÑ´Ù.
ÀÌ°ÍÀ» Compile time(¶Ç´Â Build time) memory allocation À̶ó°í ÇÑ´Ù.
Dynamic memory allocationÀ» Á¦¿ÜÇÑ c code »óÀÇ ¸ðµç ÄÚµå¿Í º¯¼öµéÀÇ
address´Â ÀÌó·³ linker¿¡ ÀÇÇؼ build time¿¡ °áÁ¤ÀÌ µÇ¸ç,
linker command fileÀº build time memory allocationÀ» À§ÇØ
ÇÊ¿äÇÑ Á¤º¸¸¦ linker¿¡ ÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù.
Note:
malloc°ú °°Àº dynamic memory allocationÀº
run time memory allocationÀ̶ó°í ºÎ¸¥´Ù.
´ëºÎºÐÀÇ Compiler Tool Chain¿¡¼ ´ÙÀ½°ú °°Àº default ¿µ¿ªÀÌ Á¤ÀǵǾî ÀÖÀ¸¸ç,
Ưº°ÇÑ Áö½Ã°¡ ¾ø´Â °æ¿ì c code´Â ¾Æ·¡¿Í °°Àº default ¿µ¿ª¿¡ ÇÒ´çÀÌ µÈ´Ù.
(Tool Chain¸¶´Ù À̸§Àº ¾à°£¾¿ ´Ù¸¦ ¼ö ÀÖÁö¸¸, ±âº»ÀûÀÎ °³³äÀº µ¿ÀÏÇÔ)
# code(¶Ç´Â text) ¿µ¿ª
- compileµÈ instruction(machine code)°¡ ÀúÀåµÇ´Â ¿µ¿ª
# data ¿µ¿ª
- ÃʱâÈµÈ Àü¿ª º¯¼ö°¡ ÇÒ´çµÇ´Â ¿µ¿ª
# bss ¿µ¿ª
- ÃʱâȵÇÁö ¾ÊÀº Àü¿ª º¯¼ö°¡ ÇÒ´çµÇ´Â ¿µ¿ª
# stack ¿µ¿ª
- ÇÔ¼ö call ½Ã¿¡ »ç¿ëµÇ´Â snapshot/context ÀúÀåÀ» À§ÇÑ ¿µ¿ª
Áö¿ªº¯¼ö ¶ÇÇÑ stack¿¡ ÇÒ´çÀÌ µÊ
# heap ¿µ¿ª
- malloc¿¡ ÀÇÇÑ dynamic memory allocationÀ» À§ÇÑ ¿µ¿ª
linker command fileÀº ÀÌ·¯ÇÑ ¿µ¿ªÀ» ½ÇÁ¦ memoryÀÇ ¾î¶² ºÎºÐ¿¡
¼³Á¤À» ÇÒ °ÍÀÎÁö linker¿¡ ¾Ë·ÁÁØ´Ù.
¿¹¸¦ µé¸é,
code ¿µ¿ªÀº 0x100000 ¹øÁöºÎÅÍ 1Mbyte,
data ¿µ¿ªÀº 0x200000 ¹øÁöºÎÅÍ 2Mbyte,
bss ¿µ¿ªÀº 0x300000 ¹øÁöºÎÅÍ 512Kbyte,
stack¿µ¿ªÀº 0x400000 ¹øÁöºÎÅÍ 512Kbyte,
heap ¿µ¿ªÀº 0x500000 ¹øÁöºÎÅÍ 2Mbyte,
¿Í °°ÀÌ °³¹ßÀÚ°¡ ¿øÇÏ´Â µ¥·Î ÁöÁ¤ÀÌ °¡´ÉÇÏ´Ù.
linker´Â ÀÌ·¯ÇÑ linker command fileÀ» ÂüÁ¶Çؼ,
ÇØ´ç ¿µ¿ªÀ¸·Î ÄÚµå ¹× º¯¼öµéÀ» ÇÒ´çÇÏ°í,
Á¢±Ù(access, Áï read/write)¿¡ ÇÊ¿äÇÑ Àý´ëÀûÀÎ address¸¦
°è»êÇÏ¿© ±â°è¾î(Machine Instruction)¿¡ ÇÊ¿äÇÑ ¾îµå·¹½º¸¦
ÄÚµå»ó¿¡ ½É¾îÁÖ°Ô µÈ´Ù.
À̹ø Àå¿¡¼´Â compiler/linker°¡ ¾î¶»°Ô memory¿¡
º¯¼ö ¹× Äڵ带 ÇÒ´çÇÏ´ÂÁö ¾Ë¾Æº¸¾Ò½À´Ï´Ù.
À̹ø °ÀǸ¦ ÅëÇؼ Å« °³³ä¸¸ Àâ°í,
³ªÁß¿¡ ±¸Ã¼ÀûÀÎ coding/debuggingÀ» Çϸé¼,
½ÇÁ¦ º¯¼ö¿Í ÄÚµåÀÇ memory ÁÖ¼Ò¸¦ Çѹø µû¶ó°¡ º¸½Ã¸é,
Á¶±Ý ´õ ±× ½Çü¸¦ ÀÌÇØÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ Àå¿¡¼´Â ±¸Ã¼ÀûÀÎ ¿¹Á¦ code¸¦ ÅëÇؼ
½ÇÁ¦ º¯¼öµéÀÌ ¾î¶»°Ô memory¿¡ ÇÒ´çÀÌ µÇ´ÂÁö ¾Ë¾Æº¸°Ú½À´Ï´Ù.
Best Regqrds,
Wolverine
|
Hit : 8059 Date : 2012/07/05 09:48
|