Windows on Windows

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
Windows on Windows
其他名稱WOW
開發者微軟
首次發佈1993年
作業系統Microsoft Windows
類型相容層
許可協定專有商業軟件

Windows on Windows,常指16位元WOW[1]WOWEXEC[2]簡稱WOW[3]。它是一個Microsoft Windows NT作業系統家族中32位元版本的相容層,目的是擴充NTVDM英語Virtual_DOS_machine以為執行為Windows 3.x編寫的舊式Win16應用程式提供有限支援。64位元系統上的「WOW」通常指在64位元Windows上支援32位元應用程式的WOW64

背景

許多16位元Windows(Win16)舊式應用程式可以無需更改執行在較新的32位元Windows版本。原因是設計者允許應用程式開發者在行業從Windows 3.1x過渡到Windows 95及更新版本期間糾正他們的應用程式,在所有客戶使用的應用程式被妥善解決前,不限制客戶升級到新版本的作業系統。

Windows 9x系列的作業系統的根基採用DOS, 本質上採用16/32位元混合的系統,底層的作業系統不完全是32位元,因此原生執行Win16應用程式不需要特殊的仿真。而基於Windows NT的作業系統與Windows 9x的結構有很大不同,需要一個更複雜的解決方案。為了使16位元應用程式能未經修改地執行在基於NT的32位元Windows系統上(少許執行時限制),有兩個獨立策略被採用:形實替換(thunking)和墊片(shimming)。

形實替換

作業系統的WOWEXEC子系統會形實替換(thunks英語Thunk_(compatibility_mapping))舊的16位元API到較新的32位元環境,以提供16位元指標、記憶體模型和地址空間的支援。

所有16位元應用程式預設使用共用記憶體空間執行在一個DOS虛擬機器英語Virtual_DOS_machine中。但它們也可以被組態為使用單獨的記憶體空間執行,這種設置下每個16位元處理程序都有自己的專用的虛擬機器。單獨的記憶體空間可以增加應用程式穩定性,防止16位元應用程式互相干擾,但也增加16位元IPC和使用更多記憶體。

Win16子系統在32位元版本的Windows NT, 2000, XP, Server 2003, Vista, Server 2008, 78中可用。64位元版本的Windows中也有它,但不包括WoW Win16支援的子系統,因此無法執行Win16應用程式,也沒有提供NTVDM模擬器。DOS和16位元Windows應用程式因此不能執行在64位元版本的Windows上,除非使用第三方模擬軟件(例如DOSBox)或虛擬機器軟件執行任何32位元Windows、Windows XP Mode或DOS本身。

Windows NT系統中的WOWEXEC.EXE處理程序用於輔助Windows-on-Windows。[4][5]此外Windows-on-Windows還模擬了Windows 95Windows 98內核,WIN.COM檔案模擬了一個Windows 3.x內核中的NTVDM英語NTVDM,在Windows NT上執行16位元基於DOS的Windows應用程式。

墊片

應用程式的相容性問題,不僅有長檔名、多使用者和最小特權概念的問題,其他部份也可能導致某些應用程式無法正常運作,例如錯誤地在NTFS安全情況下認為對整個檔案系統有寫入權限。

在Windows 95作業系統設計時,一項關鍵要求就是檔案系統要保持對8.3檔名的向下相容,以允許舊款應用程式繼續在平台上正常執行。因而Windows 95和之後的作業系統在檔案分配表(FAT)中支援一個相容性模式,同時儲存長檔名和短檔名。

另外,試圖直接訪問硬件的舊款應用程式在使用者模式中不能這樣做。如果DOS和Windows 9x的系統設定檔案在Windows NT為基礎的內核中不存在,舊款應用程式也可能失敗。因此0位元組的AUTOEXEC.BATCONFIG.SYS英語CONFIG.SYS檔案在後續的、不使用它們的作業系統上繼續存在。

在之後的Windows版本中,有相當多的墊片以攔截和修改舊款應用程式的API呼叫。[6]這些修復在不斷更新,以解決仍在流行的舊款應用程式的問題。[7]

參見

參考資料

  1. ^ Starting 16-Bit WOW Subsystem on Windows NT Server. Microsoft. [11 Feb 2013]. (原始內容存檔於2007-05-09). 
  2. ^ Disabling the MSDOS and WOWEXEC Subsystems on Terminal Server. Microsoft. [13 Feb 2013]. (原始內容存檔於2007-10-23). 
  3. ^ WOW Environment Remains in Memory After Quitting 16-Bit Program. Microsoft. [13 Feb 2013]. (原始內容存檔於2007-10-23). 
  4. ^ Windows NT Subsystems and Associated Files. [13 Feb 2013]. (原始內容存檔於2007-03-16). 
  5. ^ PRB: Relocation of Ntvdm.exe Fails on Multiprocessor Computers. Microsoft. [11 Feb 2013]. (原始內容存檔於2009-02-22). 
  6. ^ Application Compatibility. Microsoft. [11 Feb 2014]. (原始內容存檔於2017-09-10). 
  7. ^ Application Compatibility Update for Windows 7 and Windows Server 2008 R2: August 2010. Microsoft. [11 Feb 2013]. (原始內容存檔於2015-02-22). 

外部連結