虛擬地址擴展

虛擬地址擴展

虛擬地址擴展的一種常見的解釋是DEC公司開發的一種指令集架構及基於這個架構開發的計算機,英文縮寫為VAX。這裡虛擬地址擴展是指在32位系統下,進程或用戶在默認情況下只有2GB虛擬地址空間,這不能滿足進程或者要求,作業系統會將進程或用戶擴展到一個4GB虛擬地址空間。

基本介紹

  • 中文名:虛擬地址擴展
  • 外文名:virtual address extension
  • 1:定義
  • 2:DEC的VAX簡介
  • 3:套用
  • 4:工具
定義,DEC的VAX簡介,套用,工具,

定義

虛擬地址擴展的一種常見的解釋是DEC公司開發的一種指令集架構及基於這個架構開發的計算機,英文縮寫為VAX。這裡虛擬地址擴展是指在32位系統下,進程或用戶在默認情況下只有2GB虛擬地址空間,這不能滿足進程或者要求,作業系統會將進程或用戶擴展到一個4GB虛擬地址空間。例如 在 32 位 Windows 中,可用的虛擬地址空間總計為 2^32 位元組(4 GB)。通常較下的 2 GB 用於用戶空間,較上的 2 GB 用於系統空間。在 32 位 Windows 中,你可以指定(在啟動時)超過 2 GB 用於用戶空間。結果是系統空間可用的虛擬地址更少。可以將用戶空間的大小增至 3 GB,在這種情形下系統空間僅有 1 GB。

DEC的VAX簡介

VAX是DEC公司開發的一種指令集架構,並基於這個架構開發了一系列受歡迎和有影響力的電腦中的第一款。
其中VAX(Virtual Address eXtension)是DEC公司開發的中端伺服器計算機。它按照的是DEC1978年的PDP-11標準,它使用新的作業系統VMS。VAX包括三十二位的處理器和虛擬記憶體。過去VAX與惠普和IBM計算機在小型企業和大學-科研市場上競爭。早期,這種大小和價格範圍的計算機就市場說的小型計算機。現在,VAX和它的競爭者為使用客戶端/伺服器計算模式的商業網路銷售“伺服器”。DEC聲稱現在在使用中的VAX系統超過250000個。到1996年十月,這種模型的價格的範圍在為18000至46000美元。由於它是基於VMS的,所以它的作業系統叫OpenVMS。OpenVMS還可以通過一些特殊的軟體使得它能夠用在Windows NT的伺服器上。OpenVMS也支持開放標準的b攜帶型作業系統界面的命令集和C語言程式接口,使它能有效的用於VMS系統和UNIX系統。Eric S. Raymond指出運行在VAX BSD Unix的系統是黑客們一個最愛因為它特別大且友好的編程器彙編的指令集。

套用

地址視窗擴展(AWE)是一組擴展,允許應用程式快速操作大於4GB的物理記憶體。某些數據密集型應用程式(如資料庫管理系統和科學與工程軟體)需要訪問非常大的數據快取。在非常大的數據集的情況下,限制快取以適應應用程式的2GB的用戶地址空間是一個嚴重的限制。在這些情況下,快取太小,無法正常支持應用程式。
AWE通過允許應用程式直接處理大量記憶體,同時繼續使用32位指針來解決此問題。AWE允許應用程式的數據高速快取大於4GB(存在足夠的物理記憶體)。AWE在32位虛擬地址空間內使用該物理記憶體的各個部分的物理非分頁記憶體和視窗視圖。
AWE對如何使用這種記憶體有一些限制,主要是因為這些限制允許非常快速的映射,重新映射和釋放。快速記憶體管理對於這些潛在巨大的地址空間很重要。
為AWE分配的虛擬地址範圍與其他進程不共享(因此不可繼承)。實際上,同一進程中的兩個不同的AWE虛擬地址不允許映射相同的物理頁面。當記憶體被釋放時,這些限制可以快速重新映射和清除。
可以為AWE區域分配的物理頁面受到機器中存在的物理頁面數量的限制,因為該記憶體不會被分頁 - 它被鎖定,直到應用程式顯式釋放或退出。為給定進程分配的物理頁面可以映射到同一進程內的任何AWE虛擬區域。使用AWE的應用程式必須小心,不要占用太多的物理記憶體,從而導致其他應用程式過度頁面,或者由於缺少資源而導致新進程或執行緒的創建。使用 GlobalMemoryStatusEx函式來監視物理記憶體使用情況。
AWE虛擬地址總是被讀/寫,並且不能通過調用VirtualProtect進行 保護(也就是說,不可以指定唯讀存儲器,訪問記憶體,保護頁面等)。
AWE地址範圍不能用於緩衝圖形或視頻通話的數據。
AWE記憶體範圍不能被拆分,也不能刪除它。相反,當需要刪除時,整個虛擬地址範圍必須作為一個單元刪除。這意味著你必須指定MEM_RELEASE當調用 VirtualFree。
應用程式可以同時映射多個區域,前提是它們不重疊。
在仿真模式下不支持使用AWE的應用程式。也就是說,使用AWE函式的x86應用程式必須重新編譯才能在另一個處理器上運行,而大多數應用程式可以在其他平台上的模擬器下運行而不重新編譯。
該解決方案以非常一般,廣泛適用的方式解決物理記憶體問題。AWE的一些好處是:
定義了一小組新功能來操縱AWE記憶體。
AWE提供了非常快的重新映射功能。通過操作虛擬記憶體表而不是通過在物理記憶體中移動數據來完成重映射。
AWE提供了適合於處理器的頁面大小粒度(例如,x86上的4 KB),這對應用程式而言比大頁面更有用(例如x86上為2MB或4MB)。

