Windows 遊戲開發中虛擬位址空間的使用方式

文章翻譯 文章翻譯
文章編號: 940105 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文說明 Windows 遊戲開發中虛擬位址空間的使用方式。本文將告訴您,在現代的作業系統 (例如 Windows Vista) 執行應用程式時可能發生的問題。本文包含有關可解決部分問題之更新的資訊。如需有關這些問題的詳細資訊,請造訪下列 Microsoft 網站:
http://www.microsoft.com/taiwan/whdc/device/display/WDDM_VA.mspx

其他相關資訊

在現代的作業系統 (例如 Windows Vista) 上,應用程式會在其私用虛擬位址空間內執行。一般而言,如果是 32 位元的應用程式,虛擬位址空間的大小會固定在 2 GB。可用虛擬位址空間的大小和電腦有多少實體記憶體無關。

每個記憶體配置、檔案對應或應用程式所載入的程式庫,都會取用這個虛擬位址空間中的空間。當應用程式取用所有的虛擬位址空間時,任何其他的這類作業會失敗。雖然所有應用程式應該都是以程式碼編寫來處理記憶體配置失敗,但是許多應用程式並未正確地從這類失敗中復原。因此,程式從這類失敗復原之後,可能變得不穩定或停止回應。

現有的遊戲和其他圖形應用程式,通常會為應用程式所使用的視訊記憶體資源複本配置虛擬記憶體。如果視訊記憶體的內容遺失,應用程式就會使用這個複本快速地還原顯示畫面。例如,如果使用者按下 ALT+TAB 或讓電腦處於待命狀態,應用程式就會使用這個複本。一般而言,在應用程式建立 Managed 資源時,DirectX 執行階段會代替應用程式管理複本。然而,應用程式也可以自行管理複本。複本所使用的虛擬記憶體,與應用程式配置的視訊記憶體資源直接成正比。

現代的圖形處理單元 (GPU) 可以具有 512 MB 以上的視訊記憶體。嘗試運用這麼大量視訊記憶體的應用程式,可以將大部分的虛擬位址空間用於其視訊資源的記憶體中複本。在 32 位元系統上,這類應用程式可能耗用所有可用的虛擬位址空間。

有了 Windows Vista 中引入的 DirectX 10 和 Windows 顯示驅動程式模型 (WDDM),應用程式就再也不需要在系統記憶體中維護資源複本。相反地,視訊記憶體管理員會確定,顯示轉換之間會維護每個視訊記憶體配置的內容。基於相容性的理由,Windows Vista 會為比 DirectX 10 舊的 DirectX 版本模擬「裝置遺失」,以確定沒有任何應用程式可見的 API 行為有所變更。

為了虛擬化視訊記憶體,Windows Vista 中的視訊記憶體管理員會指派虛擬位址範圍給每個視訊記憶體資源。這個範圍在概念上類似於應用程式可能建立的複本。然而,視訊記憶體管理員管理處理程序的效率優於應用程式。視訊記憶體管理員使用虛擬位址範圍,以處理轉換或視訊記憶體的過多已認可頁數。然而,在擁有充足視訊記憶體的系統上,通常未使用此虛擬位址範圍。只要這個虛擬位址範圍保持未使用,就不會配置實體記憶體給這個虛擬位址範圍。相反地,一定會使用實體記憶體,以完整填入較舊驅動程式型號中維護的系統記憶體複本。

如果應用程式建立視訊資源的記憶體中複本,或者使用 DirectX 9 (含) 以前版本,虛擬位址空間就會包含 WDDM 視訊記憶體管理員的虛擬化範圍和應用程式的複本。使用比 DirectX 10 舊的圖形 API 並鎖定有大量視訊記憶體的 GPU 的應用程式,會輕易地耗用其虛擬位址空間。

為了解決這個問題,Microsoft 正著手變更視訊記憶體管理員維護視訊記憶體資源內容的方式。進行這項變更之後,每個虛擬化的配置就不需要使用永久的虛擬位址範圍。有了這個新方法,只有建立為 "lockable" 的配置才會取用應用程式虛擬位址空間的空間。不是建立為 "lockable" 的配置不會取用空間。這個方法大幅地減少所使用的虛擬位址空間。因此,應用程式可以透過大型的視訊記憶體設定執行,而不會達到限制。

