DOS
DOS,是磁碟作業系統(英文:Disk Operating System)的縮寫,是個人電腦上的一類作業系統。從1981年直到1995年的15年間,DOS在IBM PC 相容機市場中佔有舉足輕重的地位。而且,若是把部份以DOS為基礎的Microsoft Windows版本,如Windows 95、98和Me等都算進去的話,那麼其商業壽命至少可以算到2000年。
DOS家族包括MS-DOS、PC-DOS、DR-DOS、FreeDOS、PTS-DOS、ROM-DOS、JM-OS等,其中以MS-DOS最為著名。雖然這些系統常被簡稱為"DOS",但沒有任何一個系統單純以"DOS"命名(只有一個毫無關連的1960年代IBM 大型主機作業系統 以此命名)。此外,有幾個和DOS無關、在非x86的微電腦系統上執行的磁碟作業系統在名稱中也有 "DOS" 字眼,而且在專門討論該機器的場合中也會簡稱為"DOS"(例如:AmigaDOS、AMSDOS、ANDOS、Apple DOS、Atari DOS、Commodore DOS、CSI-DOS、ProDOS、 TRS-DOS 等),但這些系統和DOS執行檔以及MS-DOS API並不相容。
目录 |
設計架構[编辑]
所有 DOS 類的作業系統都是在使用 Intel x86 或其相容 CPU 的機器上運行的(主要是 IBM PC 及其 相容機)。最早的時候,DOS 並未受限於此;為了在許多以 x86 為基礎,但和 IBM PC 不相容的機器上運行,產生了不少特定機器版本的 DOS 及類似的作業系統。[1]
DOS 是單一使用者、單工的作業系統,擁有不可重入的基本核心函式(意即同時間只能有一個程式呼叫這些函式)。有一個例外的狀況,就是常駐程式(Terminate and Stay Resident,縮寫為 TSR)。某些常駐程式允許使用者多工操作;然而此時仍有「核心不可重入」的問題:當一個行程 (process) 呼叫了作業系統核心中的服務函式(也就是系統呼叫)時,在這個呼叫結束之前,其他的行程絕對不能進行系統呼叫、打斷第一個行程。[2]
DOS 的核心為使用者程式提供了各式各樣的函式,例如:在螢幕上顯示文字、從鍵盤讀入字元、存取磁碟上的檔案等等。
腳本語言[编辑]
DOS 透過 批次檔(副檔名為 .BAT)提供界面腳本的功能。這些檔案是純文字格式的,可以用任何的文字編輯器(像是 edit.com )編輯。他們執行起來和編譯而成的程式沒有兩樣。檔案中的每一行都被視為命令來執行。批次檔也可以使用數個內部命令,例如 goto 和條件判斷式。[3]
硬體存取[编辑]
DOS 提供了簡單的硬體抽象層,讓程式員可以開發文字界面的應用程式;但這個硬體抽象層無法存取大部份的計算機硬體,像是顯示卡、印表機,或是滑鼠等。這使得程式員必須直接存取硬體,導致每個應用程式都有屬於自己的一組硬體週邊驅動程式。硬體製造商會將他們的硬體規格書釋出,以確保在受歡迎的應用程式中有它們的驅動程式。[4]
裝置保留名稱[编辑]
在 DOS 中,有數個名稱保留給裝置使用,無法拿來當一般檔案的名稱(不管副檔名是什麼);這些保留名稱是用來將應用程式的輸出傳送給硬體週邊用的。這樣的限制也影響到數個版本的 Windows,在某些情況下甚至會造成當機和安全性弱點。[5]
其中一些保留名稱有:NUL:、COM1: 或 AUX:、COM2:、COM3:、COM4:、CON:、LPT1: 或 PRN:、LPT2:、LPT3:,以及 CLOCK$。[6]
磁碟命名法[编辑]
在 DOS 中,磁碟機是利用不同的字母命名的。標準的作法是保留 "A" 和 "B" 給軟碟機。若是系統只有一台軟碟機的話,DOS 允許這台軟碟機同時使用這兩個代號,然後 DOS 會要求使用者更換磁片。這麼做可以讓使用者把檔案拷貝到不同的軟碟片上,或是執行某一片軟碟片上的程式,然後把資料檔案存放在另一片軟碟片上。最早硬碟的代號為 "C" 和 "D"。在一台硬碟機上,DOS 只允許一個活動分割區的存在。隨著支援的硬碟數量越來越多,磁碟代號的命名方法演變為:先將磁碟代號指派給每一顆硬碟機的活動主分割區,然後第二輪將代號指派給延伸分割區中的邏輯磁碟區,第三輪再把代號指定給非活動的主分割區。(前題是:它們存在,而且包含了 DOS 可以讀取的檔案系統。)最後,DOS 才將代號指派給光碟機、RAM disk,以及其他的硬體。一般來說,磁碟代號都是依照驅動程式的載入順序,按字母順序指派的,但驅動程式也可以要求 DOS 指派不同的字母。例如網路磁碟機的驅動程式通常會指派最後的幾個字母。[7]
因為 DOS 的應用程式會直接使用這些磁碟代號(和 Unix 類系統使用/dev 目錄的方法不同),因此若是新增了需要分配磁碟代號的硬體,可能會導致這些應用程式出錯。舉例來說:若是原本硬碟中的延伸分割區中存在邏輯磁碟區,此時新增一顆有主分割區的硬碟的話,由於主分割區擁有較高的分配優先權,所以原本硬碟的邏輯磁碟區的代號就會改變。此外,就算是新增一顆只有延伸分割區和邏輯磁碟區的硬碟,還是會影響到 RAM disk 及光碟機的代號。這個問題一直到 9x 系列的 Windows 都仍然存在;NT 系列才有解決方案:磁碟代號會保留給已存在的磁碟機機,除非使用者手動更改。[7]
開機流程[编辑]
PC 相容機的開機磁區位在第 0 軌。對於 DOS 來說,這段代碼會將 DOS 的 BIOS 讀入記憶體中然後執行。在 DR DOS 及 PC DOS 中,這個 BIOS 放在 IBMBIO.COM 這個檔案裡;而 MS DOS 則是放在 IO.SYS。接下來這個 BIOS 會載入放在 IBMDOS.COM(PC DOS 或 DR DOS)或是 MSDOS.SYS(MS DOS)裡面的 DOS 核心。Windows 9x 中附的 DOS 版本(MS DOS 7 和 8)將 BIOS 和核心合併放在 IO.SYS 裡面,而 MSDOS.SYS 則是文字格式的組態檔案。然後 DOS 核心會去執行 CONFIG.SYS 這個檔案。在 CONFIG.SYS 中,SHELL 這個命令指定了 shell 的檔案位置(通常是 COMMAND.COM)。接下來這個 shell 會被執行,然後它會去開啟開機批次檔(通常是 AUTOEXEC.BAT)[8]
歷史[编辑]
MS-DOS(以及經授權更換商標而成的 IBM PC-DOS)以及它的前身 86-DOS 是受到 Digital Research 公司的 CP/M(Control Program / (for) Microcomputers)啟發而完成的。CP/M 是當時使用 Intel 8080 及 Zilog Z80 這兩顆 8 位元 CPU 的微電腦上最受歡迎的磁碟作業系統。
在 1980 年的時候,IBM 使用 Intel 8088 微處理器,開發出了他們的第一台微電腦。他們需要一套能夠在這台微電腦上使用的作業系統。IBM 在找一套能和 8088 相容的 CP/M,一開始找上了微軟 (Microsoft) 的執行長比爾.蓋茨 (Bill Gates)(可能是因為當時微軟開發出了讓 CP/M 可以在 Apple II 上執行的 Z-80 SoftCard,所以 IBM 相信微軟擁有 CP/M[9])。IBM 被轉介到 Digital Research,並且舉行了相關的會議。然而,關於 CP/M 的使用權的初次談判破裂了—因為 Digital Research 希望以權利金的方式販售 CP/M,但 IBM 希望單一授權,並且將名稱改為 "PC-DOS"。DR 的創始人 Gary Kildall 拒絕簽約,IBM 因此放棄購買 CP/M。[9][10]
IBM 再次找上比爾.蓋茨。蓋茨轉而找上了 Seattle Computer Products (SCP)。SCP 的程式員 Tim Paterson 開發了一套 CP/M-80 的變體作業系統,原本是打算用來測試 SCP 為 S-100 匯流排新開發的 16 位元 Intel 8086 CPU 界面卡。這套系統原本的名稱是 "QDOS"("Quick and Dirty Operating System" 的縮寫),後來在商業發行前改名為 86-DOS。微軟買下了 86-DOS(據說成交金額為 50,000 美元),後來成了 1981 年發行的 Microsoft Disk Operating System,簡稱 MS-DOS。[11]
微軟也將這套系統授權給數個電腦公司。這些電腦公司販售給他們的硬體使用的 MS-DOS,有時使用他們自己的名稱。微軟後來要求他們使用 MS-DOS 這個名稱,除了 IBM 以外。IBM 持續為 IBM PC 開發新版的 PC-DOS。Digital Research 查覺到 IBM 正在販售和 CP/M 很類似的作業系統(而且還跟當初 IBM 談判時堅持的名稱相同),於是揚言要提出法律訴訟。IBM 以一項協議回應他們:IBM 讓使用者可以自行選擇要使用 PC-DOS 還是 CP/M-86(Kildall 開發的 8086 版 CP/M)。兩者相較,CP/M 比 PC-DOS 貴上近 200 美元,銷售量也低。CP/M 逐漸淡出,而 MS-DOS 和 PC-DOS 則成了 PC 和 PC 相容機的主力作業系統。[9]
Digital Research 曾試圖挽回 CP/M-86 錯失的市場。一開始是發行了 DOS Plus,後來又發行了 DR-DOS(這兩者都同時與 MS-DOS 和 CP/M-86 的軟體相容)。Digital Research 被 Novell 買下,DR-DOS 變成了 Novell DOS 7。之後,它又成為 Caldera Systems(以 OpenDOS 及 DR DOS 7 為名)、Lineo 以及 DeviceLogics 的一部份。
後來,微軟和 IBM 在兩套 DOS 的繼任作業系統(微軟的 Windows 和 IBM 的 OS/2)上發生了一連串爭執。[12] 他們在 DOS 系統上的開發也因此分道揚鑣。[13] MS-DOS 在某些層面上轉型成為 Windows;而 PC-DOS 的最後一個版本為 1998 年發行的 PC-DOS 2000。
FreeDOS 計劃開始於 1994年6月26日。當天微軟宣佈他們將不再販賣 MS-DOS,也不再提供支援。於是 Jim Hall 張貼了一份宣言,宣佈要開發 DOS 的開放源始碼替代品。在幾個星期內,包括 Pat Villani 和 Tim Norman 的幾位程式員加入了這個計劃。他們利用共享他們撰寫或現有程式碼的方式,產生了核心、command.com 命令直譯器(shell 界面)以及核心公用程式。在歷經了數個版本的官方預覽版本之後,FreeDOS 1.0 版在 2006 年 9 月 3 日正式發佈。使用 FreeDOS 不需支付任何的版權費用或權利金。[14][15]
淡出[编辑]
早期版本的 Microsoft Windows 只是在 DOS 之上執行的應用程式。[16] 大約在 90 年代初,Windows 仍相當依賴新版本的 DOS。一直到 Windows for Workgroups 3.11,DOS 才逐漸退居負責開機及載入 Windows 核心的角色。1995 年 Windows 95 則是以獨立作業系統發行,不需要 DOS。在 Windows 95(以及其後發生的 Windows 98 與 Me)中,MS-DOS 核心依然存在,只是加上 Windows 當作系統的圖型界面。Windows 95 與 98 的 MS-DOS 元件可以在不開啟 Windows 的情況下獨立執行(但 Windows Me 不行)。[17] 隨著 Windows 的普及,大部份的電腦使用者都使用 Windows,DOS 也越來越少人使用。
持續發展[编辑]
有些電腦製造商(包括 Dell 和 HP)會預載 FreeDOS 當作 OEM 作業系統出貨。[18][19]
有一套以 GPL 方式授權的 DOS,名為 NX-DOS,目前正在開發中。它是一套 16 位元的即時作業系統,擁有網路功能,可以從軟碟片開機,還有一個不太完整的 USB 驅動程式。NX-DOS 專案從 1992 年就開始了,原本是個個人專案,在 2005 年的時候以 GPL 方式釋出。[20]
目前仍可取得的 DOS 系統有 DR-DOS(以及加強的 DR-DOS)、俄國人開發的 PTS-DOS、ROM-DOS、FreeDOS、NX-DOS、Multiuser DOS(以 Digital Research 的 Concurrent DOS 為基礎)....等等。
嵌入式系統[编辑]
由於 DOS 可以直接存取硬體,因此它很適合拿來控制嵌入式裝置。新版本的 DR-DOS 便瞄準了這塊市場。[21] 佳能的數位相機 PowerShot Pro 70 使用 ROM-DOS 做為嵌入式系統。[22]
模擬器[编辑]
在 Linux 下,使用 DOSEMU(一套用來執行真實模式程式的 Linux 原生虛擬機器)可以執行 DOS 及其衍生版本。另外在各個版本的 UNIX 下也有許多用來執行 DOS 的模擬器,有些甚至在非 x86 的平台上也可以執行,像是 DOSBox。[23][24]
由於 Windows XP 和 Vista 無法和純 DOS 相容,DOS 模擬器在這些系統上也越來越流行。這些模擬器可以用來執行過去的老軟體或其他 DOS 軟體。其中一個最為知名的是 DOSBox,主要的設計目標是在當前的作業系統上執行 DOS 的遊戲程式。[23][16]
在 Microsoft Virtual PC 下也可以執行 DOS 的應用程式,相容性比 DOS 模擬器好。使用者可以安裝合法的 MS-DOS,然後除了那些最難對付的應用程式以外,絕大部份的 DOS 應用程式都可以在上面執行。[25]
與 Microsoft Windows 的關係[编辑]
純 32 位元版本的 Windows(從 NT 開始;包含了 2003、XP 和 Vista)並非以 DOS 為基礎的。這些系統中內含了一個 NT DOS 虛擬機器(NT Virtual DOS Machine,縮寫為 NTVDM),在上面執行一個修改過的 DOS。原本以 DOS 為基礎的系統使用傳統的 COMMAND.COM 做為命令列界面,而 Windows NT 及其衍生版本則是使用 cmd.exe(不過 cmd.exe 也移植了許多 DOS 的命令)。
軟體[编辑]
由於 DOS 在长时间内是 PC 相容機的主要平台,有許多為 DOS 撰寫的知名軟體。例如:
- Lotus 1-2-3;一套在企業市場中被廣泛運用的試算表軟體。被許多人視為 IBM PC 成功的主因[26]
- WordPerfect;一套目前出在 Windows 平台的文字編輯器
- WPS,DOS时代中国最流行的文字处理软件,现已改名为WPS Office运行于Windows平台。
- dBase;最早的資料庫軟體之一
- Telix; 數據機通訊軟體
- Arachne;一套 DOS 版的網路瀏覽器
- DJGPP, gcc 的 DOS 移植版
- 4DOS,取代原本的命令列界面的軟體
- Borland 的 整合式開發環境,包括了 Turbo Pascal、Turbo BASIC、Turbo C,以及 Turbo Assembler
- 撥接式電子佈告欄 (BBS) 架站軟體 RemoteAccess、Spitfire、Maximus、McBBS,以及TAG
- BASIC 語言工具程式 BASICA 以及 GW-BASIC
- 許多的第一人稱射擊遊戲:由 Id Software 以及 Apogee Software(後來改名為 3D Realms)合資開發的 德軍總部3D;Id Software 的 Doom 以及 Quake;3D Realms 的 Duke Nukem 3D、Shadow Warrior,以及 Rise of the Triad。3D Realms 開發的這 3 套遊戲使用的都是 DOS 上的「Build 引擎」。Build 引擎的作者是 Ken Silverman,這個引擎也被用於 Silverman 的 Ken's Labyrinth 這個遊戲上。
易用性[编辑]
用户界面[编辑]
所有的 DOS 均使用命令列界面。執行程式的方法是在命令列中鍵入程式的名稱。DOS 系統包含一些公用程式,也提供了一些不是以程式方式存在的命令(通常被稱為 內部命令)。[27]
為了提供對使用者更友善的操作環境,許多的軟體廠商紛紛推出各式各樣的檔案管理程式。這些程式通常使用選單及圖示做為界面。Microsoft Windows 就是其中最有名的例子,最後發展成為完整的作業系統,取代 DOS 成了 PC 相容機上最受歡迎的作業系統。使用文字模式的使用者界面有:Norton Commander、Dos Navigator、Volkov Commander、Quarterdesk 的 DESQview,以及 SideKick。使用繪圖模式的使用者界面有:Digital Research 的 Graphical Environment Manager(最早是寫給 CP/M 用的)以及 GEOS。
發展到最後,主要的 DOS 廠商開始在 DOS 中加入自己的環境管理程式。MS/PC-DOS 4 中有 DOS Shell;[28] 而次年發行的 DR-DOS 5 則加入了以 GEM 為基礎的 ViewMAX。[29]
多工[编辑]
在最初的設計中,DOS 是一個單工的作業系統。MS/PC-DOS 使用 DOS shell 做到工作切換的功能,[30] 而 DR-DOS 則是在 DR-DOS 6 中利用 TaskMAX 做到類似的功能。[31] MS/PC-DOS 自始至終都沒有多工的能力;[32] DR-DOS 則是在 DR-DOS 7 中提供了這個功能(DR-DOS 的 DPMI 必須啟用)。[33]
限制[编辑]
DOS 的架構有數項惱人的限制。最早的 8088 微處理器只能定址到 1 MB 的實體記憶體空間。由於附加的硬體裝置也必須映射到這段空間,因此最高可以使用的記憶體只有 640 KB(被稱為「傳統記憶體」)。在 DOS 的結構上,640 KB 被視為最大的記憶體空間,DOS 無法定址更高的位址。早期避開這個問題的做法是使用擴展記憶體;80286 出來之後,發展出了延伸記憶體。雖然這些技術提供了更多的記憶體應用程式,但應用程式仍必須從傳統記憶體開始執行,佔用 640 KB 中的部份空間。80386 微處理器使用了重新設計的保護模式,應用程式可以透過 DOS extender 及 DOS 保護模式界面(DOS Protected Mode Interface,縮寫為 DPMI)等技術使用額外的記憶體,也可以有多工的功能。[34][35]
DOS 還有硬碟分割區大小的限制。造成這個問題的原因有兩個。首先,許多 DOS 類的作業系統只支援到 FAT16,而 FAT16 在設計上就不支援超過 2.1 GB 的硬碟分割區。[36] 另外,DOS 存取硬碟的方式是透過 INT 13 這個中斷呼叫,然後往下再利用 CHS 系統對應到磁碟上的資料。在這個架構下,作業系統只能看到 8 GB 的硬碟空間。[37] 比較新的作業系統使用軟體的方式(例如:32 位元磁碟存取)存取硬碟。
FAT16 和 FAT12(用於軟碟片)上的檔案名稱必須遵守「8.3 命名規則」:檔案的主檔名不得超個 8 個字元,而副檔名則不得超過 3 個字元。
命令集[编辑]
(部分)
| 命令 | 備註 |
|---|---|
| MD | 建立子目錄 |
| CD | 改變當前目錄 |
| RD | 刪除子目錄命令 |
| DIR | 示磁盤目錄命令 |
| PATH | 路徑設置命令 |
| TREE | 顯示磁盤目錄結構命令 |
| DELTREE | 刪除整個目錄命令 |
| FORMAT | 磁盤格式化命令 |
| CHKDSK | 檢查磁盤當前狀態命令 |
| UNFORMAT | 恢復格式化命令 |
| DISKCOPY | 整盤複製命令 |
| VOL | 顯示磁盤捲標命令 |
| SCANDISK | 檢測、修復磁盤命令 |
| DEFRAG | 重整磁盤命令 |
| SYS | 系統複製命令 |
| COPY | 文件複製命令 |
| XCOPY | 目錄複製命令 |
| TYPE | 顯示文件內容命令 |
| REN | 文件改名命令 |
| FC | 文件比較命令 |
| ATTRIB | 修改文件屬性命令 |
| DEL | 刪除文件命令 |
| UNDELETE | 恢復刪除命令 |
| VER | 查看系統版本號命令 |
| DATE | 查看日期命令 |
參考文獻[编辑]
- ^ 參閱 MS-DOS 條目
- ^ Hyde, Randall. CHAPTER EIGHTEEN: RESIDENT PROGRAMS (Part 3). The Art of Assembly Language Programming. 1996-09-30 [2008-09-02].
- ^ Batch File Help. computerhope.com. [2008-09-10].
- ^ Matczynski, Michael. ZINGTECH - Guide to the New Game Programmer. [2008-09-02].
- ^ Microsoft Windows MS DOS Device Name DoS Vulnerability. [2008-09-02].
- ^ DOS device names definition. PC Magazine. [2008-09-02].
- ^ 7.0 7.1 Drive Letter Assignment and Choosing Primary vs. Logical Partitions. The PC Guide. 2007-05-17 [2008-09-02].
- ^ Kozierok, Charles. The DOS Boot Process. The PC Guide. 2001 [2008-09-02].
- ^ 9.0 9.1 9.2 Rolander, Tom. 访谈. The rest of the story: How Bill Gates beat Gary Kildall in OS war, Part 1.
- ^ Bove, Tony. Just Say No to Microsoft. No Starch Press. 2005. 9-11. ISBN 159327064X.
- ^ Bellis, Mary. The Unusual History of MS-DOS The Microsoft Operating System. [2008-09-02].
- ^ Pollack, Andrew. Microsoft Widens Its Split With I.B.M. Over Software. New York Times. 1991-07-27 [2008-09-02].
- ^ Brinkley, Joel. I.B.M. Executive Describes Price Pressure by Microsoft. New York Times. 1999-05-28 [2008-09-02].
- ^ Jim Hall. The past, present, and future of the FreeDOS Project. 2002-03-25 [2008-06-14].
- ^ Hall, Jim. History of FreeDOS. freedos.org. September 23, 2006 [2007-05-28].
- ^ 16.0 16.1 James Bannan. HOW TO: Coax retro DOS games to play on Vista. 2006-10-13 [2008-07-03].
- ^ Finding The DOS In Windows 95. Smart Computing. 1996.March [2008-07-12].
- ^ Hall, Jim. Jim Hall. 2007-07-13 [2008-06-12].
- ^ Dell PCs Featuring FreeDOS. [2008-06-14].
- ^ GPL'd DOS workalike adds features. 2007-04-01 [2008-06-01].
- ^ DR DOS Embedded DOS. [2008-09-26].
- ^ Datalight DOS Selected for Canon's New Line of Digital Still Cameras. Business Wire. 1999-08-24 [2008-09-26].
- ^ 23.0 23.1 DOSBox Information. [2008-05-18].
- ^ DOSEMU Home. 2007-05-05 [2008-07-03].
- ^ DOS Games on Vista. 2008-03-11 [2008-09-02].
- ^ Darrow, Barbara. Whatever Happened To Lotus 1-2-3?. 1 February, 2002 [2008-07-12].
- ^ Murdock, Everett. DOS the Easy Way. EasyWay Downloadable Books. : 7–12. ISBN 0923178023.
- ^ Murdock, Everett. DOS the Easy Way. EasyWay Downloadable Books. : 71. ISBN 0923178023.
- ^ Dvorak, John; Nick Anis. Dvorak's Guide to DOS and PC Performance. Osborne McGraw-Hill. 1991: 442–444.
- ^ Murdock, Everett. DOS the Easy Way. EasyWay Downloadable Books. : 83. ISBN 0923178023.
- ^ DR DOS 6.0 User Guide. Digital Research. 1991: 320–324.
- ^ Perry, Greg; Jill Freeze. Sams Teach Yourself Windows XP Computer Basics All in One. Sams Publishing. 2003: 445. ISBN 0672325357.
- ^ Chapter 13 Multitasking and Task Switching. Caldera DR-DOS 7.02 User Guide. Caldera Systems. 1998 [2008-09-12].
- ^ DOS: still thriving after all these years. Software Magazine. Findarticles.com. 1990.May [2008-07-10].
- ^ Duncan, Ray. Extending DOS: A Programmer's Guide to Protected-Mode DOS 2. Addison-Wesley. 1991. ISBN 0201567989.
- ^ Mueller, Scott. Upgrading and Repairing PCs. Que Publishing. 2003. 812. ISBN 0789729741.
- ^ The Int 13 Interface. The PC Guide. storagereview.com. [2008-07-10].
參見[编辑]
- COMMAND.COM,DOS 和 Windows 9x 的命令列直譯器
- MS-DOS API
- MS-DOS
- IBM PC-DOS
- DR-DOS
- FreeDOS
- 作業系統
- 作業系統列表
- 微軟作業系統列表