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的程式 (頁面存檔備份,存於網際網路檔案館)(英文)