DOS


DOS (正體)

DOS(“磁盘操作系统 (Disk Operating System)”的缩写)[1] 泛指数个关系密切的操作系统。这些操作系统在 1981 到 1995 年间在 IBM PC 兼容机市场中占有举足轻重的地位。(若是把部份以 DOS 为基础的 Microsoft Windows 版本,如 Windows 9598Me 等都算进去的话,那么其商业寿命可以算到 2000 年)

相关的系统包括了 MS-DOSPC-DOSDR-DOSFreeDOS、PTS- DOS、ROM-DOS、JM-OS,以及数个其他的系统。

虽然这些系统常被称为 "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 及类似的操作系统。[2]

DOS 是单一用户、单工的操作系统,拥有不可重入的基本内核函数(意即同时间只能有一个程序调用这些函数)。有一个例外的状况,就是常驻程序(Terminate and Stay Resident,缩写为 TSR)。某些常驻程序允许用户多任务操作;然而此时仍有“内核不可重入”的问题:当一个进程 (process) 调用了操作系统内核中的服务函数(也就是系统调用)时,在这个调用退出之前,其他的进程绝对不能进行系统调用、打断第一个进程。[3]

DOS 的内核为用户程序提供了各式各样的函数,例如:在屏幕上显示文字、从键盘读入字符、访问磁盘上的文件等等。

脚本语言

主条目:批处理

DOS 通过 批次档扩展名.BAT)提供界面脚本的功能。这些文件是纯文字格式的,可以用任何的文本编辑器(像是 MS-DOS Editor)编辑。他们运行起来和编译而成的程序没有两样。文件中的每一行都被视为命令来运行。批次档也可以使用数个内部命令,例如 goto 和条件判断式。[4]

硬件访问

参见:BIOS 中断调用

DOS 提供了简单的硬件抽象层,让程序员可以开发文字界面的应用程序;但这个硬件抽象层无法访问大部份的计算机硬件,像是显卡打印机,或是鼠标等。这使得程序员必须直接访问硬件,导致每个应用程序都有属于自己的一组硬件周边驱动程序。硬件制造商会将他们的硬件规格书释出,以确保在受欢迎的应用程序中有它们的驱动程序。[5]

设备保留名称

主条目:设备文件系统

在 DOS 中,有数个名称保留给设备使用,无法拿来当一般文件的名称(不管扩展名是什么);这些保留名称是用来将应用程序的输出传送给硬件周边用的。这样的限制也影响到数个版本的 Windows,在某些情况下甚至会造成当机和安全性弱点。[6]

其中一些保留名称有:NUL:COM1:AUX:COM2:COM3:COM4:CON:LPT1:PRN:LPT2:LPT3:,以及 CLOCK$[7]

磁盘命名法

主条目:磁盘代号的指派

在 DOS 中,磁盘驱动器是利用不同的字母命名的。标准的作法是保留 "A" 和 "B" 给软驱。若是系统只有一台软驱的话,DOS 允许这台软驱同时使用这两个代号,然后 DOS 会要求用户更换磁片。这么做可以让用户把文件拷贝到不同的软盘片上,或是运行某一片软盘片上的程序,然后把数据文件存在另一片软盘片上。最早硬盘的代号为 "C" 和 "D"。在一台硬盘驱动器上,DOS 只允许一个活动分割区的存在。随着支持的硬盘数量越来越多,磁盘代号的命名方法演变为:先将磁盘代号指派给每一颗硬盘驱动器的活动主分割区,然后第二轮将代号指派给延伸分割区中的逻辑磁盘区,第三轮再把代号指定给非活动的主分割区。(前题是:它们存在,而且包含了 DOS 可以读取的文件系统。)最后,DOS 才将代号指派给光驱RAM disk,以及其他的硬件。一般来说,磁盘代号都是依照驱动程序的加载顺序,按字母顺序指派的,但驱动程序也可以要求 DOS 指派不同的字母。例如网络磁盘驱动器的驱动程序通常会指派最后的几个字母。[8]

因为 DOS 的应用程序会直接使用这些磁盘代号(和 Unix 类系统使用/dev 目录的方法不同),因此若是新增了需要分配磁盘代号的硬件,可能会导致这些应用程序出错。举例来说:若是原本硬盘中的延伸分割区中存在逻辑磁盘区,此时新增一颗有主分割区的硬盘的话,由于主分割区拥有较高的分配优先权,所以原本硬盘的逻辑磁盘区的代号就会改变。此外,就算是新增一颗只有延伸分割区和逻辑磁盘区的硬盘,还是会影响到 RAM disk 及光驱的代号。这个问题一直到 9x 系列的 Windows 都仍然存在;NT 系列才有解决方案:磁盘代号会保留给已存在的磁盘驱动器机,除非用户手动更改。[8]

开机流程

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[9]

历史

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[10])。IBM 被转介到 Digital Research,并且举行了相关的会议。然而,关于 CP/M 的使用权的初次谈判破裂了—因为 Digital Research 希望以权利金的方式贩售 CP/M,但 IBM 希望单一授权,并且将名称改为 "PC-DOS"。DR 的创始人 Gary Kildall 拒绝签约,IBM 因此放弃购买 CP/M。[10][11]

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。[12]

