軟體作業系統演變:為什麼MS-DOS

computer%20screen%20showing%20data%20visualization...
發表時間:2026 年 10 月 27 日 | 更新日期:2026 年 10 月 27 日 | 編輯:雅寶社區編輯團隊
軟體作業系統演變:為什麼MS-DOS - 雅寶社區 · 頂客論壇

1980 年,IBM 內部啟動了一個代號「Project Chess」的秘密計畫,目標是在一年內推出一款能夠搶佔個人電腦市場的產品。為了趕上時程,IBM 做出了兩個日後改變整個產業的決定:第一,大量採用現成的第三方零組件;第二,向外尋求作業系統。

一次「不自己開發」的策略性決定

1980 年 8 月,IBM 的代表 Jack Sams 找上了當時規模還很小的微軟。微軟當時的主力產品是 BASIC 解譯器與各類語言工具,並沒有自己的作業系統。比爾·蓋茲於是將 IBM 引介給數位研究公司(Digital Research)的 Gary Kildall,也就是 CP/M 的作者。

接下來發生的事情,版本眾多、細節至今仍有爭議:有人說 Kildall 當天不在公司、有人說他拒絕簽署 IBM 的保密協議、也有人認為是雙方在授權條件上談不攏。無論真相如何,結果是 IBM 與數位研究公司的合作沒有談成。微軟抓住了這個機會,向 IBM 表示自己可以提供一套作業系統。

微軟手上其實什麼都沒有。比爾·蓋茲與保羅·艾倫轉而聯繫西雅圖電腦產品公司,於 1981 年 7 月以大約五萬美元的價格,取得了 86-DOS 的完整權利(另有說法是先取得授權、後來才買斷)。微軟將它改名為 MS-DOS,並為 IBM 客製化出一套 PC DOS 1.0,隨著 1981 年 8 月 12 日 IBM PC 5150 的上市一起問世。

開放授權條款改寫了整個產業規則

如果故事只停在這裡,MS-DOS 大概就會像同時代的許多系統一樣,成為某個硬體廠商的專屬配件,隨著該機型停產而消失。真正關鍵的一步,是那份授權合約的細節。

據多方史料記載,微軟在與 IBM 談判時,堅持保留了將 MS-DOS 授權給其他電腦製造商的權利,IBM 並未要求獨家。對當時的 IBM 而言,這似乎是個無關緊要的讓步——畢竟 IBM 認為自家品牌才是號召力所在,作業系統賣給別人有什麼關係?但事後證明,這正是整個個人電腦產業史上最具價值的一項條款。

就在 IBM PC 上市後不久,一家名為 Compaq(康柏)的公司,透過反向工程(clean room design)重寫了 IBM 的 BIOS,於 1983 年推出第一台真正意義上的「IBM 相容機」。這在法律上站得住腳,因為 IBM 的 BIOS 只受著作權保護、不受專利保護,只要不是直接複製程式碼,功能相同的實作就沒有侵權問題。從此,「IBM 相容」不再是 IBM 的專利,而成為一個開放標準。

而這些相容機廠商需要什麼?需要一套與 IBM PC 軟體完全相容的作業系統。市場上唯一能提供、而且願意授權的選項,就是微軟的 MS-DOS。於是可以清楚看到這個歷史性的結構:IBM 創造了開放硬體架構,微軟則用非獨家的作業系統授權,收割了整個相容機市場。IBM 賣出的每一台 PC 讓微軟賺一次錢,Compaq、AST、虹誌、宏碁等數十家廠商賣出的每一台相容機,也讓微軟再賺一次錢。

三、MS-DOS 的技術架構:單工、命令列與中斷向量

理解了商業層面的布局之後,還必須回到技術本身。MS-DOS 究竟是一套什麼樣的作業系統?為什麼它的設計讓它如此容易普及,卻也讓它在面對新需求時幾乎無法翻身?

