°¡. ¹öÆÛÀÇ ÀڷᱸÁ¶

ÇÁ·Î±×·¥Àº ÀڷᱸÁ¶¿Í ¾Ë°í¸®ÁòÀ¸·Î ±¸¼ºµÇ´Âµ¥ ÀÌ µÑÀº ¼­·Î ±ä¹ÐÇÑ ¿¬°üÀ» ¸Î°í ÀÖÀ¸¸ç ¶ÇÇÑ »óÈ£ º¸¿ÏÀûÀÌ´Ù. µ¿ÀÏÇÑ ¼º´ÉÀÇ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù°í ÇßÀ» ¶§ ÀڷᱸÁ¶°¡ °£´ÜÇÏ¸é ¾Ë°í¸®ÁòÀÌ º¹ÀâÇØÁ®¾ß ÇÏ°í ¹Ý´ë·Î ÀڷᱸÁ¶°¡ º¹ÀâÇÏ¸é ¾Ë°í¸®ÁòÀÌ »ó´ëÀûÀ¸·Î °£´ÜÇØÁ®µµ µÈ´Ù. ¸ðµç ÇÁ·Î±×·¥Àº Ç¥ÇöÇÏ°íÀÚ ÇÏ´Â Á¤º¸¸¦ ¾î¶² ½ÄÀ¸·Î ÀúÀåÇÏ°í °ü¸®ÇÒ °ÍÀÎÁö ÀڷᱸÁ¶¸¦ ¸ÕÀú ¼³°èÇÑ ÈÄ ÀڷᱸÁ¶¿¡ ¸Â°Ô ¾Ë°í¸®ÁòÀ» ±¸ÇöÇÑ´Ù.

ÆíÁý±â°¡ ó¸®ÇÏ´Â °¡Àå Áß¿äÇÑ µ¥ÀÌÅÍ´Â ¿ª½Ã ÆíÁý ´ë»óÀÎ ÅؽºÆ®ÀÌ´Ù. ÅؽºÆ®¸¦ ¾î¶² ½ÄÀ¸·Î ÀúÀåÇÏ°í °ü¸®ÇÒ °ÍÀΰ¡, Áï ¹öÆÛÀÇ ¼³°è ¹æ½ÄÀ» ÃÖ¿ì¼±ÀûÀ¸·Î °áÁ¤ÇØ¾ß ÇÑ´Ù. ¹öÆÛ ¼³°è´Â ÆíÁý±â Á¦ÀÛÀÇ Ã¹ ´ÜÃß¿¡ ÇØ´çÇϴµ¥ Àß ¼³°èÇسõÀ¸¸é ÄÚµå ÀÛ¼ºµµ ½±°í ±â´ÉÀ» È®ÀåÇϱ⿡µµ À¯¸®ÇÏ´Ù. ¹Ý¸é À߸ø ¼³°èÇϸé Áß°£¿¡ °íÄ¡±â ¾î·Á¿ì¸ç ³¶Æи¦ ´çÇÒ ¼öµµ ÀÖÀ¸¹Ç·Î óÀ½ºÎÅÍ ½ÅÁßÇÏ°Ô ¼±ÅÃÇØ¾ß ÇÑ´Ù.

±×·¡¼­ ¿ì¼± ÆíÁý±â¸¦ º»°ÝÀûÀ¸·Î Á¦ÀÛÇϱâ Àü¿¡ ¹öÆÛ¸¦ ¾î¶² ½ÄÀ¸·Î ¼³°èÇÏ´Â °ÍÀÌ ÁÁÀºÁöºÎÅÍ ¸é¹ÐÇÏ°Ô °ËÅäÇغ¸µµ·Ï ÇÏÀÚ. ÅؽºÆ® µ¥ÀÌÅ͸¦ Ç¥ÇöÇϱâ À§ÇÑ ¹æ¹ýÀº Å©°Ô µÎ °¡Áö ¹æ½ÄÀ¸·Î ³ª´©¾îÁö´Âµ¥ ù ¹ø°´Â µð½ºÅ© ±â¹ÝÀÌ°í µÎ ¹ø°´Â ¸Þ¸ð¸® ±â¹ÝÀÌ´Ù. µð½ºÅ© ±â¹ÝÀÇ ¹öÆÛ¶õ ÆíÁýÆÄÀÏÀ» ÀüºÎ Àоî¿ÀÁö ¾Ê°í ´çÀå ÇÊ¿äÇÑ ºÎºÐ¸¸ Àоî¿À´Â ¹æ½ÄÀε¥ °ú°Å ¸ÞÀÎ ¸Þ¸ð¸®°¡ Å©Áö ¾Ê¾ÒÀ» ¶§ ÁÖ·Î »ç¿ëÇÑ ¹æ½ÄÀÌ´Ù. ¸ÞÀÎ ¸Þ¸ð¸®°¡ 4MBÀÎ »óȲ¿¡¼­ 1MBÂ¥¸® ÆÄÀÏÀ» ¸Þ¸ð¸®·Î ÀÐ¾î µéÀ̸é 25%ÀÇ ¸Þ¸ð¸®¸¦ Á¡À¯ÇÏ´Â ¼ÀÀÌ µÇ±â ¶§¹®¿¡ ±×·² ¼ö°¡ ¾ø¾ú´Ù.

