DOS是磁盤操作系統(英文:Disk Operating System)的縮寫,是個人計算機上的一類操作系統。從1981年直到1995年的15年間,DOS在IBM PC兼容機市場中佔有舉足輕重的地位。而且,若是把部份以DOS為基礎的Microsoft Windows版本,如Windows 95、98和Me等都算進去的話,那麼其商業壽命至少可以算到2000年。
DOS簡史
DOS家族包括MS-DOS、PC-DOS、DR-DOS、FreeDOS、PTS-DOS、ROM-DOS、JM-OS等,其中以MS-DOS最為著名。
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)的首席執行官比爾·蓋茨(可能是因為當時微軟開發出了讓CP/M可以在Apple II上運行的Z-80 SoftCard,所以IBM相信微軟擁有CP/M)。IBM被轉介到Digital Research,並且舉行了相關的會議。然而,關於CP/M的使用權的初次談判破裂了—因為Digital Research希望以權利金的方式販售CP/M,但IBM希望單一授權,並且將名稱改為”PC-DOS”。DR的創始人Gary Kildall拒絕簽約,IBM因此放棄購買CP/M。
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。
微軟也將這套系統授權給數個計算機公司。這些計算機公司販售給他們的硬件使用的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兼容機的主力操作系統。
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不需支付任何的版權費用或權利金。
與Microsoft Windows的關係
早期版本的Microsoft Windows只是在DOS之上運行的應用程序。大約在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不行)。
純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現狀
目前仍可取得的DOS系統有DR-DOS(以及加強的DR-DOS)、俄國人開發的PTS-DOS、ROM-DOS、FreeDOS、NX-DOS、Multiuser DOS(以Digital Research的Concurrent DOS為基礎)….等等。
由於DOS可以直接訪問硬件,因此它很適合拿來控制嵌入式設備。新版本的DR-DOS便瞄準了這塊市場。佳能的數碼相機PowerShot Pro 70使用ROM-DOS做為嵌入式系統。
DOS模擬器
在Linux下,使用DOSEMU(一套用來運行實模式程序的Linux原生虛擬機)可以運行DOS及其派生版本。
在各個版本的UNIX下也有許多用來運行DOS的模擬器,有些甚至在非x86的平台上也可以運行,像是DOSBox。
在Mac OS X也有用來運行DOS的模擬器,如Boxer。
由於Windows XP和Vista無法和純DOS兼容,DOS模擬器在這些系統上也越來越流行。這些模擬器可以用來運行過去的老軟件或其他DOS軟件,如DOSBox和ScummVM,主要的設計目標是在當前的操作系統上運行DOS的遊戲程序。
在Microsoft Virtual PC下也可以運行DOS的應用程序,兼容性比DOS模擬器好。用戶可以安裝合法的MS-DOS,然後除了那些最難對付的應用程序以外,絕大部份的DOS應用程序都可以在上面運行。
如果需要純DOS環境,可以安裝MaxDOS。
DOS的局限性
DOS的架構有數項惱人的限制。最早的8088微處理器只能尋址到1 MB的物理內存空間。由於附加的硬件設備也必須映射到這段空間,因此最高可以使用的存儲器只有640 KB(被稱為“傳統存儲器”)。在DOS的結構上,640 KB被視為最大的存儲器空間,DOS無法尋址更高的地址。早期避開這個問題的做法是使用擴展存儲器;80286出來之後,發展出了延伸存儲器。雖然這些技術提供了更多的存儲器應用程序,但應用程序仍必須從傳統存儲器開始運行,佔用640 KB中的部份空間。80386微處理器使用了重新設計的保護模式,應用程序可以通過DOS extender及DOS保護模式界面(DOS Protected Mode Interface,縮寫為DPMI)等技術使用額外的存儲器,也可以有多任務的功能。
DOS還有硬盤分區大小的限制。造成這個問題的原因有兩個。首先,許多DOS類的操作系統只支持到FAT16,而FAT16在設計上就不支持超過2.1 GB的硬盤分區。另外,DOS訪問硬盤的方式是通過INT 13這個中斷調用,然後往下再利用CHS系統對應到磁盤上的數據。在這個架構下,操作系統只能看到8 GB的硬盤空間。比較新的操作系統使用軟件的方式(例如:32位磁盤訪問)訪問硬盤。
FAT16和FAT12(用於軟盤)上的文件名稱必須遵守“8.3命名規則”:文件的文件主名不得超個8個字符,而擴展名則不得超過3個字符。
DOS命令集(部分)
命令 | 備註 |
---|---|
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 | 查看日期命令 |