雖然這個方法會減少取用虛擬位址,但是不會消除 2 GB 的虛擬位址空間限制,而許多應用程式很快就會達到這個限制。最後,應用程式會因為其他原因而達到限制。

更新資訊

您可以從「Microsoft 下載中心」下載下列檔案:

Windows Vista 32 位元版本

摺疊此圖像展開此圖像
下載
立即下載 940105 套件。

Windows Vista 64 位元版本

摺疊此圖像展開此圖像
下載
立即下載 940105 套件。

如需有關如何下載 Microsoft 支援檔案的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
119591 如何從線上服務取得 Microsoft 支援檔案
Microsoft 已對這個檔案做過病毒掃描。Microsoft 是利用發佈當日的最新病毒偵測軟體來掃描檔案,看看有沒有病毒感染。檔案會儲存在安全的伺服器上,以避免任何未經授權的更改。

先決條件

如果您執行的 Windows Vista 電腦具有數張圖形卡,建議您先安裝「Microsoft 知識庫」文件 936710 所述的 Hotfix。 如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
936710 When a DirectX 10 application runs on a Windows Vista-based computer that has multiple graphics cards, the computer does not use the secondary graphics card

重新啟動需求

套用這個更新之後,您必須重新啟動電腦。

更新取代資訊

這個更新不會取代任何先前發行的更新。

檔案資訊

此更新的英文版具有下列表格中所列的檔案屬性 (或更新檔案屬性)。這些檔案的日期和時間是以 Coordinated Universal Time (UTC) 表示。當您檢視檔案資訊時,它會轉換為當地時間。如果要查看 UTC 與當地時間的差異,請使用 [控制台] 中 [日期和時間] 工具的 [時區] 索引標籤。
Windows Vista 32 位元版本
摺疊此表格展開此表格
檔案名稱檔案版本檔案大小日期時間平台
Cdd.dll6.0.6000.2064836,86427-Jul-200702:17x86
Dxgkrnl.sys6.0.6000.20648621,05627-Jul-200701:07x86
Update.mum不適用1,78827-Jul-200717:27不適用
X86_5e2dac6229b5926b0c74da835150f1a5_31bf3856ad364e35_6.0.6000.20648_none_42a29c9b7959cc08.manifest不適用69627-Jul-200717:27不適用
X86_microsoft-windows-lddmcore_31bf3856ad364e35_6.0.6000.20648_none_aa48b77dff9d11aa.manifest不適用8,95827-Jul-200717:27不適用
Windows Vista 64 位元版本
摺疊此表格展開此表格
檔案名稱檔案版本檔案大小日期時間平台
Amd64_ce07f9e62de28926f56e50610267ed82_31bf3856ad364e35_6.0.6000.20648_none_ff82e7b15cf29216.manifest不適用70027-Jul-200717:27不適用
Amd64_microsoft-windows-lddmcore_31bf3856ad364e35_6.0.6000.20648_none_06675301b7fa82e0.manifest不適用9,22327-Jul-200717:31不適用
Cdd.dll6.0.6000.2064847,10427-Jul-200703:13x64
Dxgkrnl.sys6.0.6000.20648878,08027-Jul-200701:19x64
Update.mum不適用1,78827-Jul-200717:27不適用

屬性

文章編號: 940105 - 上次校閱: 2007年10月29日 - 版次: 3.1
這篇文章中的資訊適用於:
  • Windows Vista 家用入門 64 位元版
  • Windows Vista 家用進階 64 位元版
  • Windows Vista 商用入門 64 位元版
  • Windows Vista 商用進階 64 位元版
  • Windows Vista 旗艦 64 位元版
  • Windows Vista Starter
  • Windows Vista 家用入門版
  • Windows Vista 家用進階版
  • Windows Vista 商用入門版
  • Windows Vista 商用進階版
  • Windows Vista 旗艦版
關鍵字:?
kbvistasp1fix atdownload kbfix kbexpertiseadvanced kbwinvistapostrtmfix kbqfe kbhotfixserver KB940105
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com