Windows 9x

Windows 9x是以Windows 95內核作為藍本的微軟作業系統的通稱。這包括了Windows 95、Windows 98的所有版本，以及2000年發布的Windows Me。

Windows 9x所使用的內部發行版本號為「4.x」，而之前基於MS-DOS的Windows版本則使用等於或小於3.9的版本號。Windows NT使用類似但獨立的、介於3.5與4.0的版本號。

Windows 9x聞名於它在桌面的使用；在1998年，Windows占有了作業系統市場份額的82%。

基於Windows 9x產品線的作業系統的大多數功能集與兼容性隨著Windows XP的發布，被合併到Windows NT中。

為了能與Windows 3.x、MS-DOS兼容，Windows 9x的內核裡混雜著16位元和32位元的程序碼。

## 歷史

### 95之前的Windows

微軟第一個獨立的Windows版本1.0發布於1985年11月20號，頗受歡迎。它最初定名為「Interface Manager」視窗管理員，但Rowland Hanson，微軟的銷售經理，說服公司，認為名稱「Windows」更為引人。Windows 1.0並非完整的作業系統，而是被擴展的MS-DOS「操作環境」，並擁有後者固有的缺陷與問題。

Windows 2.0現身於1987年12月9日。它使用真實模式的記憶體模型，受限於為1兆字節的最大記憶體。於此模式下，它可運行在使用286保護模式的另一個多任務管理器下，如DESQView。

發布於1990年的Windows 3.0讓Windows獲得了巨大的商業成功，提供了完整的 16 位色圖標與圖形的 EGA 與 VGA 支持。

微軟開發了Windows 3.1，對Windows 3.0做了些小改進，由於引入虛擬內存機制，Windows也讓使用者（相對於Windows/386）享有更好的MS-DOS程序多任務處理，也引入了多媒體支持。它也剔除了實模式支持，只可在80286或更高的處理器上運行。爾後，微軟又發布Windows 3.11，對1992年的Windows 3.1進行了修飾並加入Windows 3.1發布之後的所有補丁與更新。

同時，微軟繼續研發Windows NT。其主要的系統架構師為Dave Cutler，曾在Digital Equipment Corporation（後被康柏收購，現為惠普的一部分）擔任VMS的架構師。微軟於1988年8月聘請他以開發OS/2的後繼作業系統，但他卻創建了一個全新的作業系統。

微軟在會上宣布了將會為Windows NT及Windows 3.1的替換者（Windows 95，代號為Chicago）開發一個可統一兩者的作業系統。這個計劃的代號為Cairo。事後看來，Cairo是一個遠比微軟預期中更為艱難的項目。因此直到Windows XP時期產品線才統一成功。

### Windows 95

Windows 3.1之後，微軟開始研發一款以使用者為導向的、代號為Chicago的作業系統。Chicago的主要設計目標為支援像是OS/2和Windows NT那樣的32位搶占式多任務處理，儘管16位內核將會因向後兼容而被保留。首次推出於Windows NT中的Win32 API被選定為標準32位的程序接口，並通過一種被稱為「thunking」的技術對Win16兼容。設計全新的GUI雖然沒有在計劃之中，但很多Cairo的使用者界面元素都被借鑑並用在後來的發布之中（特別是即插即用-Plug and Play）。

微軟並沒有把所有的Windows代碼更換到32位；部分代碼因兼容、性能、開發時間等問題而保留一些16位代碼（儘管沒直接使用實模式）。再說，它必須滿足早期開發Windows的設計決策，以便向後兼容，即使這些設計決策不再適用於更現代的計算環境。這些因素最終開始影響作業系統的穩定與效率。

當Chicago發布於1995年8月24日時，微軟銷售部採用「Windows 95」作為Chicago的產品名字。

微軟接著發布五個不同版本的Windows 95：

- Windows 95 - 原始版本
- Windows 95 A - Windows 95 OSR1匯集到安裝程序中。
- Windows 95 B -（OSR2）包含了幾個重大的改進、Internet Explorer（IE）3.0和完全的FAT32文件系統支援。
- Windows 95 B USB -（OSR2.1）包含了基本的USB支持。
- Windows 95 C -（OSR2.5）包含了上述所有功能，再加上IE 4.0。這是最後一個Windows 95版本。

