您的位置:小海船>>有关学习>>DOS

DOS ~ 1

返回

什么是DOS ~ DOS只有MS-DOS吗 ~ DOS的设计构架 ~ DOS的昨天、今天和明天

 

a.什么是DOS?
DOS,是磁碟操作系统(英文:Disk Operating System)的缩写,是个人电脑上的一类操作系统。从1981年直到1995年的15年间,DOS在IBM PC 兼容机市场中占有举足轻重的地位。而且,若是把部份以DOS为基础的Microsoft Windows版本,如Windows 95、98和Me等都算进去的话,那么其商业寿命至少可以算到2000年。

b.DOS只有MS-DOS吗?
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(应用程序接口)并不兼容。

c.DOS的设计构架
所有 DOS 类的操作系统都是在使用 Intel x86 或其兼容 CPU 的机器上运行的(主要是 IBM PC 及其 兼容机)。最早的时候,DOS 并未受限于此;为了在许多以 x86 为基础,但和 IBM PC 不兼容的机器上运行,产生了不少特定机器版本的 DOS 及类似的操作系统。

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

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

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

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

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

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

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

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

开机流程
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)。

d.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) 的首席执行官比尔.盖玆 (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。

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)上发生了一连串争执。 他们在 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 只是在 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 不行)。随着 Windows 的普及,大部份的电脑用户都使用 Windows,DOS 也越来越少人使用。

持续发展
有些电脑制造商(包括 Dell 和 HP)会预载 FreeDOS 当作 OEM 操作系统出货。

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

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


 


Lifesea 2004
By Dung 2005-2010