微软也将这套系统授权给数个计算机公司。这些计算机公司贩售给他们的硬件使用的 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 兼容机的主力操作系统。[10]

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)上发生了一连串争执。[13] 他们在 DOS 系统上的开发也因此分道扬镳。[14] 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 不需支付任何的版权费用或权利金。[15][16]

淡出

早期版本的 Microsoft Windows 只是在 DOS 之上运行的应用程序。[17] 大约在 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 不行)。[18] 随着 Windows 的普及,大部份的计算机用户都使用 Windows,DOS 也越来越少人使用。

持续发展

有些计算机制造商(包括 DellHP)会预载 FreeDOS 当作 OEM 操作系统出货。[19][20]

有一套以 GPL 方式授权的 DOS,名为 NX-DOS,目前正在开发中。它是一套 16 位的即时操作系统,拥有网络功能,可以从软盘片开机,还有一个不太完整的 USB 驱动程序。NX-DOS 项目从 1992 年就开始了,原本是个个人项目,在 2005 年的时候以 GPL 方式释出。[21]

目前仍可取得的 DOS 系统有 DR-DOS(以及加强的 DR-DOS)、俄国人开发的 PTS-DOS、ROM-DOS、FreeDOS、NX-DOS、Multiuser DOS(以 Digital Research 的 Concurrent DOS 为基础)....等等。


嵌入式系统

由于 DOS 可以直接访问硬件,因此它很适合拿来控制嵌入式设备。新版本的 DR-DOS 便瞄准了这块市场。[22] 佳能的数码相机 PowerShot Pro 70 使用 ROM-DOS 做为嵌入式系统。[23]

模拟器

Linux 下,使用 DOSEMU(一套用来运行真实模式程序的 Linux 本地虚拟机)可以运行 DOS 及其派生版本。另外在各个版本的 UNIX 下也有许多用来运行 DOS 的模拟器,有些甚至在非 x86 的平台上也可以运行,像是 DOSBox[24][25]

由于 Windows XPVista 无法和纯 DOS 兼容,DOS 模拟器在这些系统上也越来越流行。这些模拟器可以用来运行过去的老软件或其他 DOS 软件。其中一个最为知名的是 DOSBox,主要的设计目标是在当前的操作系统上运行 DOS 的游戏程序。[24][17]

Microsoft Virtual PC 下也可以运行 DOS 的应用程序,兼容性比 DOS 模拟器好。用户可以安装合法的 MS-DOS,然后除了那些最难对付的应用程序以外,绝大部份的 DOS 应用程序都可以在上面运行。[26]

与 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 的命令)。

版本

参阅 x86 DOS 操作系统比较表与 x86 DOS 操作系统时间表.

软件

Arachne web browser
See also:DOS software

由于 DOS 是 PC 兼容机的主要平台,有许多为 DOS 撰写的知名软件。其中包括了:

易用性

用户界面

所有的 DOS 均使用命令行界面。运行程序的方法是在命令行中键入程序的名称。DOS 系统包含一些公用程序,也提供了一些不是以程序方式存在的命令(通常被称为 内部命令)。[28]

为了提供对用户更友善的操作环境,许多的软件厂商纷纷推出各式各样的文件管理程序。这些程序通常使用菜单及图标做为界面。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;[29] 而次年发行的 DR-DOS 5 则加入了以 GEM 为基础的 ViewMAX。[30]

多任务

在最初的设计中,DOS 是一个单工的操作系统。MS/PC-DOS 使用 DOS shell 做到任务切换的功能,[31] 而 DR-DOS 则是在 DR-DOS 6 中利用 TaskMAX 做到类似的功能。[32] MS/PC-DOS 自始至终都没有多任务的能力;[33] DR-DOS 则是在 DR-DOS 7 中提供了这个功能(DR-DOS 的 DPMI 必须启用)。[34]

限制

DOS 的架构有数项恼人的限制。最早的 8088 微处理器只能寻址到 1 MB 的物理内存空间。由于附加的硬件设备也必须映射到这段空间,因此最高可以使用的存储器只有 640 KB(被称为“传统存储器”)。在 DOS 的结构上,640 KB 被视为最大的存储器空间,DOS 无法寻址更高的地址。早期避开这个问题的做法是使用扩展存储器80286 出来之后,发展出了延伸存储器。虽然这些技术提供了更多的存储器应用程序,但应用程序仍必须从传统存储器开始运行,占用 640 KB 中的部份空间。80386 微处理器使用了重新设计的保护模式,应用程序可以通过 DOS extender 及 DOS 保护模式界面(DOS Protected Mode Interface,缩写为 DPMI)等技术使用额外的存储器,也可以有多任务的功能。[35][36]