工具

BCDEdit /set
BCDEdit /set 命令用於在 Windows Vista、Windows 7、WindowsServer 2008、Windows 8、Windows 8.1、Windows Server 2012 和 Windows Server 2012 R2 的 Windows 啟動配置數據存儲(BCD) 中設定啟動項選項值。使用 BCDEdit /set 命令可配置特定的啟動項元素,如核心調試器設定、記憶體選項,或者能夠啟用測試簽名核心模式代碼或載入備用硬體抽象層 (HAL) 和核心檔案的選項。要刪除啟動項選項,請使用 BCDEdit /deletevalue 命令。
小心 使用 BCDEdit 修改 BCD 需要具備管理許可權。使用BCDEdit /set 命令更改某些啟動項選項可能會導致你的計算機無法運行。作為替代方案,可以使用系統配置實用程式 (MSConfig.exe) 更改啟動設定。
注意 在設定 BCDEdit 選項之前,可能需要禁用或掛起計算機上的 BitLocker 和安全啟動。
參數
[{ID}]
{ID} 是與啟動項相關聯的 GUID。如果你未指定 {ID},則該命令會修改當前的作業系統啟動項。如果指定了啟動項,則與該啟動項相關聯的 GUID 必須用大括弧 { } 括起來。若要查看所有處於活動狀態的啟動項的 GUID 標識符,請使用 bcdedit /enum 命令。當前啟動項的標識符為 {current}。有關此選項的詳細信息,請使用以下命令:bcdedit /? ID
bootlog [ yes | no ]
啟用系統初始化日誌。此日誌存儲在 %WINDIR% 目錄中的 Ntbtlog.txt 檔案中。其中包括已載入和尚未載入的驅動程式的文本格式列表。
bootmenupolicy [ Legacy | Standard ]
定義系統將要使用的啟動選單類型。對於 Windows 8.1、Windows 8 和 Windows RT,默認類型為 Standard。對於 Windows Server 2012 R2、Windows Server 2012,默認類型為 Legacy。當選擇 Legacy 時,“高級”選項選單(F8) 將可用。當選擇 Standard 時,啟動選單將僅在特定條件下顯示:例如,發生啟動故障,從修復磁碟或安裝介質啟動,配置了多個啟動項或者手動配置計算機以使用高級啟動。當選擇 Standard 時,在啟動期間將忽略 F8 密鑰。 Windows 8 電腦快速啟動,因此沒有足夠的時間來按 F8。有關詳細信息,請參閱 Windows 啟動設定(包括安全模式)。
注意 該選項自 Windows8 和 Windows Server 2012 起開始推出。在下次啟動時還可以使用 onetimeadvancedoptions 來使用高級選項 (F8) 選單 (Legacy) 一次。
bootstatuspolicy policy
控制啟動狀態策略。啟動狀態 policy 可以為以下值之一:
DisplayAllFailures
如果存在啟動故障、關機故障或檢查點故障,則顯示所有錯誤。計算機將在重新啟動時故障轉移到 Windows 恢復環境。
IgnoreAllFailures
如果存在啟動故障、關機故障或檢查點故障,則忽略錯誤。計算機將在出現錯誤後嘗試正常啟動。
IgnoreShutdownFailures
如果存在關機故障,則僅忽略錯誤。如果存在關機故障,計算機將不會在重新啟動時自動故障轉移到 Windows 恢復環境。這是 Windows 8 的默認設定。
IgnoreBootFailures
如果存在啟動故障,則僅忽略錯誤。如果存在啟動故障,計算機將不會在重新啟動時自動故障轉移到 Windows 恢復環境。
IgnoreCheckpointFailures
如果存在檢查點故障,則僅忽略錯誤。如果存在檢查點故障,計算機將不會在重新啟動時自動故障轉移到 Windows 恢復環境。該選項自 Windows 8 和 Windows Server 2012 起開始推出。
DisplayShutdownFailures
如果存在關機故障,則顯示錯誤。如果存在關機故障,計算機將在重新啟動時故障轉移到 Windows 恢復環境。將忽略啟動故障和檢查點故障。該選項自 Windows 8 和 Windows Server 2012 起開始推出。
DisplayBootFailures
如果存在啟動故障,則顯示錯誤。如果存在啟動故障,計算機將在重新啟動時故障轉移到 Windows 恢復環境。將忽略關機故障和檢查點故障。該選項自 Windows 8 和 Windows Server 2012 起開始推出。
DisplayCheckpointFailures
如果存在檢查點故障,則顯示錯誤。如果存在檢查點故障,計算機將在重新啟動時故障轉移到 Windows 恢復環境。將忽略啟動故障和關機故障。該選項自 Windows 8 和 Windows Server 2012 起開始推出。
bootux [ disabled | basic | standard ]
控制啟動螢幕動畫。可用值為已禁用、基本和標準。
注意 Windows 8 和 WindowsServer 2012 中不支持這項功能。
disabledynamictick [ yes | no ]
啟用和禁用動態計時器刻度功能。該選項自 Windows 8 和 Windows Server 2012 起開始推出。
注意 此選項應僅用於調試。
disableelamdrivers [ yes | no ]
控制提前啟動反惡意 (ELAM) 驅動程式的載入。出於安全考慮,該作業系統載入程式會刪除此項。此選項只能通過 F8 選單觸發。用戶必須親自來到計算機前才能觸發此選項。
注意 此選項應僅用於調試。該選項自 Windows 8 和 Windows Server 2012 起開始推出。
forcelegacyplatform [ yes | no ]
強制作業系統假定存在 CMOS 和鍵盤控制器等傳統電腦設備。
注意 此選項應僅用於調試。 該選項自 Windows8 和 Windows Server 2012 起開始推出。
groupsize maxsize
設定單個處理器組中邏輯處理器的最大數量,其中 maxsize 是 2 的 0 到 6 次冪之間的任何次冪(包括 1(即 2 的 0 次冪)和 64(即 2 的 6 次冪))。默認情況下,處理器組中最多包含 64 個邏輯處理器。為了進行測試,你可以使用此啟動配置設定來替代計算機處理器組的大小和組成。處理器組為邏輯處理器數量大於 64 個的計算機提供支持。此啟動選項在 64 位版本的 Windows 7 和 Windows Server 2008 R2 及更高版本上可用。此啟動選項對於 32 位版本的 Windows7 不起作用。
如果你希望強制使用多個組,而且你的計算機上處於活動狀態的邏輯處理器數量為 64 或更少,請使用 groupsize 選項。有關使用此選項的詳細信息,請參閱用於測試多處理器組支持驅動程式的啟動參數。
groupaware [ on | off ]
強制驅動程式注意多處理器組環境中的多個組。使用此選項可以幫助顯示驅動程式和組件中的跨組不兼容性。處理器組為邏輯處理器數量大於 64 個的計算機提供支持。此啟動選項在 64 位版本的 Windows 7 和 Windows Server 2008 R2 及更高版本上可用。此啟動選項對於 32 位版本的 Windows7 不起作用。如果計算機上處於活動狀態的邏輯處理器數量為 64 或更少,則可以使用 groupaware 選項和 groupsize 選項測試驅動程式與多個組的兼容性。
groupaware on 設定可確保處理器在組 0 以外的組中啟動。這可增加驅動程式和組件之間跨組互動的可能性。此選項還修改傳統函式 KeSetTargetProcessorDpc、KeSetSystemAffinityThreadEx和 KeRevertToUserAffinityThreadEx 的行為,以便它們始終作用於活動邏輯處理器所在的編號最高的組。調用其中任何傳統函式的驅動程式應當更改為調用與這些函式相對應的組感知函式(KeSetTargetProcessorDpcEx、KeSetSystemGroupAffinityThread和 KeRevertToUserGroupAffinityThread)。

相關詞條

熱門詞條

聯絡我們