¿äÁòÀº ¸ÞÀÎ ¸Þ¸ð¸®°¡ ³Ë³ËÇÑ µ¥´Ù°¡ ¸Þ¸ð¸®°¡ ºÎÁ·ÇÏ¸é ¿î¿µÃ¼Á¦°¡ ¾Ë¾Æ¼­ µð½ºÅ©¿¡ °¡»ó ¸Þ¸ð¸®¸¦ Àâ¾ÆÁֱ⠶§¹®¿¡ ±»ÀÌ ºñÈ¿À²ÀûÀÎ µð½ºÅ© ±â¹Ý ¹æ½ÄÀ» »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø¾îÁ³´Ù. °Ô´Ù°¡ ÆÄÀÏÀÌ Á¤¸»·Î Å©´Ù¸é ÆÄÀÏ ¸ÅÇÎ °´Ã¼¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ ÀÖÀ¸¹Ç·Î µð½ºÅ© ±â¹ÝÀº ¾Æ¿¹ »ý°¢ÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù. ¸Þ¸ð¸®¸¦ ±â¹ÝÀ¸·Î ÇÏ´Â ¹öÆÛ´Â ´Ù½Ã µÎ °¡Áö ¹æ½ÄÀ¸·Î ³ª´©¾îÁø´Ù.

´ÜÀÏ ¹öÆÛ

Àüü ÅؽºÆ®¸¦ ÇϳªÀÇ ¹®ÀÚ¿­ ¹öÆÛ·Î °ü¸®ÇÑ´Ù. ¸¸¾à 4ÁÙ·Î ±¸¼ºµÈ ¹®¼­¸¦ Ç¥ÇöÇÑ´Ù¸é ¸Þ¸ð¸®»ó¿¡ ´ÙÀ½°ú °°ÀÌ ±â·ÏµÉ °ÍÀÌ´Ù.

¹öÆÛÀÇ ½ÃÀÛÀ§Ä¡¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ º¯¼ö buf Çϳª¸¸ ¼±¾ðÇÏ°í ÀÌ ¹öÆÛ¿¡ ¹®¼­¸¦ Åë°·Î ÀúÀåÇصξú´Ù. ¹®¼­¸¦ Ç¥ÇöÇϴµ¥ ´ÜÀÏ ¹öÆÛ Çϳª¸¸ ÀÖÀ¸¸é µÈ´Ù. ÀÌ ¹æ¹ýÀº ´ÙÀ½°ú °°Àº ÀåÁ¡ÀÌ ÀÖ´Ù.

 

¨ç º¸´Ù½ÃÇÇ ±Ø´ÜÀûÀ¸·Î ´Ü¼øÇÑ ±¸Á¶¸¦ °¡Áö°í Àֱ⠶§¹®¿¡ °ü¸®ÇÒ ÇÊ¿ä°¡ °ÅÀÇ ¾ø´Ù. ¹öÆÛÀÇ ½ÃÀÛÀ§Ä¡¿Í ¿øÇÏ´Â ¿ÀÇÁ¼Â¸¸ ¾Ë¸é ¹®¼­¸¦ ÀÚÀ¯·Ó°Ô Á¶ÀÛÇÒ ¼ö ÀÖ´Ù.

¨è ÀÌ·± ÀÏÂ÷¿øÀûÀÎ ±¸Á¶´Â ÅؽºÆ® ÆÄÀÏÀÇ µð½ºÅ© À̹ÌÁö¿Í ¿ÏÀüÈ÷ ÀÏÄ¡ÇÑ´Ù. ±×·¡¼­ ÆÄÀÏ ÀÔÃâ·ÂÀÌ °£´ÜÇϸç Àд Áï½Ã ¹®¼­¸¦ º¸¿© ÁÙ ¼ö ÀÖ°í ÀúÀåÇÒ ¶§µµ buf ¹è¿­À» ÆÄÀÏ·Î ¾²±â¸¸ ÇÏ¸é µÈ´Ù. ¶ÇÇÑ ÀÌ ±¸Á¶´Â Win32ÀÇ ¸Þ¸ð¸® ¸Ê ÆÄÀÏ°úµµ ȣȯµÇ¹Ç·Î ´ë¿ë·® ÆÄÀÏÀ» ¸Þ¸ð¸® ¸Ê ÆÄÀÏ·Î ¸ÅÇÎÇÑ ÈÄ »ç¿ëÇÏ¸é °ú´ÙÇÑ ¸Þ¸ð¸® ¼Ò¸ð¾øÀÌ Å« ¹®¼­¸¦ ÀÐÀ» ¼ö ÀÖ´Ù.

¨é ¹®¼­ ÀÚü¸¦ ±â¾ïÇÏ´Â ¹öÆÛ ¿ÜÀÇ Ãß°¡ Á¤º¸°¡ ÇÊ¿äÄ¡ ¾ÊÀ¸¸ç ¹®¼­ÀÇ ¿ë·®°ú °ÅÀÇ µ¿ÀÏÇÑ Å©±âÀÇ ¹öÆÛ¸¦ »ç¿ëÇϹǷΠ¸Þ¸ð¸®ÀÇ ³¶ºñ°¡ ¾ø´Ù.

 

ÇÏÁö¸¸ ¾Õ¿¡¼­µµ ¸»ÇßµíÀÌ ÀڷᱸÁ¶°¡ ´Ü¼øÇÏ¸é ¾Ë°í¸®ÁòÀÌ º¹ÀâÇØÁ®¾ß ÇÑ´Ù. ´ÜÀÏ ¹öÆÛ ¹æ½ÄÀº ±× ´Ü¼øÇÔÀ¸·Î ÀÎÇØ ´ÙÀ½°ú °°Àº ´ÜÁ¡À» °¡Áø´Ù.

 