OSR2，OSR2.1及OSR2.5沒有對外發布；相反的，它們僅被售賣給那些會預裝系統在電腦中的OEM廠商。一些公司銷售預裝OSR2新的硬碟驅動器。

第一個Microsoft Plus!附加包是為了Windows 95而出售的。

### Windows 98

1998年6月25日，微軟發布了Windows 98。它包含了新的硬體驅動，並提供較完善的FAT32文件系統支援，允許硬碟分區大於在Windows 95可接受的2GB上限。Windows 98對USB的支援也遠優於僅提供基本USB功能的Windows 95的OEM版本。它還受爭議地集成了Internet Explorer瀏覽器到Windows GUI及Windows Explorer（Windows 資源管理器）中。

1999年，微軟發布了Windows 98的第二版，一個過渡性的發布。其值得注意的新特性有Internet Connection Sharing和較完善的WDM音訊及數據機支援。Internet Connection Sharing是一種網路地址轉換器，允許多個機器在同一個LAN上共享唯一的網際網路連接。Windows 98的第二版改進了原版的一些問題，支援了更多的硬體驅動。由於很多存於原版中的小問題得到了修復，Windows 98的第二版成為眾人眼中最穩定的Windows 9x發布——以致眾多評論員常說Windows 98的測試版本比Windows Me的最終版本穩定。

### Windows Me

於2000年9月，微軟推出了Windows Me（千禧年版本），被稱為擁有增強的多媒體及網際網路功能的Windows 98升級版。引入了系統還原機制，使使用者能在系統故障的情況下還原系統到之前「已知良好」的狀態。Windows Movie Maker也在這時推出。

Windows Me被認為是一個在Windows 98與Windows XP之間臨時過渡性的、為期一年的短期項目。Windows Update網站為舊版Windows提供了很多相關新特性的更新下載。因此，Windows Me不被認為是一個在Windows 95或98產品線上的獨立作業系統。

因為頻繁的死機和崩潰，Windows Me的穩定性與可靠性常被人詬病。一篇《PC World》所載的文章為Windows Me取名為「Mistake Edition」（錯誤版本），並把它列為「Worst Tech Products of All Time」（史上最差的科技產品）的第四名。

由於使用者無法像之前的Windows 9x版本那樣容易啟動進入MS-DOS模式，造成大量使用者快速學會破解Windows Me安裝程序以制定出所需服務。

### 衰落

Windows 2000的發布標誌著介於Windows 9x系列與Windows NT系列的使用者體驗轉換。9x受困於缺少USB及即插即用的支持，且披著陳舊過時、難以操作的界面。而Windows 2000則有著比Windows 9x更炫酷的界面，和較完善的即插即用及USB支持。

Windows XP的發布顯示了微軟方向的轉變，把個人版及企業版作業系統調和得更為統一。

最後，微軟結束了對Windows 9x的支持，並先後對終端用戶及OEM廠商停止售賣相關軟體。

### 服務終結

微軟在2006年7月11日終止了對Windows 9x系列的支持。DirectX系列在8.0a版停止對Windows 95的更新、9.0c版停止對Windows 98與Me的更新；Visual Studio 系列最後可將 Windows 98 作為目標平台的版本是 Visual Studio 2008。如今，即使是開源項目的Mozilla瀏覽器，在不加工修改的情況下，也無法在Windows 9x上運行。

## 設計

### 內核

Windows 9x是一種混合16/32位的作業系統。

與大多數作業系統一樣，Windows 9x由內核及使用者空間組成。

儘管Windows 9x擁有記憶體保護機制，但它並沒有保護記憶體的首個兆字節以防止來自使用者空間應用程式的侵害。這個記憶體區含有讓作業系統正常運作的關鍵碼。寫入這些記憶體區將可能造成系統崩潰或死機。錯誤的應用程式可能意外寫入此記憶體區並使作業系統停止運行。這是系統不穩定的原因之一。

#### 使用者模式

Windows 9x的使用者模式由三個子系統組成：Win16子系統、Win32子系統及MS-DOS。

Windows 9x/Me為GDI及堆資源保留兩塊64KB的記憶體。長時間運行多個應用程式，又或運行多個擁有大量GDI元素的應用程式將可能耗盡這些記憶體。若空閒資源少於10%，Windows將變得不穩定並可能崩潰。

#### 內核模式