三層架構:BIOS、DOS 核心與 COMMAND.COM

MS-DOS 的結構可以清楚分為三層,這種分層思維深受 CP/M 影響,也是它能夠快速移植到各種硬體的關鍵:

  • ROM BIOS(底層):由硬體廠商提供,燒錄在主機板的唯讀記憶體中。它負責最基礎的硬體控制,包括螢幕輸出、鍵盤輸入、磁碟存取、序列埠與印表機等。DOS 本身幾乎不直接碰觸硬體,而是透過 BIOS 的中斷服務來完成工作。
  • DOS 核心(中層):由 IO.SYS 與 MSDOS.SYS 兩個檔案組成(在 PC DOS 中稱為 IBMBIO.COM 與 IBMDOS.COM)。它負責檔案系統管理、記憶體配置、程式載入與執行、以及提供系統呼叫介面。
  • COMMAND.COM(上層):命令解譯器,負責顯示提示字元、解析使用者輸入的指令、執行內部命令(如 DIR、COPY、CD),並在需要時載入外部命令程式(如 FORMAT.COM、CHKDSK.COM)。
  • 這樣的設計有一個明顯的好處:硬體廠商只要寫好 BIOS,理論上就能跑 DOS;而 DOS 的應用程式只要透過標準的系統呼叫,就能在不同的機器上執行。這正是 1980 年代「PC 相容」得以成立的根本基礎。

    FAT 檔案系統與目錄樹的普及

    MS-DOS 使用 FAT(File Allocation Table,檔案配置表)作為檔案系統。它的概念極為直觀:在磁碟的開頭保留一塊區域,用表格記錄每個叢集(cluster)的使用狀況與串接關係,就像一本帳冊記錄每筆資金的流向。DOS 1.0 使用的是 FAT12,僅支援軟碟;DOS 2.0 之後為了支援硬碟,擴充為 FAT16。

    FAT 帶來了幾項深遠的影響。首先是 8.3 檔名(主檔名最多 8 個字元、副檔名最多 3 個字元),這個限制一直困擾使用者到 Windows 95 引入 VFAT 長檔名為止。其次是磁碟機代號的概念——A: 與 B: 保留給軟碟機,C: 起為硬碟,這種命名方式至今仍存在於 Windows 系統中。

    更重要的是,DOS 2.0 引入了階層式目錄結構(也就是我們熟悉的資料夾樹狀結構),並附上 PATH 環境變數、輸入輸出重導向(>、<)與管線(|)等機制。這些設計大量借鏡了 UNIX 的觀念,讓 DOS 從一個單純的程式載入器,變成一套具備基本生產力的作業環境。

    中斷呼叫:INT 21h 成為軟體的共同語言

    在 MS-DOS 的世界裡,應用程式與作業系統溝通的方式是 軟體中斷(software interrupt)。程式設計師將功能編號放進 AH 暫存器,然後執行 INT 21h,DOS 就會依據編號執行對應的服務,例如開啟檔案(AH=3Dh)、讀取檔案(AH=3Fh)、顯示字串(AH=09h)等。這種以中斷向量表為核心的機制,可說是 DOS 時代最重要的「API」。

    除了 INT 21h 之外,還有幾個經常被使用的中斷:INT 10h 負責螢幕與視訊模式控制、INT 13h 負責磁碟存取、INT 16h 負責鍵盤輸入、INT 17h 負責印表機輸出。這套中斷系統有一個致命的弱點:它完全沒有保護機制。任何一支程式都可以直接改寫中斷向量表,掛上自己的常駐程式(TSR,Terminate and Stay Resident),這雖然催生了無數創意十足的工具軟體(如 SideKick、DOSKEY、滑鼠驅動程式),卻也意味著一支寫壞的程式足以讓整個系統當機。

    這種「沒有記憶體保護、沒有使用者權限、沒有多工排程」的設計,在 1980 年代初期的硬體條件下是合理的取捨,但到了 1990 年代就成了無法跨越的天花板。這一點我們稍後會再詳細討論。

    四、MS-DOS 版本演進全紀錄

    MS-DOS 從 1981 年的 1.0 版一路演進到 1990 年代中期的 6.22 版,每一次改版幾乎都是被硬體進步與使用者需求推著走的。以下整理幾個最具代表性的版本與它們帶來的關鍵變革。

    從 1.0 到 3.3:硬體推著軟體跑

    MS-DOS 1.0(1981 年 8 月)是這一切的起點。它僅支援 160KB 的單面軟碟、FAT12 檔案系統,沒有目錄結構,功能陽春得可以。但它能夠執行 IBM PC 上的 BASIC 與少數商用軟體,這樣就足夠了。

    MS-DOS 2.0(1983 年 3 月)普遍被視為 DOS 歷史上最重要的一次改版。它支援硬碟、引入階層式目錄、加入可安裝的裝置驅動程式(透過 CONFIG.SYS 的 DEVICE 指令載入)、支援重導向與管線,並將系統呼叫數量大幅擴充。可以說,DOS 從「玩具」變成「工具」,就是從 2.0 開始的。

    MS-DOS 3.0(1984 年)隨著 IBM PC/AT 與 80286 處理器問世,開始支援 1.2MB 軟碟;3.1(1985 年)加入網路功能與 Microsoft Networks;3.2(1986 年)支援 3.5 吋 720KB 軟碟;3.3(1987 年)則支援 1.44MB 軟碟、32MB 硬碟分割區,並引入 Code Page 與 APPEND、FASTOPEN 等實用工具。3.3 版因為穩定性高、相容性好,成為整個 1980 年代末期最廣泛使用的版本之一。

    從 4.0 到 6.22:記憶體管理與壓縮的黃金年代

    MS-DOS 4.0(1988 年)是一次評價兩極的嘗試。它加入圖形化的 DOS Shell、支援 EMS 擴充記憶體,並試圖突破 32MB 分割區限制,但 bug 不少、相容性問題頻傳,市場反應冷淡,很快就被 4.01 修正版取代。

    真正的救贖出現在 MS-DOS 5.0(1991 年 4 月)。這個版本被許多老玩家奉為經典,因為它終於讓一般人也能對抗 640KB 記憶體牆:DOS=HIGH 可以將 DOS 核心載入高位記憶體區(HMA)、DEVICEHIGH 與 LOADHIGH 可以把驅動程式與常駐程式搬進上位記憶體區(UMB),再加上 MemMaker 這支半自動的記憶體最佳化工具,讓許多原本跑不動的遊戲與應用程式重獲新生。此外,5.0 還帶來了全螢幕安裝程式、QBASIC、全螢幕編輯器 EDIT、DOSKEY 命令歷史、UNDELETE 檔案救援等功能,堪稱 DOS 史上功能躍進最大的一版。

    MS-DOS 6.0(1993 年)主打磁碟壓縮工具 DoubleSpace、防毒程式 MSAV、磁碟重組工具 DEFRAG 與更聰明的 MemMaker。但 DoubleSpace 因為與 Stac Electronics 的專利訴訟敗訴,在 6.2 版被移除,隨後由 6.22 版的 DriveSpace 取代。6.22 也成為微軟最後一個獨立發行的零售版 MS-DOS。

    7.x 與 Windows 95:DOS 的隱形化

    MS-DOS 7.0 嚴格說來從未以獨立產品形式販售,它是 Windows 95(1995 年)的底層開機環境。Windows 95 雖然仍需要 DOS 來完成開機與部分相容性工作,但使用者幾乎感受不到它的存在。1997 年隨 Windows 95 OSR2 提供的 MS-DOS 7.1 首次支援 FAT32 檔案系統,解決了 FAT16 分割區容量上限的問題。

    到了 Windows Me(2000 年),微軟正式移除了真實模式(real mode)的 DOS;Windows XP(2001 年)之後,DOS 更是徹底從主流消費市場消失,只剩下命令提示字元(cmd.exe)這種「模擬」形式存在。至此,MS-DOS 走完了它將近二十年的歷史舞台。

    版本

    發行年份

    關鍵變革

    1.01981初版,支援軟碟與 FAT12,無目錄結構

    2.01983支援硬碟、階層目錄、裝置驅動程式、管線與重導向

    3.319871.44MB 軟碟、32MB 分割區、Code Page 支援

    4.01988DOS Shell、EMS 支援,但穩定性爭議大

    5.01991HMA/UMB 記憶體管理、MemMaker、QBASIC、EDIT、DOSKEY

    6.01993DoubleSpace 壓縮、DEFRAG、MSAV 防毒

    6.221994以 DriveSpace 取代 DoubleSpace,最後的零售版本

    7.x1995–1997隨 Windows 95 內建,7.1 支援 FAT32

    五、為什麼 MS-DOS 會勝出?四個結構性原因

    把 MS-DOS 的勝利單純歸因於「IBM 選錯合作對象」或「微軟運氣好」,其實忽略了更根本的產業結構因素。以下四個原因,共同構成了 MS-DOS 難以撼動的地位。

    原因一:IBM 相容機的開放生態

    IBM PC 採用了開放架構:ISA 匯流排規格公開、擴充卡插槽標準化、BIOS 功能被完整文件化。這使得第三方廠商能夠輕易生產介面卡與周邊設備,也讓 Compaq 等公司得以透過反向工程製造出功能完全相容的機器。當「IBM 相容」變成一個開放平台,市場就不再由 IBM 獨佔,而是由數十家廠商共同競爭。而這些廠商全都需要一套能跑 IBM PC 軟體的作業系統——MS-DOS 成了唯一的共同選擇。硬體越開放,MS-DOS 的版圖就越遼闊。

    原因二:開發工具與軟體數量形成的正回饋

    作業系統的價值,最終取決於它能執行多少軟體。1980 年代初期,MS-DOS 上的開發工具快速成熟:1983 年 Borland 推出 Turbo Pascal,以極低的價格與極快的編譯速度震撼市場;同年 Lotus 1-2-3 推出,成為企業採購個人電腦的主要理由;隨後 dBase、WordPerfect、AutoCAD、Harvard Graphics、以及無數的遊戲相繼問世。

    這形成了一個典型的網路效應:使用者因為想跑某些軟體而選擇 DOS,開發者因為 DOS 使用者最多而優先開發 DOS 版本,更多軟體又吸引更多使用者。這道護城河一旦形成,其他作業系統(如 CP/M-86、PC-DOS 之外的選項)幾乎沒有切入的機會。

    原因三:近乎偏執的向下相容承諾

    微軟在 DOS 的演進過程中,始終把「舊程式能不能跑」放在第一位。從 1.0 到 6.22,即使底層架構歷經多次擴充,絕大多數為舊版 DOS 撰寫的商業軟體仍能正常執行。這種相容性保證,讓企業願意持續投資在 DOS 平台上,也讓使用者沒有切換系統的壓力。相對地,同時期一些試圖「重新設計」的作業系統(例如某些多工或圖形環境),往往因為無法執行既有 DOS 軟體而乏人問津。相容性本身,就是一種最強大的鎖定效果。

    原因四:OEM 授權模式與價格策略

    微軟採取的授權模式極為靈活:對 IBM 這樣的巨頭,以套裝或隨機方式計價;對其他 OEM 廠商,則採「每台出貨機器收取固定授權費」的模式。隨著出貨量放大,單套成本可以壓到極低(後期甚至只有個位數美元),讓廠商幾乎沒有理由不安裝。這種「薄利多銷、以量取勝」的策略,讓 MS-DOS 的裝機量在 1980 年代末期達到數千萬套,成為個人電腦出貨時的預設選項。

    值得一提的是,這樣的商業模式在當時並不是顯學。許多軟體公司仍習慣以高單價、少量銷售的方式經營,認為低價授權會侵蝕利潤。微軟的選擇,本質上是一場對「規模經濟」的豪賭,而結果證明他們賭對了。

    六、MS-DOS 的天花板:640KB 記憶體牆與單工限制

    然而,一套在 1981 年設計的作業系統,終究無法無限度地承載 1990 年代的運算需求。MS-DOS 的衰亡,並不是因為它做錯了什麼,而是因為它的設計前提從一開始就注定要被時代淘汰。

    記憶體管理的歷史包袱

    最為人熟知的莫過於「640KB 記憶體牆」。Intel 8086/8088 具備 20 條位址線,理論上可定址 1MB(1,048,576 位元組)的記憶體。但 IBM PC 的設計將其中的 384KB 保留給顯示記憶體、ROM BIOS 與其他周邊,留給 DOS 與應用程式使用的僅剩下 640KB。這個看似技術性的配置,成了此後十多年間所有 PC 使用者的共同夢魘。

    為了突破限制,業界陸續發展出多種權宜之計:EMS(Expanded Memory Specification,1985 年由 Lotus、Intel、Microsoft 共同制定)透過「分頁切換」的方式,在 640KB 到 1MB 之間開一個 64KB 的窗口,讓程式可以存取額外的記憶體;XMS(Extended Memory Specification)則讓 80286 以後的機種能直接使用 1MB 以上的延伸記憶體;DOS 5.0 之後,更可以透過 HIMEM.SYS 與 EMM386.EXE,把 DOS 核心搬進 HMA、把驅動程式搬進 UMB,盡可能把寶貴的 640KB 空出來給應用程式。

    這套體系極其複雜,也極其脆弱。使用者必須理解 CONFIG.SYS 中各個指令的意義、調整載入順序、甚至為不同的遊戲準備不同的開機磁片。這種「系統調校」的次文化,雖然孕育出一整代熟悉底層的電腦玩家,卻也反映出 MS-DOS 在架構上的根本困境:它不是為了解決問題而設計的,而是為了解決 1981 年的問題而設計的。

    多工時代的來臨與 DOS 的退場

    另一個致命傷是單工(single-tasking)。MS-DOS 一次只能執行一支程式,沒有搶佔式多工、沒有記憶體保護、沒有使用者權限的概念。當使用者開始期待一邊下載檔案、一邊打報告、一邊聽音樂時,DOS 就顯得力不從心。雖然市場上出現過 DESQview 這類第三方多工環境,微軟自己也推出了 Windows 3.0(1990 年)與 Windows 3.1(1992 年)作為 DOS 之上的圖形多工層,但這些方案本質上仍是「在 DOS 上面加蓋」,穩定性與資源管理始終受限。

    真正解決問題的,是Windows NT(1993 年)這套從零開始設計、具備搶佔式多工、記憶體保護與安全機制的全新作業系統。而 Windows 95(1995 年)則扮演了過渡角色,它以 DOS 為開機基礎,卻提供了完整的圖形介面與 32 位元應用程式支援。此後,隨著硬體效能提升與應用程式全面轉向圖形化,MS-DOS 的存在意義快速消退,最終在 Windows XP 時代正式走入歷史。

    七、MS-DOS 的遺產:今天的 Windows 還留著它的 DNA

    雖然 MS-DOS 已經退出主流舞台二十餘年,但它留下的影響至今仍清晰可見。許多我們習以為常的電腦使用習慣與技術規範,其實都是 DOS 時代的產物。

    開機流程、磁碟分割與檔案系統的延續

    今日 PC 的開機流程,仍然可以看到 DOS 時代的影子:電源啟動後,BIOS(或 UEFI)進行自我測試,接著讀取磁碟第一個磁區的主開機記錄(MBR),再由 MBR 尋找活動分割區並載入開機程式。這套機制最早正是在 1980 年代的 DOS 2.0 時代隨著 FDISK 工具一起成形的,即使 UEFI 與 GPT 分割表逐漸取代它,MBR 仍是許多系統相容性模式下的基礎。

    同樣地,磁碟機代號(C:、D:)、檔案副檔名的概念(.EXE、.TXT、.BAT)、以及 FAT 檔案系統的血脈(從 FAT12、FAT16 到 FAT32,再到 exFAT),都是從 MS-DOS 一路傳承下來的。甚至連 Windows 的登錄檔結構、系統資料夾路徑,都還可以看到當年 DOS 命名習慣的痕跡。

    命令列的回歸:從 DOS 到 PowerShell

    在圖形介面當道的年代,命令列一度被視為過時的產物。但近十年來,命令列強勢回歸:Windows 的 PowerShell、Linux 的 Bash、macOS 的 Zsh,都成為開發者與系統管理員的日常工具。而這些現代命令列環境中的許多概念——批次檔、環境變數、標準輸入輸出重導向、管道——其實都能在 MS-DOS 的 AUTOEXEC.BAT 與 COMMAND.COM 中找到原型。

    某種程度上,MS-DOS 教會了整整一代人:圖形介面很好用,但真正精確、可自動化、可重複的操作,還是得靠文字命令。這個觀念在今日的 DevOps 與自動化維運文化中,依然成立。

    FreeDOS 與復古運算社群

    有趣的是,MS-DOS 至今仍以另一種形式活著。1994 年由 Jim Hall 發起的 FreeDOS 專案,目標是打造一套與 MS-DOS 完全相容的自由軟體作業系統;它在 2006 年推出 1.0 版,至今仍有持續更新。FreeDOS 被廣泛應用在嵌入式系統、POS 收銀機、工業控制設備,以及需要執行老舊 DOS 軟體的場合。

    同時,在復古運算(retro computing)社群中,MS-DOS 與其上的經典遊戲、文書軟體、開發工具,仍然被大量保存與研究。對這些玩家而言,DOS 不只是懷舊,更是一個理解電腦如何運作的絕佳教材:沒有抽象層層堆疊,沒有龐大的框架,只有中斷、記憶體區段與組合語言,一切都是透明而可觸及的。

    八、結語:一個「不完美」的系統,為何成為時代標準

    回顧 MS-DOS 的歷史,我們很難說它是一套「好」的作業系統。它的記憶體模型先天不良、它的多工能力付之闕如、它的安全性幾乎不存在、它的使用者介面在今日看來極不友善。從任何純技術的角度評分,MS-DOS 大概都很難拿到高分。

    但它贏了。它贏在一個關鍵的歷史時刻,做出了一連串正確的商業與策略選擇:買下 86-DOS、保留非獨家授權、押注開放架構的相容機市場、以低價大量授權換取裝機率、堅持向下相容以保護既有投資。這些選擇共同構成了一個自我強化的生態系統,讓 MS-DOS 在整個 1980 年代幾乎沒有對手。

    更重要的是,MS-DOS 證明了一件事:在平台戰爭中,技術優越性往往不是決定勝負的關鍵,能否形成正向循環的生態系才是。開發者願意為它寫軟體、硬體廠商願意預裝它、使用者願意學習它,這三股力量互相強化,最終把一套「又快又髒」的作業系統,推上了個人電腦的第一個十年王座。

    對今日的軟體開發者與產品經理而言,MS-DOS 的故事仍然值得反覆咀嚼。它提醒我們:設計取捨必須對應當時的現實條件;商業模式與技術架構同樣重要;而真正難以撼動的護城河,往往不是程式碼寫得多漂亮,而是有多少人已經圍繞著你建立了他們的日常。MS-DOS 早已退場,但它留下的這些教訓,仍然在每一次平台更迭中不斷重演。

    🏠 返回首頁