首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

XP 使用者模式記憶體空間剖析(二):執行緒堆疊配置與守護頁機制

     編輯:關於C++

主執行緒堆疊

  • ESP 指標 0x00124914 落於區塊 0x00030000 ~ 0x00130000(1 MB)。
  • NT_TIB 中 StackBase = 0x00130000、StackLimit = 0x000EA000(初始認可範圍)。
  • 配置基址 0x00030000,總保留 1 MB(預設),分三區:
    1. 0x00030000 ~ 0x000EA000:MEM_RESERVE(未認可)。
    2. 0x000EA000 ~ 0x0012D000:MEM_COMMIT | PAGE_READWRITE(已認可可用)。
    3. 0x0012D000 ~ 0x00130000:MEM_COMMIT | PAGE_READWRITE | PAGE_GUARD(守護頁)。

守護頁擴展機制

當 ESP 向下增長觸及守護頁,引發 STATUS_GUARD_PAGE_VIOLATION 例外,系統自動將下一頁轉為可用、重設守護頁,實現堆疊按需擴展,直到達到保留上限(1 MB)。

其他執行緒堆疊

  • 執行緒 2:區塊 0x00C90000 ~ 0x00CC0000(256 KB),實際使用 0x3000。
  • 執行緒 3:區塊 0x00CD0000 ~ 0x00D00000(256 KB)。

三個堆疊區塊皆含 PAGE_GUARD 頁,與程式建立的三個執行緒一一對應。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved