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

深入 SQL Server 2000 記憶體管理機制(二):大位址感知、PAE 與 AWE

     編輯:關於SqlServer

深入 SQL Server 2000 記憶體管理機制(二)

大位址感知應用程式

Windows 支援 /3GB 參數前,32 位元應用程式無法存取高位元已設定的指標。32 位元指標僅前 31 位可供用戶模式使用,最高位保留。部分開發者利用此位作其他用途(如標記指標類型),導致啟用 /3GB 時無法區分合法指標與自用標記指標。微軟在 WIN32 PE 檔案 Characteristics 欄位新增 IMAGE_FILE_LARGE_ADDRESS_AWARE 標誌位:啟用時,可執行檔標頭第 32 位被置位,告知 Windows 該程式能處理高位元已設定的指標。SQL Server 已啟用此標誌,故可在支援 /3GB 的 Windows 版本中使用該參數,自動擴展用戶模式位址空間。可用 DumpBin 或 ImageCfg 檢查此標誌。Visual C++ 透過 /LARGEADDRESSAWARE 連結器開關設定。

註: Windows 啟動時檢查可執行檔此標誌,但忽略 DLL。DLL 程式碼必須自行處理高位元已設定的指標。

實體記憶體擴展 (PAE)

Intel Pentium Pro 及後續處理器支援 PAE 記憶體映射模式,可存取 64 GB 實體記憶體。PAE 模式下,記憶體管理單元(MMU)仍執行頁目錄項(PDE)與頁表項(PTE),但新增頁目錄指標表層級。PDE 與 PTE 變為 64 位(非標準 32 位),定址寬度加倍。特殊版 Windows 核心(Ntkrnlpa.exe 單核、Ntkrnlpamp.exe 多核)整合於 Windows 2000 及後續版本。可在 BOOT.INI 加入 /PAE 參數啟用。

位址視窗擴展 (AWE)

AWE 允許 32 位元應用程式存取超過 4 GB 實體記憶體。概念上類似早期 DOS 時代的擴充記憶體管理:在可存取位址空間分配一個「視窗/區域」作為分段傳輸區,映射不可直接存取的實體記憶體。

使用 AWE 需:

  1. 呼叫 AllocateUserPhysicalPages API 分配可存取的實體記憶體位址,需 鎖定記憶體頁面 權限
  2. 呼叫 VirtualAlloc API 在可存取空間建立映射視窗

SQL Server 透過 AWE 將緩衝集區擴展至 4 GB 以上實體記憶體,僅資料快取頁面可使用 AWE 記憶體,需單獨追蹤管理。

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