內核模式由虛擬機管理器（VMM）、Installable File System（IFSHLP）及配置管理器所組成。在Windows 98及之後的版本中，又加入了WDM驅動管理器（NTKERN）。身為32位作業系統，Windows 9x中的每一個進程都有4GB的虛擬內存空間：前2GB給內核而後2GB給應用程式。

### 註冊表

像Windows NT一樣，Windows 9x把使用者和配置特定的設定儲存在一個大型的、被稱為Windows註冊表的資訊資料庫。硬體特定的設定也存於註冊表中，且很多設備驅動器都使用註冊表來加載配置數據。此前的Windows版本使用如AUTOEXEC.BAT、CONFIG.SYS、WIN.INI、SYSTEM.INI的文件及其它帶有.INI後綴的文件來維持配置設定。當Windows日趨複雜並納入更多的特性時，.INI文件們對當時的FAT文件系統無疑顯得笨重至極。對.INI文件的兼容維持直到Windows XP的出現。

儘管微軟不鼓勵使用.INI文件以代替註冊表的使用，但仍有大量的應用程式（尤其是基於16位Windows的程序）使用.INI文件。Windows 9x支援.INI文件僅僅是為了兼容這些程序及相關工具（譬如安裝程序）。AUTOEXEC.BAT及CONFIG.SYS文件也繼續存在以兼容實模式系統組件並允許用戶更換默認系統設定，譬如PATH環境變量。

註冊表由User.dat及System.dat文件組成。在Windows Me中，又加入了Classes.dat。

### 虛擬機管理器

虛擬機管理器（VMM）是個在Windows 9x核心中的32位保護模式內核。它的主要任務是創建、執行、監管及終止虛擬機。VMM提供可管理記憶體、進程、中斷及錯誤保護機制的服務。VMM作用於虛擬設備（可加載的內核模塊，主要由32位環-0或內核模式碼組成，但也包了括其它類型的代碼，譬如16位實模式初始化段）以允許這些虛擬設備攔截中斷或故障來控制一個應用程式對硬體及軟體的訪問。VMM及虛擬設備都運行在一個單一的、0權限級（也稱做環-0）的32位平面記憶體模型地址空間。VMM提供多線程搶占式多任務處理機制。為了同時執行多個應用程式，它把CPU時間分配給在這些應用程式及虛擬機中的線程們。

VMM也負責為系統進程及還需運行在MS-DOS模式中的Windows程序創建MS-DOS環境。它是Win386（在Windows 3.x中）的替代品。文件vmm32.vxd是一個壓縮檔案，含有大部分VxD的核心程序碼，包括了VMM.vxd及ifsmgr.vxd（利於文件系統的訪問，無需調用DOS內核實模式的系統碼）。

### 軟體支持

#### 文件系統

Windows 9x本身不支持NTFS或HPFS，但第三方軟體解決了問題，允許Windows 9x對NTFS卷進行只讀訪問。

Windows 95的早期版本不支持FAT32。

同Windows for Workgroups 3.11一樣，Windows 9x支持32位文件訪問。不同於Windows 3.x，Windows 9x支持VFAT文件系統，允許文件名字可達最多255個字母以取代8.3文件命名法。

#### 事件日誌及追蹤

Windows 9x不支持Windows NT家族所擁有的事件日誌及追蹤或出錯報表機制，儘管使用像Norton CrashGuard的軟體可在Windows 9x上實現相似的功能。

#### 安全機制

Windows 9x乃單使用者系統。所以，它的安全機制不如Windows NT有效。其原因之一是Windows 9x只正式支持FAT文件系統（包括FAT12/16/32），儘管Windows NT也支持FAT，且Windows 9x也可通過第三方的可安裝文件系統驅動器來實現對NTFS卷的讀寫。FAT系統的安全機制不彰，每個擁有FAT驅動器訪問權限的使用者都可訪問其內的所有文件。不像NTFS，FAT文件系統沒有訪問控制列表和文件系統加密機制。

