ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Win32
    Platform/메모리 2009. 2. 10. 21:30
    MmMapLockedPages() // ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL) or ASSERT(KeGetCurrentIrql() <= APC_LEVEL)
    MmUnmapLockedPages() // ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL) or ASSERT(KeGetCurrentIrql() <= APC_LEVEL)

    IoAllocateMdl() // ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL)
    MmBuildMdlForNonPagedPool() // ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL)
    IoFreeMdl() // ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL)

    MmGetSystemAddressForMdl() // ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL)

    MmMapIoSpace() // ASSERT(KeGetCurrentIrql() == PASSIVE_LEVEL)
    MmUnmapIoSpace() // ASSERT(KeGetCurrentIrql() == PASSIVE_LEVEL)

    ==

    가상 메모리
    VirtualAlloc() // 페이지 단위 malloc()?
        MEM_COMMIT

        PAGE_READWRITE
    VirtualFree()
        MEM_RELEASE
    VirtualLock()
    VirtualUnlock(()


    Windows Heap
    프로세스의 디폴트 힙으로의 접근은 직렬화된다.

    추가의 힙을 사용
        성능
        할당의 효율
        디버깅 목적으로 데이터 컴포넌트를 격리

    하나의 힙으로 충분한 경우라면 C라이브러리 메모리 관리 함수들(malloc, free, calloc, realloc)을 사용하면 된다.
    프로세스 힙을 파괴해서는 안된다.

    HeapCreate()
    HEAP_NO_SERIALIZE
    HEAP_GENERATE_EXCEPTIONS
    HeapDestroy()
    C++ 객체 인스턴스들의 소멸자가 호출되지 않는다.
    HeapLock() // 동기화
    HeapUnlock()
    HeapAlloc()    // malloc() - <stdlib.h>
    HEAP_ZERO_MEMORY
    HEAP_GENERATE_EXCEPTIONS
    HeapRealloc()    // realloc()
    HEAP_ZERO_MEMORY
    HEAP_GENERATE_EXCEPTIONS
    HeapFree()    // free
    GetProcessHeap()
    GetProcessHeaps()
    HeapSize()
    HeapCompact()
    HeapValidate()
    HeapWalk()

    GlobalAlloc()
    GMEM_MOVEABLE
    GMEM_FIXED
    GMEM_ZEROINIT

    GHND
    GPTR
    GlobalFree()
    LocalAlloc()
    GlobalLock()
    GlobalUnlock()
    메모리 맵드 파일(memory-mapped file)
    파일 매핑 객체
    CreateFileMapping()
    OpenFileMapping()
    MapViewOfFile()
    MapViewOfFileEx()
    UnMapViewOfFile()
    FlushViewOfFile()

    TLS
    TlsAlloc()
    TlsFree()
    TlsSetValue()
    TlsGetValue()


    참조 사이트:
Designed by Tistory.