¨ç ƯÁ¤ À§Ä¡¸¦ ã´Âµ¥ ½Ã°£ÀÌ °É¸°´Ù. À§ ±×¸²¿¡¼­ ³× ¹ø° ÁÙ ¡®°¡´Â ³ª±×³×¡¯¸¦ ãÀ¸·Á¸é ¹öÆÛÀÇ Ã³À½ºÎÅÍ Àо¸é¼­ °³Ç๮ÀÚ ¼ÂÀ» Áö³­ ÈÄÀÇ À§Ä¡¸¦ ã¾Æ¾ß ÇÑ´Ù. ¹®¼­°¡ Å©¸é Ŭ¼ö·Ï, ã´Â ÁÙÀÌ µÚÂÊ¿¡ ÀÖÀ»¼ö·Ï °Ë»ö ¼Óµµ´Â ´õ¿í ´À·ÁÁú °ÍÀÌ´Ù. ±×·¯³ª ÀÌ ´ÜÁ¡Àº º°µµÀÇ À妽º¸¦ À¯ÁöÇÔÀ¸·Î½á ÇØ°áÇÒ ¼ö ÀÖ´Ù.

¨è »ðÀÔ°ú »èÁ¦°¡ ´À¸®´Ù. ¹®¼­ÀÇ Æ¯Á¤ À§Ä¡¿¡ ¹®ÀÚ¸¦ »ðÀÔÇÒ °æ¿ì »ðÀԵǴ À§Ä¡ ÀÌÈÄÀÇ ¹®ÀÚ´Â ¸ðµÎ µÚÂÊÀ¸·Î À̵¿µÇ¾î¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î 1M Å©±âÀÇ ¹®¼­°¡ ÀÖ°í ÀÌ ¹®¼­ Áß°£¿¡ ±ÛÀÚ Çϳª¸¦ »ðÀÔÇÑ´Ù°í Çغ¸ÀÚ.

ÀÌ ±ÛÀÚ°¡ »ðÀ﵃ °ø°£À» Áß°£¿¡ ¸¸µé¾î¾ß ÇϹǷΠµÚÂÊÀÇ ¹®ÀÚµéÀÌ »ðÀ﵃ ±ÛÀÚ ±æÀ̸¸Å­ À̵¿µÇ¾î¾ß ÇÑ´Ù. »èÁ¦ÇÒ ¶§´Â ¹Ý´ë·Î µÚÂÊ ¹®ÀÚµéÀ» ¾ÕÂÊÀ¸·Î º¹»çÇØ¾ß ÇÑ´Ù. ¹®¼­°¡ ª´Ù¸é ±×¸® Å« ¹®Á¦°¡ ¾Æ´Ï°ÚÁö¸¸ ¹®¼­°¡ ±æ¾îÁö¸é ±ÛÀÚ Çϳª »ðÀÔÇÒ ¶§¸¶´Ù ¾öû³­ ¸Þ¸ð¸® À̵¿ÀÌ ÇÊ¿äÇϹǷΠȿÀ²ÀûÀÌÁö ¸øÇÏ´Ù. ¹öÆÛ Çϳª°¡ ¹®¼­ Àüü¸¦ °¡Áö°í ÀÖÀ¸¹Ç·Î ÀÌ ±¸Á¶¿¡¼­´Â ¾î¿ ¼ö ¾ø´Â ¹®Á¦´Ù. ÇØ°á ¹æ¹ýÀÌ ÀüÇô ¾ø´Ù.

ÁÙ´ÜÀ§ ¹öÆÛ

ÀÌ ¹æ¹ýÀº ¹®¼­ Àüü¸¦ ÇϳªÀÇ ¹öÆÛ¿¡ ÀúÀåÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ÇÑ ÁÙ´ç ÇϳªÀÇ ¹öÆÛ¿¡ ÀúÀåÇÏ´Â °ÍÀÌ´Ù. Áï, ¹®¼­ Àüü¸¦ ÁÙÀÇ ¹è¿­·Î °£ÁÖÇÏ°í °¢ ¹öÆÛ¿¡ ÇÑ ÁÙ¾¿ ÅؽºÆ®¸¦ ÀúÀåÇÑ´Ù. 4ÁÙÂ¥¸® ¹®¼­¸¦ ¿¹·Î µé¸é ´ÙÀ½°ú °°ÀÌ ¸Þ¸ð¸®¿¡ ÀÔüÀûÀ¸·Î Ç¥ÇöµÉ °ÍÀÌ´Ù. ¿©±â¼­ ÁÙÀ̶ó´Â ¿ë¾î´Â °³ÇàÄÚµå·Î ¹°¸®ÀûÀ¸·Î ºÐ¸®µÇ¾î ÀÖ´Â ¹®´ÜÀÇ °³³äÀÌ´Ù.

ÇüÅÂÀûÀ¸·Î ¹®¼­´Â °¢ ÁÙÀ» °¡¸®Å°´Â Æ÷ÀÎÅÍ ¹è¿­·Î Ç¥ÇöµÈ´Ù. ¶Ç´Â Á» ´õ »ðÀÔ°ú »èÁ¦¿¡ À¯¿¬ÇÔÀ» ÁÖ°íÀÚ ÇÑ´Ù¸é ¿¬°á ¸®½ºÆ®(Linked List)·Î ±¸ÇöÇÒ ¼öµµ ÀÖ´Ù. ÀÌ ¹æ¹ýÀº ´ÜÀÏ ¹öÆÛ¿¡ ºñÇØ Á» ´õ ¹ßÀüµÈ ÇüÅÂÀÌ¸ç ´ÙÀ½°ú °°Àº ÀåÁ¡ÀÌ ÀÖ´Ù.

 

¨ç °Ë»öÀÌ ¹«Ã´ ºü¸£´Ù. n¹ø° ÁÙÀ» ã°í ½ÍÀ¸¸é buf[n]À» ÀÐÀ¸¸é µÇ´Âµ¥ ¹è¿­ÀÇ Ã·ÀÚ ¿¬»êÀº °í¼ÓÀ¸·Î 󸮵DZ⠶§¹®¿¡ °ÅÀÇ ½Ã°£ÀÌ µéÁö ¾Ê´Â´Ù. ¹®¼­ÀÇ Å©±â°¡ ¾Æ¹«¸® Ä¿µµ °Ë»ö ¼Óµµ°¡ ´À·ÁÁö´Â ¹ýÀº ¾ø´Ù.

