Windows on Windows
此條目翻譯自其他語言維基百科,需要相關領域的編者協助校對翻譯。 |
Windows on Windows,常指16位WOW[1]、WOWEXEC[2]或簡稱WOW[3]。它是一個Microsoft Windows NT操作系統家族中32位版本的兼容層,目的是擴展NTVDM以為運行為Windows 3.x編寫的舊式Win16應用程序提供有限支持。64位系統上的「WOW」通常指在64位Windows上支持32位應用程序的WOW64。
其他名稱 | WOW |
---|---|
開發者 | 微軟 |
首次發布 | 1993年 |
操作系統 | Microsoft Windows |
類型 | 兼容層 |
許可協議 | 專有商業軟件 |
背景
許多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)舊的16位API到較新的32位環境,以提供16位指針、內存模型和地址空間的支持。
所有16位應用程序默認使用共享內存空間運行在一個DOS虛擬機中。但它們也可以被配置為使用單獨的內存空間運行,這種設置下每個16位進程都有自己的專用的虛擬機。單獨的內存空間可以增加應用程序穩定性,防止16位應用程序互相干擾,但也增加16位IPC和使用更多內存。
Win16子系統在32位版本的Windows NT, 2000, XP, Server 2003, Vista, Server 2008, 7和8中可用。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 95和Windows 98內核,WIN.COM文件模擬了一個Windows 3.x內核中的NTVDM,在Windows NT上運行16位基於DOS的Windows應用程序。
墊片
應用程序的兼容性問題,不僅有長文件名、多用戶和最小特權概念的問題,其他部分也可能導致某些應用程序無法正常運作,例如錯誤地在NTFS安全情況下認為對整個文件系統有寫入權限。
在Windows 95操作系統設計時,一項關鍵要求就是文件系統要保持對8.3文件名的向後兼容,以允許舊款應用程序繼續在平台上正常運行。因而Windows 95和之後的操作系統在文件分配表(FAT)中支持一個兼容性模式,同時存儲長文件名和短文件名。
另外,試圖直接訪問硬件的舊款應用程序在用戶模式中不能這樣做。如果DOS和Windows 9x的系統配置文件在Windows NT為基礎的內核中不存在,舊款應用程序也可能失敗。因此0字節的AUTOEXEC.BAT和CONFIG.SYS文件在後續的、不使用它們的操作系統上繼續存在。
在之後的Windows版本中,有相當多的墊片以攔截和修改舊款應用程序的API調用。[6]這些修復在不斷更新,以解決仍在流行的舊款應用程序的問題。[7]
參見
參考資料
- ^ Starting 16-Bit WOW Subsystem on Windows NT Server. Microsoft. [11 Feb 2013]. (原始內容存檔於2007-05-09).
- ^ Disabling the MSDOS and WOWEXEC Subsystems on Terminal Server. Microsoft. [13 Feb 2013]. (原始內容存檔於2007-10-23).
- ^ WOW Environment Remains in Memory After Quitting 16-Bit Program. Microsoft. [13 Feb 2013]. (原始內容存檔於2007-10-23).
- ^ Windows NT Subsystems and Associated Files. [13 Feb 2013]. (原始內容存檔於2007-03-16).
- ^ PRB: Relocation of Ntvdm.exe Fails on Multiprocessor Computers. Microsoft. [11 Feb 2013]. (原始內容存檔於2009-02-22).
- ^ Application Compatibility. Microsoft. [11 Feb 2014]. (原始內容存檔於2017-09-10).
- ^ Application Compatibility Update for Windows 7 and Windows Server 2008 R2: August 2010. Microsoft. [11 Feb 2013]. (原始內容存檔於2015-02-22).
外部連結
- Windows NT子系統(英文)
- 什麼是NTVDM和WOW?(英文)
- 監測16位Windows應用程序(英文)
- 優化Windows 7如何運行16位和MS-DOS的程序 (頁面存檔備份,存於網際網路檔案館)(英文)