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

http://www.hackerschool.org/HS_Boards/zboard.php?desc=desc&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 : 7553     Date : 2012/07/05 09:48



    
show1546 °­ÀÇ Á¤¸» °¨»çÇÕ´Ï´Ù. Á¦°¡ ¿äÁò ¹öÆÛ¿À¹öÇÃ·Î¿ì °øºÎ¸¦ ÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ ºÐ¾ß °øºÎ¿¡ µµ¿òÀÌ ¸¹ÀÌ µÉ°Í °°½À´Ï´Ù. ÇʱâÇÏ°í °©´Ï´Ù ¤¾¤¾ ½Ã°£ÀÌ Á» °É·È³×¿ä ÇʱâÇϸ鼭 º¸´Ùº¸´Ï! Á¤¸»°¨»çÇÕ´Ï´Ù! 2012/07/17  
1346   [ÀÚÀÛ] C °­ÁÂ [4] - Dynamic Memory Allocation[2]     wolverine
07/06 5965
1345   [ÀÚÀÛ] C °­ÁÂ [3] - Variable & Memory[2]     wolverine
07/05 6353
  [ÀÚÀÛ] C °­ÁÂ [2] - Memory Allocation[1]     wolverine
07/05 7552
1343   [ÀÚÀÛ] C °­ÁÂ [1] - Compiler Tool Chain[4]     wolverine
07/04 7955
1342   À¯´Ð½º ÇØÅ·ÀÇ ±âº» SetUID[3]     wnstndp
07/25 7320
1341   ù°æÇè ºñi¾Æ±×¶ó ¸Ô°í »çÃÌ´©³ª¶û[2]     wngkssk
06/20 8590
1340   ÇØÅ· °ü·Ã »çÀÌÆ® ¸ñ·ÏÀÔ´Ï´Ù.[12]     wlwjsan
11/09 24614
1339   ÇØÅ·µÇ°íÀÖ´ÂÁö ¾Ë¾Æº¸ÀÚ (Æß)[8]     wlsgh8983
03/10 9113
1338   ÇØÄ¿½ºÄð °¡ÀÔÇÑ »ç¶÷ÀÔ´Ï´Ù[1]     wldud
02/19 8197
1337   ű׶õ??[4]     wkrwjs002
08/20 6814
1336   ÇØÄ¿¶õ?[12]     wkrwjs002
08/20 6662
1335   ¿ö°ÔÀÓ »çÀÌÆ®ÀÔ´Ï´Ù. [4]     wkdqkf2
03/18 8335
1334   ¾È³çÇϼ¼¿ä?     wkdqkf2
03/18 6312
1333   ±¸±Û ¹é¸µÅ© ÀÛ¾÷ Áú¹®¿ä     wkatnxka
03/30 3460
1332   [¸Ó¸®¼Ó] push ebp mov ebp,esp¿¡...[2]     wjsqud011
08/18 8437
1331   [¸Ó¸®¼Ó] C¾ð¾î Æ÷ÀÎÅÍ¿Í ÇÔ¼ö¿¡ ´ëÇØ...[2]     wjsqud011
08/18 8501
1330   sdsdfdfgfh[4]     witched14
11/06 38048
1329   µµ¿ÍÁà¿ä~[3]     wishingstar
11/28 6282
1328   ¿ÀÇÁ¶óÀÎ ½ºÅ͵ðÀÇ ¼º°ú¹° 1. ½ºÅÃ[6]     windowhan
10/03 7270
1327   ¾Ë°í¸®Áò ½ºÅ͵ð ¸ðÁýÇÕ´Ï´Ù [´ëÀü][5]     windowhan
09/10 7025
[1]..[11][12] 13 [14][15][16][17][18][19][20]..[80]

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