¨è »ðÀÔ »èÁ¦µµ ºñ±³ÇÒ ¼ö ¾øÀ» ¸¸Å­ ºü¸£¸ç ¹®¼­ Å©±â¿¡µµ °ÅÀÇ ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù. ¹®¼­°¡ ¹é¸¸ ÁÙÀ̵ç õ¸¸ ÁÙÀÌµç ±× ÁÙ¿¡ »ðÀÔÇÏ´Â ±ÛÀÚ´Â ±× ÁÙÀÇ ¹öÆÛ¿¡¸¸ ¿µÇâÀ» ¹ÌÄ¡±â ¶§¹®¿¡ ´ë¿ë·®ÀÇ ¸Þ¸ð¸® À̵¿ÀÌ ÇÊ¿ä¾ø´Ù. ÇÏÁö¸¸ ¿©·¯ ÁÙÀ» ÇѲ¨¹ø¿¡ »ðÀÔ, »èÁ¦ÇÒ ¶§´Â Æ÷ÀÎÅÍ ¹è¿­À» Á¶ÀÛÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ¿¹¸¦ µé¾î 6¹ø ÁÙÀ» Åë°·Î »èÁ¦Çϸé 7¹ø ÁÙÀÌ 6¹ø ÁÙÀÌ µÇ¾ß ÇÏ°í ±× ÀÌÈÄÀÇ Áٵ鵵 ÁÙÁÙÀÌ ÇÑ Ä­¾¿ À§·Î ¿Ã¶ó¿Í¾ß ÇÑ´Ù. ±×·¯³ª Æ÷ÀÎÅÍ ¹è¿­ Á¶ÀÛÀº ÅؽºÆ®¸¦ ÀüÇô °Çµå¸®Áö ¾ÊÀ¸¹Ç·Î ¼Óµµ»ó ºÒ¸®ÇÑ Á¡ÀÌ º°·Î ¾øÀ¸¸ç ¿¬°á ¸®½ºÆ®¸¦ »ç¿ëÇÒ °æ¿ì ¹è¿­ Á¶ÀÛµµ ÇÊ¿äÄ¡ ¾Ê´Ù.

¨é °¢ ÁÙ¿¡ ºÏ¸¶Å©³ª ÁÙ¹øÈ£ µîÀÇ ºÎ°¡ Á¤º¸¸¦ °°ÀÌ ÀúÀåÇÒ ¼ö ÀÖ´Ù. ÇÑ ÁÙ¿¡ ´ëÇÑ Á¤º¸¸¦ ±¸Á¶Ã¼·Î ÀÛ¼ºÇÏ°í ÀÌ ±¸Á¶Ã¼¿¡ ¿øÇÏ´Â Á¤º¸¸¦ ¸â¹ö·Î Æ÷ÇÔ½ÃÅ°¸é µÈ´Ù. ÀÌ·¸°Ô µÇ¸é ¹®¼­´Â Æ÷ÀÎÅÍ ¹è¿­ÀÌ ¾Æ´Ï¶ó ±¸Á¶Ã¼ ¹è¿­ÀÌ µÈ´Ù.

 

º¸´Ù½ÃÇÇ ´ÜÀÏ ¹öÆÛ¸¦ »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ºñÇؼ­ ¿©·¯ ¸ð·Î ÀåÁ¡ÀÌ ¸¹´Ù. ÇÏÁö¸¸ ±¸Á¶°¡ ¾à°£ º¹ÀâÇØÁ³±â ¶§¹®¿¡ ÀÌ·Î ÀÎÇÑ ´ÜÁ¡µµ ÀÖ´Ù.

 

¨ç ´ÜÀÏ ¹öÆÛ¸¦ »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ºñÇØ ¸Þ¸ð¸® ¼Ò¸ð°¡ ¸¹´Ù. °¢ ÁÙÀÇ ÅؽºÆ® ¹öÆÛ´Â Ãß°¡µÉ ¹®ÀÚ¸¦ °í·ÁÇÏ¿© ¾à°£ÀÇ ¿©ºÐÀ» ÁÖ¾î ¸Þ¸ð¸®¸¦ ÇÒ´çÇØ¾ß ÇϹǷΠ¹Ì»ç¿ë ¸Þ¸ð¸® ¾çÀÌ ¸¹°í ¶Ç »ðÀÔ »èÁ¦°¡ ÀæÀ» ½Ã¿¡ ¸Þ¸ð¸® ÀçÇÒ´çÀÌ ºó¹øÇÏ°Ô ÀÌ·ç¾îÁö¹Ç·Î ¸Þ¸ð¸®ÀÇ ´ÜÆíÈ­°¡ ½ÉÇØÁø´Ù. º¹ÀâÇÑ ±¸Á¶ÀÇ ´ë°¡·Î ÀÎÇØ ¸Þ¸ð¸®´Â ¸¹ÀÌ ¼Ò¸ðÇÒ ¼ö¹Û¿¡ ¾ø´Ù.

¨è ÅؽºÆ® ÆÄÀÏÀÇ ±¸Á¶¿Í´Â ´Ù¸¥ ÇüŸ¦ °¡Áö±â ¶§¹®¿¡ ÆÄÀÏ ÀÔÃâ·ÂÀÌ ¹ø°Å·Ó´Ù. ÆÄÀÏÀ» ÀÐÀº ÈÄ È­¸é¿¡ Ãâ·ÂÇÏ·Á¸é ¸ÕÀú °¢ ÁÙÀ» ºÐ¼®Çؼ­ ÁÙ ¹öÆÛ¿¡ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í ÅؽºÆ®¸¦ º¹»çÇÏ´Â °úÁ¤À» °ÅÃÄ¾ß ÇÑ´Ù. ±×·¡¼­ ÆÄÀÏÀ» ÀÐÀº ÈÄ Ãâ·ÂµÉ ¶§±îÁö ¾à°£ÀÇ ½Ã°£ÀÌ °É¸®´Âµ¥ ÆÄÀÏÀÌ Å¬¼ö·Ï ÀÌ ½Ã°£ÀÌ ¸¹ÀÌ °É¸°´Ù. ÀúÀåÇÒ ¶§µµ Èð¾îÁ® ÀÖ´Â ÁÙµéÀ» ¸ð¾Æ ÇÑ ÆÄÀÏ¿¡ ±â·ÏÇØ¾ß ÇϹǷΠ¿ª½Ã ´À¸®´Ù.

