1596, 79/80 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   wolverine
   [ÀÚÀÛ] C °­ÁÂ [2] - Memory Allocation

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



    
show1546 °­ÀÇ Á¤¸» °¨»çÇÕ´Ï´Ù. Á¦°¡ ¿äÁò ¹öÆÛ¿À¹öÇÃ·Î¿ì °øºÎ¸¦ ÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ ºÐ¾ß °øºÎ¿¡ µµ¿òÀÌ ¸¹ÀÌ µÉ°Í °°½À´Ï´Ù. ÇʱâÇÏ°í °©´Ï´Ù ¤¾¤¾ ½Ã°£ÀÌ Á» °É·È³×¿ä ÇʱâÇϸ鼭 º¸´Ùº¸´Ï! Á¤¸»°¨»çÇÕ´Ï´Ù! 2012/07/17  
36   * À©µµ¿ì ´ÜÃàÅ° ¾Æ´Â°Íµé *[7]     HackerMapia
02/20 7934
35   * À©µµ¿ì ÇØÅ·ÀÇ ±âº»¿ø¸® *     HackerMapia
02/21 19207
34   * À©µµ¿ì ÇØÅ·ÀÇ ±âº» ¿ø¸®*[29]     oes2
08/26 13995
33   * À©µµ¿ì Á¾·á¸¦ ºü¸£°Ô *[2]     HackerMapia
02/20 8461
32   * Á¡È­½ÄÀÇ °£´ÜÇÑ ¾Ë°í¸®Áò     limjongmin
08/20 9597
31   * Á¡È­½Ä °£´ÜÇÏ°Ô     limjongmin
08/20 7496
30   * ÀÎÅͳݰ˻öÀÌ ´ÞÀÎÀÌ µÇ´Â 10°¡Áö ¹æ¹ý *[1]     HackerMapia
02/24 8553
29   (²Ä¼ö) L.O.B Çѹ濡 Ŭ¸®¾îÇϱâ[2]     ÇØÅ·ÀßÇÏ°í½Í´Ù
01/14 2027
28   (Æß)Wireshark ¼³Ä¡ ¹× »ç¿ë¹ýÀÔ´Ï´Ù.~[2]     Mach
04/29 8578
27   (WindowXP±âÁØ) °£´ÜÇÑ ÄÄÇ»ÅÍ ÃÖÀûÈ­     dzhfldk
08/22 7469
26   (Àâ´ã)Æ÷ÀÎÅÍ´Â ½±´Ù?[2]     sihun1113
05/01 6926
25   (2Â÷¼öÁ¤)´Ü¼øÇÏ°í À§ÇèÇÑ ÆÄÀÏ ¾÷·Îµå ÇØÅ·±â¼ú[2]     gohy032
07/30 14006
24   <»þ¿À¾² Ÿ·Î>5.¾È³»¹®Ç¥½Ãpri.h[1]     sihun1113
06/04 7419
23   <»þ¿À¾² Ÿ·Î>4.ùȭ¸é±¸Çöpri.h     sihun1113
06/04 6823
22   <»þ¿À¾² Ÿ·Î>3.show.h-2     sihun1113
06/04 7520
21   <»þ¿À¾² Ÿ·Î>2. show.h ±¸Çö-1     sihun1113
06/04 7411
20   <»þ¿À¾² Ÿ·Î>1.±âº»ÀûÀÎ Àüü °³³äÀâ±â     sihun1113
06/04 9015
19   < ¸®´ª½º ÂüÁ¶ °¡À̵å > 3      »ç¿ëÁß
08/02 8125
18   < ¸®´ª½º ÂüÁ¶ °¡À̵å > 2     »ç¿ëÁß
08/02 7961
17   < ¸®´ª½º ÂüÁ¶ °¡À̵å > 1     »ç¿ëÁß
08/02 7889
[1]..[71][72][73][74][75][76][77][78] 79 [80]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org