一些與Windows 9x同時期的作業系統（不管是多用戶的或是擁有多個不同訪問權限的使用者戶口）的重要系統文件（譬如內核映像）在大多數使用者戶口底下都是不可更動的。相反的，Windows 95及其後的作業系統為多個使用者提供簡檔選項，它們沒有訪問權限的概念，使它們大致相當於單使用者的、單戶口的作業系統，意味著所有進程都可修改所有未打開的文件及引導扇區，或對硬碟進行修改。這使病毒及其它被秘密安裝的軟體更緊密地與作業系統結合在一起，使使用者難以對它們進行偵查及撤消。在Windows 9x中的使用者簡檔支持僅是為了方便而已。除非修改一些註冊表項，在登錄時可按下「取消」以訪問系統，即使所有的簡檔都擁有口令保護。Windows 95的默認登錄對話框允許在不登錄的情況下創建新使用者的簡檔。

使用者或應用程式可通過刪除或覆寫重要的系統文件來使作業系統無法運作。使用者或應用程式也可自由更改配置文件以致作業系統無法啟動或正常運作。

安裝軟體常常覆蓋或刪除系統文件，但沒有正確檢查被覆蓋或刪除的文件是否為更新的版本或正在使用著。這就是DLL地獄的由來。

Windows Me引入系統文件保護機制及系統還原來解決此問題。

而被Windows 9x從DOS繼承的FAT及FAT32文件系統則沒有文件保護機制，也沒有類似NTFS的文件權限機制。

### 硬體支持

#### 驅動程序

Windows 9x的設備驅動程序可以是虛擬設備驅動程序或WDM驅動程序（始於Windows 98）。VxD通常都有文件名字後綴.vxd或.386，而WDM兼容驅動程序則使用擴展名.sys。32位VxD消息伺服器（msgsrv32）乃一程序，能在啟動時加載虛擬設備驅動程序（VxD）並爾後處理與驅動程序的通信。消息伺服器也可執行一些背景功能，包括加載Windows shell（譬如Explorer.exe或Program.exe）。

其它類型的驅動程序有.DRV驅動程序。這些驅動程序在使用者模式中被加載，通常被使用來控制設備，譬如多媒體設備。為了訪問這些設備，動態連結庫（如MMAYARWM.DLL）是必需的。

寫給Windows 9x/Windows Me的驅動程序被加載到與內核同樣的地址空間，說明驅動程序可能有意或無意地覆寫作業系統的關鍵記憶體區。這將導致系統崩潰，死機及硬碟損壞。故障的作業系統驅動程序乃作業系統不穩定的其一原因。單內核或混合內核之流，如Linux及Windows NT者也易受失常的驅動程序擾亂內核運作。

驅動及應用程式開發者常常因缺乏為「新」系統編程的經驗而造成了許多被使用者誤認為系統錯誤的錯誤，即使錯誤的發生並不緣由於Windows或DOS本身之故。為此，微軟自Windows 95以後，不斷地重新設計Windows驅動程序架構。

#### CPU及總線技術

Windows 9x不支持超線程、數據執行保護、對稱多處理或多核處理器。

Windows 9x不支持SATA AHCI（Windows 2000及Windows XP預設也不支援SATA AHCI，需要安裝驅動程式，較為麻煩），或USB隨身碟（Windows Me除外，Windows 98需要安裝USB隨身碟的驅動程式），但出現為數眾多針對Windows 98/Me驅動程序的SATA-I控制器。對Windows 98/Me的硬體驅動程序支持自2005年逐漸減少，特別是主板晶片組和顯卡的驅動程序。

早期的Windows 95不支持USB和AGP。Windows 95 OSR2可安裝USB補丁和AGP補丁以支援USB和AGP。

Windows 98是第一款支援ACPI的Windows。

### MS-DOS

Windows 95遠遠比Windows 3.1x及其前的作品更加削弱MS-DOS在Windows中的影響。微軟稱，MS-DOS在Windows 95中有兩個角色：一，為引導加載器；二，為16位舊式設備驅動層。

當Windows 95啟動時，MS-DOS加載、處理CONFIG.SYS、啟動COMMAND.COM、執行AUTOEXEC.BAT，最後執行WIN.COM。WIN.COM程序利用MS-DOS來加載虛擬機管理器、讀取SYSTEM.INI、加載虛擬設備驅動程序、關閉任何運行的EMM386副本並切換到保護模式。一旦在保護模式下，虛擬設備驅動程序（VxD）將傳送所有MS-DOS的狀態資訊到32位文件系統管理器，並關閉MS-DOS。這些VxD允許Windows 9x直接與硬體資源交互，就像提供了底層功能，譬如32位硬碟訪問及記憶體管理。接下來的文件系統操作將會轉送到32位文件系統管理器。