ÀÌ ´ÜÁ¡ÀÌ º°·Î Áß¿äÇÏÁö ¾Ê´Ù°í »ý°¢ÇÒ ¼öµµ ÀÖ°ÚÁö¸¸ ÆíÁý±â¸¦ ÅؽºÆ® ºä¾î·Î »ç¿ëÇÏ´Â »ç¶÷¿¡°Ô´Â Ä¡¸íÀûÀÎ ´ÜÁ¡ÀÌ´Ù. 10MB Á¤µµÀÇ ÅؽºÆ® ÆÄÀÏÀ» ÀаíÀÚ Çϴµ¥ ¼ö½Ê Ãʸ¦ ±â´Ù·Á¾ß ÇÑ´Ù¸é ´©°¡ ÁÁ¾ÆÇϰڴ°¡? ½ÇÁ¦ ¹ßÇ¥µÇ¾î ÀÖ´Â »ó¿ë ÆíÁý±âµéµµ ÀÌ ¹æ¹ýÀ¸·Î ÀÛ¼ºµÈ °ÍÀº ÆÄÀÏÀ» óÀ½ ÀÐ¾î µéÀÌ´Â ¼Óµµ°¡ ±²ÀåÈ÷ ´À¸®°í ¹ÝÀÀ¼ºÀÌ ÁÁÁö ¾Ê´Ù. ¹°·Ð ÀÏ´Ü ÀÐÀº ÈÄ¿¡´Â ºü¸¥ ¼Óµµ·Î ÆíÁýÇÒ ¼ö ÀÖ´Ù.

¨é ±¸Á¶°¡ º¹ÀâÇϱ⠶§¹®¿¡ °ü¸®°¡ ´Ù¼Ò ±ÍÂúÀº ¸éÀÌ ÀÖ´Ù. ¹®¼­¸¦ ÆíÁýÇϰųª À̵¿, º¹»ç, ºÙ¿©³Ö±â¸¦ ÇÒ ¶§, ƯÈ÷ ÁÙ³¢¸®ÀÇ ¹®ÀÚ¿­ À̵¿½Ã ÀÌ°ÍÀú°Í ÇØ¾ß ÇÒ Ã³¸®°¡ ¸¹´Ù. µû¶ó¼­ ¹ö±×ÀÇ °¡´É¼ºµµ ÈξÀ ´õ ³ô°í °³¹ßÁß¿¡ µð¹ö±ëÀ» Çϱ⵵ ¹«Ã´ ¹ø°Å·Ó´Ù. ÀÌ´Â °ð °³¹ß ºñ¿ëÀÌ ¸¹ÀÌ µç´Ù´Â ¾ê±â¿Íµµ °°´Ù.

 

¹öÆÛ¸¦ °ü¸®ÇÏ´Â µÎ °¡Áö ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æ º¸¾Ò´Âµ¥ ¹°·Ð ÀÌ µÎ ¹æ¹ý ¿Ü¿¡µµ ÆÄÀÏ ¸ÅÇÎ °´Ã¼¸¦ »ç¿ëÇѴٰųª ÇÏ´Â Á¦ 3ÀÇ ¹æ¹ýµéÀÌ ÀÖÀ» ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ´Ù¸¥ ¹æ¹ýµéµµ ÀÌ µÎ ¹æ¹ýÀÇ º¯ÇüÀ̰ųª Á¶ÇÕ Á¤µµ¿¡ ºÒ°úÇÒ °ÍÀÌ´Ù.

ÀÚ, ±×·³ ÀÌÁ¦ ÆíÁý±â¸¦ ¸¸µé±â Àü¿¡ ¹öÆÛÀÇ ±¸Á¶¸¦ ¸ÕÀú ¼±ÅÃÇØ¾ß ÇÑ´Ù. À̶§ °¡Àå ¿ì¼±ÀûÀ¸·Î °í·ÁµÇ¾î¾ß ÇÒ »çÇ×Àº »ðÀÔ, »èÁ¦ ¼ÓµµÀÌ´Ù. ¸Þ¸ð¸® ¼Ò¸ð, °Ë»ö, º¯È¯, °ü¸® µîÀÇ Ã³¸®´Â ³»ºÎÀûÀ¸·Î ÀϾ´Â ÀÏÀ̹ǷΠ»ç¿ëÀÚ°¡ ±× Â÷À̸¦ ´À³¢±â ¾î·Á¿îµ¥ ¹ÝÇØ »ðÀÔ, »èÁ¦´Â »ç¿ëÀÚÀÇ Å°º¸µå Á¶ÀÛ¿¡ ÀÇÇØ ÀϾ´Â ÀÏÀ̹ǷΠ½±°Ô ü°¨µÈ´Ù. ¹®¼­°¡ Á¶±Ý Ä¿Á³´Ù°í Çؼ­ ŸÀÌÇÁÄ¡´Â ¼Óµµ¸¦ ¸ø µû¶ó¿Â´Ù¸é ±× ÆíÁý±â ´©°¡ ¾µ·Á°í Çϰڴ°¡?

