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 | 查看日期命令 |