在Windows Me中，WIN.COM不再在啟動過程中被執行了，而直接從IO.SYS執行VMM32.VXD。MS-DOS（作為16位舊式設備驅動層）的第二角色是用來在Windows中執行DOS程序的向後兼容工具。許多MS-DOS程序及設備驅動器都以底層的方式與DOS交互，例如：修補低級別BIOS中斷，譬如INT 13H（底層硬碟I/O中斷）。當一程序發出一INT 21H呼叫以訪問MS-DOS，這呼叫將先轉到32位文件系統管理器。管理器將試圖偵查這一類的修補。若查到此程序嘗試掛接到DOS，管理器將跳轉到16位代碼以讓此掛接得以進行。一個被稱做IFSMGR.SYS的16位驅動程序將事前被CONFIG.SYS加載以在其它驅動及應用程式之前被掛接到MS-DOS；爾後從16位代碼跳轉到32位代碼，當此DOS程序運行完畢，以讓32位文件系統管理器繼續工作。據一Windows開發者Raymond Chen，「此MS-DOS乃一精心圈套。任何16位驅動及應用程式將修補或掛接到一個它們以為是真正MS-DOS的東東，但實乃一圈套爾。當32位文件系統管理器偵查到有人上鉤，它必讓此圈套呱呱大叫。（MS-DOS was just an extremely elaborate decoy. Any 16-bit drivers and programs would patch or hook what they thought was the real MS-DOS, but which was in reality just a decoy. If the 32-bit file system manager detected that somebody bought the decoy, it told the decoy to quack.）」

#### MS-DOS虛擬機制

在Windows 9x中，MS-DOS應用程式運行在「虛擬DOS機」（Virtual DOS Machine）中。

#### MS-DOS模式

Windows 95及Windows 98也提供對DOS應用程式的回歸支持以能夠啟動進入原始「DOS模式」（MS-DOS可以在不啟動Windows引導，且不使用保護模式）。通過Windows 9x的記憶體管理器及其它的「後DOS」改進，整體系統的性能及功能得到改善。這異於在基於Windows NT作業系統中所使的仿真手段。一些非常老舊的應用程式或硬體都需要「DOS模式」。

使用命令行模式，在不進入GUI時，能夠修復特定的系統錯誤。例如，如果一病毒活躍於GUI模式中並鎖住自身的文件，那麼它通常可在DOS模式中通過刪除病毒文件被安全去除。

同樣的，損壞的註冊表文件、系統文件或啟動文件都可用命令行來恢復。在命令提示符中鍵入'WIN' 可從DOS模式中啟動Windows 95及Windows 98。但Windows 2000中的恢復控制台（Recovery Console）也扮演著類似的角色。

由於DOS沒有多任務處理機制，基於DOS的Windows版本（如9x）缺少文件系統安全機制，譬如文件權限。再者，若使用者使用16位DOS驅動程序，Windows可能變得不穩定。在Windows 9x系列中就頻繁發生硬碟錯誤。

### 使用者界面

使用者可通過命令行界面（CLI）或圖形使用者界面（GUI）來控制一個基於Windows 9x的系統。對於桌面系統，默認模式通常為GUI，而MS-DOS Windows則使用CLI。

Windows 9x的GUI運行在一個基於DOS的層。

不同於加載到內核空間的Windows NT GDI，身為Win32及Win16子系統的Windows 9x GDI被加載到使用者空間。

Alpha通道或透明特效，譬如菜單的漸變效果，都不被Windows 9x GDI支持。

Windows Explorer乃台式機的默認使用者界面，儘管出現了各式各樣的Windows shell更換軟體。

其它種類的GUI有LiteStep, bbLean及程序管理器。GUI讓使用者更方便地控制個別應用程式的位置與外觀，及更好地與Windows系統交互。

## 基本資料

- 開發者：微軟
- 作業系統家族：Microsoft Windows
- 運作狀態：2006年7月11日停止支援，其生產線與Windows NT融合
- 源碼模式：封閉原始碼
- 發行日期：1995年8月24日
- 內核類別：單內核
- 支援平台：IA-32
- 使用者空間：Win32、Win16、MS-DOS
- 許可證：微軟終端用戶許可協議