Windows95

**Windows 95** 是微軟於 1995 年推出的電腦作業系統。Windows 95 是一個混合的 16 位元 / 32 位元 Windows 系統，是 Windows 9x 系列的第一代產品，其版本號為 4.0，開發代號為 **Chicago**。於 1995 年 8 月 15 日發行給製造商（RTM），並於 1995 年 8 月 24 日發行零售版。

Windows 95 整合了微軟之前獨立的 MS-DOS 和 Windows 作業系統，並在其前身的基礎上進行了重大改進，最顯著的是對圖形使用者介面的重要的改進和和簡化的「隨插即用」特性。作業系統的核心組件也進行了重大更改，例如從主要為協同運作式多工的 16 位元架構轉變為搶占式多工的 32 位元架構；拋棄了對前一代 16 位元 x86 的支援，因此它要求英特爾的 80386 處理器或者在保護模式下執行於一個相容的速度更快的處理器。同時也是第一個特別捆綁一個版本的 DOS 的視窗版本（MS-DOS 7.0）。這樣，微軟就可以保持由 Windows 3.x 建立起來的 GUI 市場的統治地位，同時使得沒有非微軟的產品可以提供對系統的底層操作服務。也就是說，Windows 95 具有雙重的角色。它帶來了更強大的、更穩定、更實用的桌面圖形化使用者介面，同時也結束了桌面作業系統間的競爭。

## 歷史

Windows 95 以強大的攻勢進行發布，包括商業性質的滾石樂隊的歌曲《Start Me Up》。很多沒有電腦的顧客受到宣傳的影響而排隊購買軟體，有些人甚至不知道 Windows 95 是什麼。

後來的 Windows 95 版本附帶了 Internet Explorer 3，然後是 Internet Explorer 4。當 Internet Explorer 4 被整合到作業系統後，它將給系統帶來一些新特徵。Internet Explorer 被用來給系統的桌面提供 HTML 支援。這個也是在微軟的反托拉斯案中的焦點，因為整合後的 Internet Explorer 排擠了微軟的競爭對手網景的產品。Windows 95 的後續產品是 Windows 98。

## 版本

Windows 95 共有五種版本：

* Windows 95 零售版（發布日期 1995 年 8 月 24 日）
* Windows 95 OEM Service Release 1（OSR1）（發布日期 1996 年 2 月 14 日，包括 Windows 95 Service Pack 1）
* Windows 95 OEM Service Release 2（OSR2）（發布日期 1996 年 8 月 24 日，包括一些改良例如 IE 3.0 和 FAT32 的支援）
* Windows 95 OEM Service Release 2.1（OSR2.1）（發布日期 1997 年 8 月 24 日，包括基本 USB 和 AGP 的支援）
* Windows 95 OEM Service Release 2.5（OSR2.5）（發布日期 1997 年 11 月 26 日，包括以上版本多所有功能，另附 IE 4.0 與 DirectX 5.0）

OSR2、OSR2.1 和 OSR2.5 並沒有對公眾發行，而是由廠商預先安裝在電腦上。

## 架構

Windows 95 的架構由 Windows for Workgroups 的 386 增強模式演變而來，旨在最大程度地相容現有的 MS-DOS 和 16 位元 Windows 程式與裝置驅動程式，同時提供更穩定和更出色的系統效能。Windows 95 的最低運作水平包括以 32 位元保護模式執行的大量虛擬裝置驅動程式（VxD）以及以虛擬 8086 模式執行的一個或多個虛擬 DOS 電腦。虛擬驅動程式負責處理物理裝置（例如影片卡與網卡）、類比虛擬機器所使用的虛擬裝置或提供各種系統服務。三個最重要的虛擬裝置驅動程式分別是：

**虛擬機器管理器（Virtual Machine Manager / VMM32.VXD）**
: 負責記憶體管理、事件處理、中斷處理、載入和初始化虛擬裝置驅動程式、建立新虛擬機器以及執行緒排程。

**組態管理器（Configuration Manager / CONFIGMG）**
: 負責實現隨插即用功能、監視硬體組態變化、使用匯流排列舉元檢測裝置以及以無衝突的方式分配 I/O 埠、IRQ，DMA 通道和記憶體。

**可安裝檔案系統管理器（Installable File System Manager）；輸入 / 輸出子系統（Input/Output Subsystem）**
: 協調對支援的檔案系統的存取。Windows 95 最初附帶支援 FAT12，FAT16，VFAT 擴充，ISO 9660（CDFS）和網路重新導向器，而後期版本支援 FAT32。

對物理媒體的存取請求被傳送到輸入 / 輸出管理器，由其負責排程請求。每個物理媒介都有自己的裝置驅動程式：存取磁碟由埠驅動程式執行；存取 SCSI 裝置則由在 SCSI 層上運作的微型埠驅動程式處理。埠與微型埠驅動程式繞過 MS-DOS 和 BIOS，以 32 位元保護模式執行讀寫操作，從而顯著提高效能。若儲存裝置沒有原生 Windows 驅動程式，或者裝置被強制以相容模式執行，則「真實模式對映器」（Real Mode Mapper）可以通過 MS-DOS 存取此儲存裝置。

