Friday, November 22, 2019

DOS簡史及模擬器

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軟件,如DOSBoxScummVM,主要的設計目標是在當前的操作系統上運行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 查看日期命令

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.