ÇÁ·Î±×·¡¹Ö
ù ÆäÀÌÁö ·£´ý ±Û ȸ¿ø°¡ÀÔ ·Î±×ÀÎ
ºñ°ø°³ ¼Õ´Ô ¡¦ 2016-07-20 23:34:47
URL https://te31.com/rgr/view.php?id=study&no=1936 ¸ð¹ÙÀÏ È­¸é
¸Þ¸ð¸® ÇÒ´ç Áú¹®ÀÌ¿ä

VirtualAlloc À¸·Î ¿¹¾àÇÒ¶§
½ÃÀÛÁÖ¼Ò°¡ ½Ã½ºÅÛ ¿¹¾à ´ÜÀ§¿¡ Á¤·ÄµÇ´Âµ¥(À©µµ¿ì64KB)
ÀÌ°É ÀÌ°ÍÀÇ ¹è¼ö·Î ÇÏ°í ½Í¾î¿ä(128 256 512..)
±âº» ÀüÁ¦´Â ÁÖ¼ÒÀÇ ³¶ºñ°¡ ¾ø¾î¾ß Çϱ¸¿ä
(Reserve ÇÏ°í ¾È¾´´Ù´øÁö ÇÏ´Â)

ÀÏ´Ü ½ÃµµÇغ»°Ç ÀÌ·¡¿ä
#include "stdafx.h"

int main()
{
    const size_t system_alignment = 64 * 1024;
    const size_t need_alignment = system_alignment * 10;
    const size_t rate = need_alignment / system_alignment;
    const size_t need_size = need_alignment * 2;

    const size_t reserve_size = need_size + system_alignment * (rate-1);
    size_t pAll = (size_t)::VirtualAlloc(0, reserve_size, MEM_RESERVE, PAGE_NOACCESS);
    size_t pEND = pAll + reserve_size;
    size_t u = (size_t)pAll / need_alignment;
    size_t d = (size_t)pAll % need_alignment;

    std::cout << "Reserev " << (void*)pAll << std::endl;

    size_t s = u * need_alignment;
    if(d)
        s += need_alignment;
    size_t e = s + need_size;

    printf("[%p ~]///[%p ~]///[%p ~][END %p]\n", (void*)pAll, (void*)s, (void*)e, (void*)pEND);
    std::cout << "----------------\n";
    printf("FrontSize: %Iu %IuKB\n", s - pAll, (s - pAll)/1024);
    printf("Body: %Iu %IuKB\n", need_size, need_size/1024);
    printf("BackSize: %Iu %IuKB\n", pEND - e, (pEND - e)/1024);
    std::cout << "----------------\n";

    if(pAll != s)
    {
        auto p = ::VirtualFree((void*)pAll, s - pAll, MEM_RELEASE);
        std::cout << "Free Front " << p << std::endl;
    }
    if(pEND != e)
    {
        auto p = ::VirtualFree((void*)e, pEND - e, MEM_RELEASE);
        std::cout << "Free Back " << p << std::endl;
    }

    byte* pResult = (byte*)::VirtualAlloc((void*)s, need_size, MEM_COMMIT, PAGE_READWRITE);
    std::cout << "Commit " << (void*)pResult << std::endl;

    for(size_t i=0; i<need_size; i++)
    {
        *(pResult+i) = 0xff;
    }

    system("pause");

    // ¿¡·¯ Å×½ºÆ®
    for(size_t i=pAll; i<s; i++)
        *(byte*)i = 0xff;
    for(size_t i=e; i<pEND; i++)
        *(byte*)i = 0xff;





    system("pause");
    return 0;
}
¿ä¾àÇÏÀÚ¸é ½Ã½ºÅÛ¿¹¾à´ÜÀ§64KB¸¦ ÀüÁ¦·Î
¹èÀ² = ¿ä±¸ Á¤·Ä´ÜÀ§ /  64KB
¿¹¾à¿äûũ±â = ¿ä±¸¸Þ¸ð¸® + 64KB *(¹èÀ²-1)
¸Þ¸ð¸® ¿¹¾à¿äû(¿¹¾à¿äûũ±â)
°á°ú ÁÖ¼Ò¿¡¼­ ¿ä±¸µÈ Á¤·Ä´ÜÀ§ À§Ä¡¸¦ ã¾Æ
ÇÊ¿ä¾ø´Â ¾Õ, µÚ ÁÖ¼Ò¸¦ ¿¹¾àÇØÁ¦
À̰ǵ¥ ¿ª½Ã Release ´Â Reserve ÇÑ°Å Åë°·Î ÇØ¾ß Çؼ­ ½ÇÆÐÇϳ׿ä

°ü·Ã ÇÔ¼ö°¡ ÀÖÀ»°Å °°Àºµ¥ ãÁö¸¦ ¸øÇÏ°Ú¾î¿ä

±âŸ, _algined_malloc °°Àº °ÍÀº Á¤·Ä´ÜÀ§ 192KB ¿¡¼­ Æã ÇØ¿ä

Áú¹® | 1322¸íÀÌ Àоú¾î¿ä. 54.243.2.41