32 位元 Windows 程式能夠自行分配記憶體段，且記憶體段的大小可以任意調整。程式無法存取段外的儲存區。 某個程式崩潰並不會使其他程式收到損壞。而在此之前，程式會使用固定的非獨占 64KB 段。雖然 64KB 大小是 DOS 和 Windows 3.x 系統的嚴重障礙，但缺乏對排他性的保證是造成穩定性問題的原因，因為程式有時會彼此覆蓋記憶體段。在 Windows 3.x 中，崩潰的程式會破壞其記憶體段周圍的處理程序。

Win32 API 由三個模組實現，每個模組由一個 16 位元和一個 32 位元組件組成：

**核心**
: 提供對記憶體和處理程序管理的進階存取，以及對檔案系統的存取。 由 KRNL386.EXE、KERNEL32.DLL 和 VWIN32.VXD 組成。

**使用者**
: 負責管理和繪製使用者介面組件，如視窗、清單和按鈕。 由 USER.EXE 和 USER32.DLL 組成。

**圖形裝置介面（GDI）**
: 負責以獨立於裝置的方式繪製圖形。 由 GDI.EXE 和 GDI32.DLL 組成。

### 對 MS-DOS 的依賴

對於終端使用者來說，MS-DOS 是 Windows 95 的底層組件，例如使用者可以阻止載入圖形化使用者介面並將系統引導到真實模式 MS-DOS 環境中。這引發了使用者和專業人士之間程度不小的爭論：Windows 95 究竟是作業系統，還是僅僅在 MS-DOS 上執行的圖形外殼。

在啟動圖形化使用者介面時，虛擬機器管理器會接管與檔案系統和磁碟相關的功能。MS-DOS 本身被降級為 16 位元裝置驅動程式的相容層。這與依賴於 MS-DOS 執行檔案和磁碟存取的 Windows 早期版本形成對比（Windows for Workgroups 3.11 在啟用 32 位元檔案及磁碟存取時也能夠在很大程度上繞過 MS-DOS）。將 MS-DOS 保留在記憶體中允許 Windows 95 在合適的 Windows 驅動程式不可用時使用 DOS 裝置驅動程式。Windows 95 能夠使用所有 16 位元 Windows 3.x 驅動程式。

與 Windows 3.1x 不同，在 Windows 95 中執行的 DOS 程式不需要為滑鼠、CD-ROM 及音效卡載入 DOS 驅動程式，而是使用 Windows 驅動程式。啟動 Windows 95 仍然需要 HIMEM.SYS，但 EMM386 和其他記憶體管理器僅由舊版 DOS 程式所使用。此外，CONFIG.SYS 和 AUTOEXEC.BAT 的設定對 Windows 程式沒有影響（除 HIMEM.SYS 外）。無法在 Windows 3.x 上執行的 DOS 遊戲可以在 Windows 95 中執行（遊戲往往會將 Windows 3.x 釘選或導致其他問題）。與 Windows 3.x 一樣，使用 EGA 或 VGA 圖形模式的 DOS 程式會在視窗模式下執行（CGA 和文字模式程式可以繼續以全螢幕模式執行）。

要啟用 Windows 95 的 MS-DOS 組件，可以在啟動 Windows 95 之前按下 `F8` 鍵暫停預設啟動過程並顯示 DOS 啟動選項清單，由此允許使用者繼續正常啟動 Windows、以安全模式啟動 Windows 或打開 DOS 提示符。此時系統與早期版本的 MS-DOS 一樣沒有 32 位元支援，必須為滑鼠和其他硬體載入 DOS 驅動程式。

由於 Windows 95 基於 DOS 開發，Windows 95 必須保持內部 DOS 資料結構與的資料結構同步。即使是原生 32 位元 Windows 程式，啟動程式時 MS-DOS 也會被短暫執行以建立稱為「程式段字首」的資料結構。MS-DOS 甚至可能會在執行此操作時耗盡常規記憶體，從而阻止程式啟動，而 Windows 3.x 首先在常規記憶體中分配固定段。由於記憶體段是固定分配的，Windows 無法移動這些記憶體段，從而導致無法啟動更多的程式。

Microsoft 在 Windows 95 OSR2（OEM Service Release 2）中部份刪除了對檔案控制塊（DOS 1.x 和 CP/M 的 API 保留）的支援。FCB 功能可以讀取但無法寫入 FAT32 卷。

## 參見

* Microsoft Windows 的歷史
* 作業系統
* 作業系統列表
* 微軟作業系統列表
* 微軟
* Windows 95 開發歷史

## 注釋

## 參考資料