DOS 还有硬盘分割区大小的限制。造成这个问题的原因有两个。首先,许多 DOS 类的操作系统只支持到 FAT16,而 FAT16 在设计上就不支持超过 2.1 GB 的硬盘分割区。[37] 另外,DOS 访问硬盘的方式是通过 INT 13 这个中断调用,然后往下再利用 CHS 系统对应到磁盘上的数据。在这个架构下,操作系统只能看到 8 GB 的硬盘空间。[38] 比较新的操作系统使用软件的方式(例如: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 查看日期命令

注释

  1. ^ Murdock, Everett(1988).DOS the Easy Way.EasyWay Downloadable Books.ISBN 0923178007. 
  2. ^ 参阅 MS-DOS 条目
  3. ^ Hyde, Randall(1996年9月30日).CHAPTER EIGHTEEN: RESIDENT PROGRAMS (Part 3).The Art of Assembly Language Programming.于2008年9月2日查阅.
  4. ^ Batch File Help.computerhope.com.于2008年9月10日查阅.
  5. ^ Matczynski, Michael.ZINGTECH - Guide to the New Game Programmer.于2008年9月2日查阅.
  6. ^ Microsoft Windows MS DOS Device Name DoS Vulnerability.于2008年9月2日查阅.
  7. ^ DOS device names definition.PC Magazine.于2008年9月2日查阅.
  8. ^ 8.0 8.1 Drive Letter Assignment and Choosing Primary vs. Logical Partitions.The PC Guide(2007年5月17日).于2008年9月2日查阅.
  9. ^ Kozierok, Charles(2001年).The DOS Boot Process.The PC Guide.于2008年9月2日查阅.
  10. ^ 10.0 10.1 10.2 Rolander, Tom. Interview. The rest of the story: How Bill Gates beat Gary Kildall in OS war, Part 1.
  11. ^ Bove, Tony(2005).Just Say No to Microsoft.No Starch Press.ISBN 159327064X. 
  12. ^ Bellis, Mary.The Unusual History of MS-DOS The Microsoft Operating System.于2008年9月2日查阅.
  13. ^ Pollack, Andrew(1991年7月27日).Microsoft Widens Its Split With I.B.M. Over Software.New York Times.于2008年9月2日查阅.
  14. ^ Brinkley, Joel(1999年5月28日).I.B.M. Executive Describes Price Pressure by Microsoft.New York Times.于2008年9月2日查阅.
  15. ^ Jim Hall(2002年3月25日).The past, present, and future of the FreeDOS Project.于2008年6月14日查阅.
  16. ^ Hall, Jim(2006年9月23日).History of FreeDOS.freedos.org.于2007年5月28日查阅.
  17. ^ 17.0 17.1 James Bannan(2006年10月13日).HOW TO: Coax retro DOS games to play on Vista.于2008年7月3日查阅.
  18. ^ Finding The DOS In Windows 95.Smart Computing(1996年March月).于2008年7月12日查阅.
  19. ^ Hall, Jim(2007年7月13日).Jim Hall.于2008年6月12日查阅.
  20. ^ Dell PCs Featuring FreeDOS.于2008年6月14日查阅.
  21. ^ GPL'd DOS workalike adds features(2007年4月1日).于2008年6月1日查阅.
  22. ^ DR DOS Embedded DOS.于2008年9月26日查阅.
  23. ^ Datalight DOS Selected for Canon's New Line of Digital Still Cameras.Business Wire(1999年8月24日).于2008年9月26日查阅.
  24. ^ 24.0 24.1 DOSBox Information.于2008年5月18日查阅.
  25. ^ DOSEMU Home(2007年5月5日).于2008年7月3日查阅.
  26. ^ DOS Games on Vista(2008年3月11日).于2008年9月2日查阅.
  27. ^ Darrow, Barbara(2009年2月1日).Whatever Happened To Lotus 1-2-3?.于2008年7月12日查阅.
  28. ^ Murdock, Everett.DOS the Easy Way.EasyWay Downloadable Books,7–12.ISBN 0923178023. 
  29. ^ Murdock, Everett.DOS the Easy Way.EasyWay Downloadable Books,71.ISBN 0923178023. 
  30. ^ Dvorak, John,Nick Anis(1991).Dvorak's Guide to DOS and PC Performance.Osborne McGraw-Hill,442–444. 
  31. ^ Murdock, Everett.DOS the Easy Way.EasyWay Downloadable Books,83.ISBN 0923178023. 
  32. ^ (1991)DR DOS 6.0 User Guide.Digital Research,320–324. 
  33. ^ Perry, Greg,Jill Freeze(2003).Sams Teach Yourself Windows XP Computer Basics All in One.Sams Publishing,445.ISBN 0672325357. 
  34. ^ Chapter 13 Multitasking and Task Switching.Caldera DR-DOS 7.02 User Guide.Caldera Systems(1998年).于2008年9月12日查阅.
  35. ^ DOS: still thriving after all these years.Software Magazine.Findarticles.com(1990年May月).于2008年7月10日查阅.
  36. ^ Duncan, Ray(1991).Extending DOS: A Programmer's Guide to Protected-Mode DOS,2,Addison-Wesley.ISBN 0201567989. 
  37. ^ Mueller, Scott(2003).Upgrading and Repairing PCs.Que Publishing.ISBN 0789729741. 
  38. ^ The Int 13 Interface.The PC Guide.storagereview.com.于2008年7月10日查阅.

参看







stock | retire | vm
Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History