¾Õ¿¡¼­ »ìÆ캻 ¹Ù¿¡ ÀÇÇÏ¸é ´ÜÀÏ ¹öÆÛ ¹æ¹ýÀÌ ÁÙ´ÜÀ§ ¹öÆÛ ¹æ¹ýº¸´Ù »ðÀÔ, »èÁ¦¿¡´Â ºÒ¸®ÇÏ´Ù. ±×·¸´Ù¸é °ú¿¬ ¾ó¸¶³ª ºÒ¸®ÇÑÁö °£´ÜÇÑ ¿¹Á¦¸¦ ¸¸µé¾î Å×½ºÆ®¸¦ Çغ¸µµ·Ï ÇÏÀÚ. MemTest¶ó´Â À̸§À¸·Î ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé°í ´ÙÀ½ ¼Ò½º¸¦ ÀÔ·ÂÇغ¸ÀÚ.

 

#include <windows.h>

 

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

HINSTANCE g_hInst;

HWND hWndMain;

LPCTSTR lpszClass=TEXT("MemTest");

 

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance

       ,LPSTR lpszCmdParam,int nCmdShow)

{

     HWND hWnd;

     MSG Message;

     WNDCLASS WndClass;

     g_hInst=hInstance;

    

     WndClass.cbClsExtra=0;

     WndClass.cbWndExtra=0;

     WndClass.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);

     WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);

     WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);

     WndClass.hInstance=hInstance;

     WndClass.lpfnWndProc=(WNDPROC)WndProc;

     WndClass.lpszClassName=lpszClass;

     WndClass.lpszMenuName=NULL;

     WndClass.style=CS_HREDRAW | CS_VREDRAW;

     RegisterClass(&WndClass);

 

     hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,

          CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,

          NULL,(HMENU)NULL,hInstance,NULL);

     ShowWindow(hWnd,nCmdShow);

     hWndMain=hWnd;

    

     while(GetMessage(&Message,0,0,0)) {

          TranslateMessage(&Message);

          DispatchMessage(&Message);

     }

     return (int)Message.wParam;

}

 

#include <stdio.h>

void MemTest()

{

     LARGE_INTEGER st,ed,freq;

     double gap;

     TCHAR Mes[256];

     TCHAR *buf;

     int i;

 

     buf=(TCHAR *)malloc(1048576*10);

     QueryPerformanceCounter(&st);

     for (i=0;i<10;i++) {

          memmove(buf,buf+1,1048576*10-1);

     }

     QueryPerformanceCounter(&ed);

     QueryPerformanceFrequency(&freq);

     gap=((double)(ed.QuadPart-st.QuadPart))/((double)freq.QuadPart);

     sprintf(Mes, "10MB ¿­¹ø À̵¿ Å×½ºÆ®¿¡ %.4fÃÊ °æ°úÇß½À´Ï´Ù.",gap);

 

     MessageBox(hWndMain,Mes,"¼Óµµ ÃøÁ¤ °á°ú",MB_OK);

     free(buf);

}

 

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     HDC hdc;

     PAINTSTRUCT ps;

     char Mes[]="¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» ´©¸£½Ê½Ã¿À";

 

     switch(iMessage) {

     case WM_LBUTTONDOWN:

          MemTest();

          return 0;

     case WM_PAINT:

          hdc=BeginPaint(hWnd, &ps);

          TextOut(hdc,10,10,Mes,lstrlen(Mes));

          EndPaint(hWnd, &ps);

          return 0;

     case WM_DESTROY:

          PostQuitMessage(0);

          return 0;

     }

     return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

 

¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯Çϸé MemTest ÇÔ¼ö¸¦ È£ÃâÇϴµ¥ ÀÌ ÇÔ¼ö´Â 10MBÀÇ ¸Þ¸ð¸®¸¦ À̵¿½ÃÅ°´Â µ¿ÀÛÀ» 10¹ø ¼öÇàÇÏ°í °æ°ú ½Ã°£À» Ãâ·ÂÇÑ´Ù. °á±¹ 100MBÀÇ ¸Þ¸ð¸®¸¦ À̵¿½ÃÅ°´Â ÀÛ¾÷À» ÇÏ´Â °Í°ú µ¿ÀÏÇÏ´Ù. ½ÇÇà °á°ú´Â CPU, ¸Þ¸ð¸®ÀÇ ¼Óµµ¿¡ µû¶ó ´Þ¶óÁö´Âµ¥ ³ªÀÇ ³ëÆ®ºÏ(P3-600 ½Ã½ºÅÛ)¿¡¼­ Å×½ºÆ®ÇØ º» °á°ú 0.87ÃÊ Á¤µµ°¡ °É·È´Ù. ºñ±³Àû ÃÖ½ÅÀÇ CPU¿¡¼­ Å×½ºÆ®ÇØ º» °á°ú´Â 0.19ÃÊ·Î ÈξÀ ´õ »¡¶ú´Âµ¥ ±×·¯°í º¸´Ï ³ëÆ®ºÏÀ» ¾÷±×·¹À̵åÇÒ ¶§°¡ µÈ °Í °°´Ù.