0
1 ºñ°ø°³ ¼Õ´Ô ¡¦ 2016-07-21 13:30:49
VirtualAllocÀº ½Ã½ºÅÛ ÆäÀÌÁö ´ÜÀ§·Î ÇÒ´çÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.
±×·¡¼­ Allocationµµ Alignmentµµ 1ÆäÀÌÁö(4096bytes) ´ÜÀ§·Î µÇ°Ô µË´Ï´Ù.
±×¸®°í ¸Þ¸ð¸® ÇÒ´ç ¸ÞÄ¿´ÏÁò »ó ÀϺθ¸ ÇØÁ¦Çϰųª´Â ºÒ°¡´ÉÇÕ´Ï´Ù.
5 ºñ°ø°³ ¼Õ´Ô ¡¦ 2016-07-22 12:59:59
¿¹¾à´ÜÀ§ ÇÒ´ç´ÜÀ§´Â ¾Ë°í ÀÖ½À´Ï´Ù
6 ºñ°ø°³ ¼Õ´Ô ¡¦ 2016-07-26 05:02:08
Áú¹®ÀÌ ¹º¼Ò¸°Áö Çϳªµµ ¸ð¸£°ÚÀ½
ÁÖ¼ÒÀÇ ³¶ºñ ¾ÈÇÏ´Â°Ç Å¬·¡½ÄÇÑ ¼­¹ö¾ÆÅ°ÅØÃÄÀÇ memory fragmentationÀ» ¹æÁöÇÏÀÚ´Â°Å¿Í °³³äÀÌ °°Àºµ¥
±×·²¶© ¹Ì¸® ÇÒ´çµÈ ¸Þ¸ð¸® Ç®À» ÀÌ¿ëÇϸé -- ¸Þ¸ð¸®¸¦ Å©°Ô ÅëÂ¥·Î Àâ¾Æ³õ°í ±× ¾È¿¡¼­ ÇÒ´ç ¹× ÇØÁ¦¸¦ ÀÚüÀûÀ¸·Î ÇÏ´Â°Í -- ¾î´ÀÁ¤µµ ÇؼҵDZä ÇÕ´Ï´Ù¸¸
¹» ÇÏ°í ½ÍÀºÁö¸¦ ¸ð¸£°Ú³×¿©
memory fragmentationÀ» ¾ÈÇغÃÀÚ ½ÇÁ¦·Î »ç¿ë ¾ÈÇÑ´Ù¸é page ¾Æ¿ô µÇ´Â°Í..
¸¸¾à ÁøÂ¥ ÇϵåÄÚ¾îÇÏ°Ô ¸Þ¸ð¸® °ü¸® ÇÏ°í½ÍÀ¸¸é WDM´Ü¿¡¼­ non paged memory »ç¿ëÇϰųª SysMemAlloc°è¿­À» ÀÌ¿ëÇØ ÇÇÁöÄà ¸Þ¸ð¸®¸¦ °Çµå¸®¸é µÇ´Âµ¥
±ÄÀÌ ÀÌ·² ÇÊ¿ä±îÁö ÀÖ³ª ½Í³×¿©
7 ºñ°ø°³ ¼Õ´Ô ¡¦ 2016-07-26 05:04:33
Âü°í·Î È¿À²ÀûÀ¸·Î °ü¸®ÇÏ°í ½Í´Ù°í Çؼ­ 'virtual' ¸Þ¸ð¸®ÀÇ ÁÖ¼Ò¸¦ °ü¸®ÇÏ´Â°Ç ¾Æ¹«·± ¼º´É»ó/È¿À²»ó À̵æÀÌ ¾ø¾î¿ä ¾îÂ÷ÇÇ Å« ÆäÀÌÁö¸¦ Àâ¾Æµµ Àß°³ ÂÉ°³Á®¼­ ¸Þ¸ð¸® ÄÁÆ®·Ñ·¯¿¡¼­ ¸Å¹ø Á¢±Ù½Ã ÁÖ¼Ò resolve Çչ̴ç
8 ºñ°ø°³ ¼Õ´Ô ¡¦ 2016-07-26 19:16:57
´Ù¸¥ ºÐµéÀº Áú¹®ÀÌ ¹ºÁö ÀÌÇØ ÇϽŰŠ°°Àºµ¥...

ÁÖ¼Ò ¿¹¾àÀ» 64KB°¡ ¾Æ´Ñ ±× ¹è¼ö¿¡ Á¤·ÄµÇ°Ô ÇÏ°í ½Í´Ù ÀÌ°Ô ¸ñÀûÀÌ°í
±×·± ±â´ÉÀ» Áö¿øÇÏ´Â ½Ã½ºÅÛ ÇÔ¼ö°¡ ÀÖ´ÂÁö°¡ Áú¹® ³»¿ëÀÔ´Ï´Ù

½ÇÁúÀû ÇÒ´çÀÎ 4KB ´ÜÀ§ ¹°¸®¸Þ¸ð¸® ¸ÅÇÎÀº Áú¹® ³»¿ëÀÌ ¾Æ´Õ´Ï´Ù
´ñ±ÛÀ» ÀÛ¼ºÇÏ½Ç ¼ö ¾ø½À´Ï´Ù.
(±ÇÇÑÀÌ ¾ø´Â ȸ¿ø·¹º§)
¸ñ·ÏÀ¸·Î
¡â ÀÌÀü±Û: ¿©·¯ DB Á¢¼Ó Åø Áß¿¡ ÁÁÀº°Å ÃßõÁ» ÇØÁÖ¼¼¿ä [5]
¡ä ´ÙÀ½±Û: ÅõÀÚ¹ÞÀ» ¹æ¹ý¾Æ½Ã´ÂºÐ ÀÖ³ª¿ä? [9]
ÀÌ¿ë¾à°ü | ±¤°í/Á¦ÈÞ | °³ÀÎÁ¤º¸Ãë±Þ¹æħ | ¹®ÀÇ/½Å°í | ¸ð¹ÙÀÏ TE31 | ¼­¹ö ºÎÇÏ : 12%
½Ç½Ã°£ Issue Ä¿¹Â´ÏƼ TE31 [¾ËÁö·Õ] ¨Ï 2002-2024
TOP arrow_upward