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). 

外部連結