´ëÃæ 1ÃÊ°¡ Á¶±Ý ¾ÈµÇ´Â ½Ã°£ÀÌ °É·È´Âµ¥ ÀÌ °è»ê´ë·Î¶ó¸é 1MB¸¦ À̵¿ÇÏ´Â µ¥´Â ºÒ°ú 0.01Ãʵµ ¾È °É¸°´Ù´Â ¾ê±â´Ù. 100MB¶ó¸é »ç½Ç ±²ÀåÈ÷ Å« ¿ë·®Àε¥µµ »ý°¢º¸´Ù´Â ºü¸£´Ù. ¿Ö³ÄÇϸé memmove´Â CPU°¡ Çϵå¿þ¾î Â÷¿ø¿¡¼­ Áö¿øÇÏ´Â ¸í·ÉÀÌ¸ç ¾öû³ª°Ô °í¼ÓÀ¸·Î µ¿ÀÛÇϱ⠶§¹®ÀÌ´Ù. ÀÌ ÇÔ¼öÀÇ ³»ºÎ´Â C Äڵ嵵 ¾Æ´Ï°í ¾î¼Àºí¸® Äڵ嵵 ¾Æ´Ï¸ç CPU°¡ ¹Ù·Î ¾Ë¾ÆµéÀ» ¼ö ÀÖ´Â ÀÌÁø ±â°è¾î Äڵ带 ¹Ù·Î È£ÃâÇϵµ·Ï µÇ¾î ÀÖÀ¸¸ç ±× ¼Óµµ°¡ °¨È÷ »ó»óÀ» ºÒÇãÇÒ Á¤µµ´Ù. ÃÖ½ÅÀÇ CPU¿¡¼­´Â 1ÃÊ¿¡ 50¾ï °³ÀÇ ºñÆ®¸¦ ´Ü ÇÑ ¹ø¿¡ À̵¿½Ãų ¼ö ÀÖ´Â Á¤µµÀÌ´Ï ±× ¼Óµµ°¡ ¾î´À Á¤µµÀÎÁö °¨ÀÌ ¿Ã °ÍÀÌ´Ù.

10MBÀÇ ¹®¼­¸¦ ÆíÁýÇÏ°í ÀÖ´Ù¸é 0.1ÃÊ°¡ °É¸®´Âµ¥ ÀÌ Á¤µµ¸é ´À¸®´Ù°í ´À²¸Áú °ÍÀÌ°í 50MB ÆíÁý½Ã´Â 0.5ÃÊ°¡ °É¸®¹Ç·Î µµÀúÈ÷ ¸ø¾µ ÇÁ·Î±×·¥À̶ó°í »ý°¢ÇÒ °ÍÀÌ´Ù. ŸÀÌÇÎ ¼Óµµ°¡ ºü¸¥ »ç¶÷Àº Æò±Õ ºÐ´ç 600Ÿ Á¤µµ¸¦ Ä¡¹Ç·Î »ðÀÔ ½Ã°£Àº ÃÖ¼ÒÇÑ 0.1ÃÊ ¹Ì¸¸À̾î¾ß ÇÑ´Ù. º¸Åë ÆíÁýÆÄÀÏÀº 1MB ¹Ì¸¸ÀÎ °æ¿ì°¡ ´ëºÎºÐÀÌ°í 100KB Á¤µµÀÇ ÆÄÀÏÀº ÇÑ ¹ø Å°º¸µå¸¦ Ä¥ ¶§¸¶´Ù 1/1000Ãʸ¦ ¼Ò¸ðÇϹǷΠÀÌ·± ÀÛÀº ÆÄÀÏÀ» ÆíÁýÇÒ ¶§´Â ¹«½ÃÇصµ µÉ¸¸ÇÑ ½Ã°£ÀÌ´Ù.

µÎ ¹æ¹ýÀº °¢°¢ÀÇ Àå´ÜÁ¡À» °¡Áö°í Àִµ¥ °¢ ¹æ¹ýÀÇ ¼º´ÉÀº ÆíÁýÇÒ ÆÄÀÏÀÇ Å©±â¿Í ÇÔ¼ö °ü°è¸¦ °¡Áö°í ÀÖ´Ù. ÆÄÀÏÀÌ Ä¿Áú¼ö·Ï ´ÜÀÏ ¹öÆÛ ¹æ¹ýÀÌ ºÒ¸®Çϸç ÀÛÀ¸¸é ¿ÀÈ÷·Á ÁÙ´ÜÀ§ ¹öÆÛ ¹æ¹ýÀÌ ´õ ¹ø°Å·Ó´Ù. Á¤È®ÇÏ°Ô ÃøÁ¤À» ÇØ º» °ÍÀº ¾Æ´ÏÁö¸¸ ÆíÁýÆÄÀÏÀÇ Å©±â¿Í µÎ ¹æ¹ýÀÇ ¼º´ÉÀº ´ëü·Î ´ÙÀ½°ú °°Àº ÇÔ¼ö °ü°è¸¦ ÀÌ·ê °ÍÀÌ´Ù.

¾î¶² ¹æ¹ýÀ̳ª ÆÄÀÏ Å©±â°¡ Ä¿Áö¸é ¼º´ÉÀÌ ¶³¾îÁö´Â °ÍÀº ¾î¿ ¼ö ¾ø´Â ÀÏÀÌ°í ´Ù¸¸ ¹Ýºñ·Ê Á÷¼±ÀÇ ±â¿ï±â°¡ ´Ù¸¦ »ÓÀÌ´Ù. ÀÌ ±×·¡ÇÁ »ó¿¡¼­ µÎ ¹æ¹ýÀÌ µ¿ÀÏÇÑ ¼º´ÉÀ» ³»´Â ¥áÁ¡À» °¡Á¤ÇÒ ¼ö Àִµ¥ ÀÌ Á¡ÀÇ À§Ä¡´Â ¾îµðÂë µÉ±î? ¾Æ¸¶ 10MB~30MB »çÀÌ°¡ µÇÁö ¾ÊÀ»±î »ý°¢µÇ´Âµ¥ ÀÌ Á¡Àº CPU°¡ ´õ »¡¶óÁö¸é Á¡Á¡ µÚ·Î À̵¿ÇÏ´Â °æÇâÀÌ ÀÖ´Ù. ±×¸®°í CPU´Â È®½ÇÈ÷ »¡¶óÁö°í ÀÖ´Ù.

