|
ÃÑ ÆäÀÌÁö ¼ö : 3121
![]()
|
ÇöÀçÀ§Ä¡ : article>stack_size ![]()
´ÙÀ½ Äڵ带 ÄÄÆÄÀÏÇÑ ÈÄ ½ÇÇà ½ÃÄѺ¸ÀÚ.
ÄÚµå´Â Linux kernel.2.4.20, gcc 3.2.2¸¦ ÅëÇØ¼ Å×½ºÆ® µÇ¾ú´Ù. #include <stdio.h> #include <string.h> void __a__(void) { unsigned char s_AAA[ 8 << 20 ]; // 8M fprintf(stdout, "Entering memset\n"); memset(s_AAA, 0xff, sizeof(s_AAA)); fprintf(stdout, "Leave memset\n"); } int main(int s_Argc, char *s_Argv[]) { __a__(); return(0); }
±×·³ ¼¼±×¸ÕÆ® ÆúÆ® ¿¡·¯¸¦ Ãâ·ÂÇÏ¸é¼ Á¾·áµÇ¾î ¹ö¸°´Ù. ÀÌÀ¯´Â Ä¿³Î·¹º§¿¡¼ °¢ ÇÁ·Î¼¼½º¿¡¼ ÇÒ´ç °¡´ÉÇÑ ½ºÅûçÀÌÁî¿¡ Á¦ÇÑÀ» °¡Áö°í Àֱ⠶§¹®ÀÌ´Ù. ÀÌ·¯ÇÑ Á¦ÇÑ »çÇ×Àº ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù. /usr/src/linux/include/linux/sched.h ------------------------------------ #define _STK_LIM (8*1024*1024) // 8M
(¹è¿µîÀ» Àú·¸°Ô Å©°Ô ¸¸µé¾î¼ »ç¿ëÇÏ´Â °æ¿ì´Â µå¹°±ä ÇϰÚÁö¸¸) ÇÊÀÚÀÇ °æ¿ì¿¡µµ ¹è¿À» ¸Å¿ì Å©°Ô Àâ¾Æ¼ »ç¿ëÇØ¼ ÄÚµùÇÑ ÇÁ·Î±×·¥ÀÌ ÀÖ¾ú´Ù. ÀÌ ÇÁ·Î±×·¥ÀÌ Àß µ¹´Ù°¡ °£È¤ Á×´Â ¹®Á¦°¡ ÀÖ¾ú´Âµ¥, ÀÌ ¹®Á¦ ÀâÀ»·Á°í »ó´çÈ÷ ½Ã°£À» ÅõÀÚÇß¾ú°í °á±¹ À§ÀÇ ½ºÅûçÀÌÁî Á¦ÇÑ ¹®Á¦ ¶§¹®À̶õ°É ¾Ë°Ô µÇ¾ú´Ù. ¹®Á¦´Â malloc()À» ÀÌ¿ëÇØ¼ °£´ÜÈ÷ ÇØ°áÇÒ ¼ö ÀÖ¾ú´Ù. ½ºÅÿµ¿ªÀ» »ç¿ëÇÏ´Â º¯¼öÀÇ »ç¿ë½Ã¿¡´Â Å©±â¿¡ ÁÖÀÇÇØ¼ »ç¿ëÇØ¾ß ÇÑ´Ù´Â ±³ÈÆÀ» ¾ò¾ú´Ù.
ÀÌ°Ç Ä¿³Î Á¦ÇÑ »çÇ×À̹ǷΠLinux°¡ ¾Æ´Ñ ´Ù¸¥ ¿î¿µÃ¼Á¦¿¡¼´Â ¹®Á¦°¡ µÇÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î À©µµ¿ìÁî ȯ°æ¿¡¼ÀÇ °æ¿ì À§ÀÇ ÄÚµå´Â ¹®Á¦ ¾øÀÌ ½ÇÇàµÇ¾ú´Ù. ¾î¶µç Å« ½ºÅø޸𸮸¦ »ç¿ëÇØ¾ß ÇÒ °æ¿ì¶ó¸é malloc()¸¦ ÀÌ¿ëÇØ¼ µ¿ÀûÀ¸·Î ÇÒ´çÇϵµ·Ï ÇÏÀÚ.
¸¸¾à ÀÌ Á¦ÇÑÀ» Ç®±â À§ÇÑ ¹¦Ã¥À» ã´Â´Ù¸é 2°¡Áö°¡ ÀÖ½À´Ï´Ù. ù°´Â Ä¿³ÎÀÇ Çì´õ /usr/src/linux/include/sched.h ¿¡¼ Á÷Á¢ ¼öÁ¤ÇÏ¿© Ä¿³ÎÀ» ÀçÄÄÆÄÀÏ ÇÏ´Â ¹æ¹ýÀÌ ÀÖÀ¸¸ç ¶Ç ´Ù¸¥ ¹æ¹ýÀº ulimit ¸í·É ¶Ç´Â ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ÇØ°áÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. "ulimit -s" ¸¦ ½ÇÇàÇØº¸½Ã¸é ÀÚ½ÅÀÇ ½ºÅà Á¦ÇѰªÀ» KByte ´ÜÀ§·Î ¾Ë¼ö ÀÖÀ¸¸ç À̰ÍÀ» "ulimit -s <½ºÅà ÃÖ´ë Á¦ÇѰª>" °ú °°Àº Çü½ÄÀ¸·Î º¯°æÇÒ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ CÄڵ忡¼ »ç¿ëÇÏ·Á¸é man ÆäÀÌÁöÀÇ setrlimit(2) ¸¦ ÂüÁ¶Çغ¸¸é º¸´Ù ÁÁÀº Á¤º¸¸¦ È®ÀÎÇÒ¼ö ÀÖ´Ù.
|
|
|
|