¿©·¯ °¡Áö ºÐ¼®°ú °ËÅ並 ÇÑ °á°ú ApiEdit´Â ´ÜÀÏ ¹öÆÛ ¹æ¹ýÀ» äÅÃÇϱâ·Î Çß´Ù. ¿Ö³ÄÇÏ¸é ¹«¾ùº¸´Ù ³í¸®°¡ °£´ÜÇÏ°í Á÷°üÀûÀ̱⠶§¹®ÀÌ´Ù. ¶ÇÇÑ ½Ç½ÀÀ» À§ÇÑ ÇÁ·ÎÁ§Æ®¿¡¼­ µð¹ö±ëÀ» ÆíÇÏ°Ô ÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù´Â Á¡µµ °í·ÁµÇ¾ú´Ù. ¼­½ÄÀÌ ¾ø´Â ÅؽºÆ® ÆíÁý±â¶ó¸é ´ÜÀÏ ¹öÆÛ¸¦ ¼±ÅÃÇÏ´Â °ÍÀÌ Å¹¿ùÇÑ ¼±ÅÃÀÎ °Í °°´Ù. ApiEdit°¡ ½Ç½ÀÀ» À§ÇÑ ¿¹Á¦À̱⠶§¹®¿¡ ÀÌ ¹æ¹ýÀ» ¼±È£ÇÏ´Â °ÍÀº ¾Æ´Ï¸ç ½ÇÁ¦ Á¦Ç°À» ¸¸µç´Ù ÇÏ´õ¶óµµ ´ÜÀÏ ¹öÆÛ°¡ ÈξÀ ´õ ÁÁÀº ¹æ¹ýÀÌ´Ù.

³í¸®°¡ °£´ÜÇØÁø´Ù´Â °ÍÀº Äڵ尡 ´ú º¹ÀâÇØÁø´Ù´Â ¾ê±â°¡ µÇ°í ÀÌ´Â °ð °³¹ß ºñ¿ëÀ» °¨¼Ò½ÃÄÑ °³¹ß ±â°£À» ´ÜÃà½ÃÅ°´Â È¿°ú¸¦ °¡Á®¿Â´Ù. ¹Ù²Ù¾î ¾ê±âÇÏÀÚ¸é µ¿ÀÏÇÑ ºñ¿ëÀ» µé¿´À» ¶§ ÁÙ´ÜÀ§ ¹öÆÛ¸¦ »ç¿ëÇÏ´Â ¹æ½Äº¸´Ù´Â ´õ ¸¹Àº ±â´ÉÀ» ¾ÈÁ¤ÀûÀ¸·Î Á¦°øÇÒ ¼ö ÀÖ´Ù´Â ¾ê±â´Ù.

±×·¯³ª ±×·¸´Ù°í Çؼ­ ÁÙ´ÜÀ§ ¹öÆÛ ¹æ¹ýÀÌ ÁÁÁö ¾Ê´Ù´Â ¶æÀº ¾Æ´Ï´Ù. Á» º¹ÀâÇصµ Àß ±¸ÇöÇسõÀ¸¸é È®À强Àº È®½ÇÈ÷ ¿ì¼öÇÏ´Ù. ¼­½Ä°ú ±âŸ º¹ÀâÇÑ °³Ã¼µéÀÌ Æ÷ÇԵǴ ¿öµåÇÁ·Î¼¼¼­¶ó¸é ´ç¿¬È÷ ÁÙ´ÜÀ§ ¹öÆÛ¸¦ ¼±ÅÃÇÏ´Â °ÍÀÌ ÁÁÀ» °ÍÀÌ´Ù.

Áö±Ý±îÁö ¹ßÇ¥µÈ ´ëºÎºÐÀÇ ÆíÁý±âµéÀº ÁÙ´ÜÀ§ ¹öÆÛ ¹æ½ÄÀ¸·Î ÀÛ¼ºµÇ¾î ÀÖ´Ù. ¿Ö³ÄÇÏ¸é ±×·± ÆíÁý±â¸¦ ¸¸µé±â ½ÃÀÛÇÒ ÁîÀ½¿¡´Â CPU ¼Óµµ°¡ ÇüÆí¾ø¾ú°í µû¶ó¼­ ÆÄÀÏÀÌ Á¶±Ý¸¸ Ä¿Á®µµ ´ÜÀÏ ¹öÆÛ ¹æ½ÄÀ¸·Î´Â Á¦ ¼Óµµ¸¦ ³¾ ¼ö°¡ ¾ø¾ú´Ù. ÇÏÁö¸¸ ApiEdit´Â ´Ê°Ô ¸¸µé¾îÁø °ü°è·Î °í¼º´É CPU¸¦ ¹Ï°í °ú°¨ÇÏ°Ô ´ÜÀÏ ¹öÆÛ ¹æ½ÄÀ» äÅÃÇÏ¿´´Ù.

ÀÌ ¼±ÅÃÀÌ ¿Ç¾Ò´ÂÁö ¾Æ´ÑÁö´Â ÃÖÁ¾ Á¦Ç°ÀÇ ¼º´ÉÀ» Å×½ºÆ®ÇØ ºÁ¾ß ¾Ë ¼ö ÀÖÀ¸¸ç ¿À·ÎÁö °á°ú·Î¼­ Æò°¡µÇ¾î¾ß ÇÑ´Ù. ¾î·µç µÎ ¹æ½ÄÀ» ´Ù ¼±ÅÃÇÒ ¼ö´Â ¾ø±â ¶§¹®¿¡ Ãʱ⿡ ÀÌ·± ¾î·Á¿î °áÁ¤À» ³»¸®Áö ¾ÊÀ» ¼ö ¾øÀ¸¸ç ÇÑ ¹ø ³»¸° ½ÅÁßÇÑ °áÁ¤¿¡ ´ëÇؼ­´Â ½º½º·Î È®½ÅÀ» °¡Áö°í ¹Ð¾î ºÎÄ¡´Â ¼ö¹Û¿¡ ¾ø´Ù.