dos(/dɔːs/ /dɒs/)是磁盘操作系统的一个独立于平台的首字母缩略词,它已成为基于x86的IBM PC兼容产品的流行磁盘操作系统家族的常用缩写。操作系统主要由微软的微软操作系统(MS-DOS)和更名为个人电脑操作系统(PC DOS)的IBM版本组成,这两个版本都是在1981年推出的。其他制造商后来推出的兼容系统有DR-DOS(自1988年起由数字研究公司(Digital Research)推出,后来由Novell、Caldera、Lineo和DeviceLogics推出)、只读存储器ROM-DOS(自1989年起由Datalight公司推出)、PTS-DOS(自1993年起由Paragon Technology和PhysTechSoft推出)、嵌入式DOS(Embedded DOS)(由通用软件推出)、Free-Dos(1998年推出)和RxDos。微软操作系统在1981年至1995年间主导了国际商用机器兼容市场。
其他几十个操作系统也使用首字母缩略词“DOS”,包括1966年的大型机DOS/360。其他的有苹果DOS,苹果ProDOS,Atari OS,Commodore DOS,TRSDOS和AmigaDOS。哈哈哈
IBM个人电脑操作系统(PC-DOS)(以及单独出售的微软操作系统(MS-DOS))和它的前身86-DOS,类似于数字研究(Digital Research)公司的电脑操作系统——8位英特尔8080和Zilog Z80微型计算机的主要磁盘操作系统——但却运行在英特尔8086 16位处理器上。DR(%)=
当IBM推出采用英特尔8088微处理器构建的个人电脑时,他们需要一个操作系统。为了寻找8088兼容的电脑操作系统,IBM最初联系了微软首席执行官比尔·盖茨(可能认为微软拥有电脑操作系统是因为微软的Z-80软卡允许CP/M 系统在Apple II上运行)。国际商用机器公司(IBM)被派往数字研究(Digital Research)公司,并成立了一个会议。然而,关于使用CP/M 的最初谈判破裂了;数字研究公司希望在版税的基础上出售CP/M,而国际商用机器公司寻求单一许可证,并将其名称改为“个人电脑操作系统(PC DOS)”。数字研究创始人加里·基尔代尔拒绝了,而IBM退出了。
IBM再次接近比尔·盖茨。盖茨依次走近西雅图计算机产品公司(Seattle Computer Products)。在那里,程序员蒂姆·帕特森开发了一种CP/M-80的变体,旨在作为测试SCP的新的16位英特尔8086 CPU卡用于S-100总线的内部产品。该系统最初被命名为QDOS(快速脏操作系统),然后作为86-DOS在市场上销售。微软购买了86-DOS,据称价格为5万美元。这就是微软于1981年推出的磁盘操作系统。一年之内,微软授权70多家其他公司使用微软操作系统,这些公司为自己的硬件提供操作系统,有时是以自己的名义。微软后来要求使用微软操作系统的名称,但IBM的变体除外。国际商用机器公司继续为国际商用机器公司开发他们的个人电脑操作系统。数字研究公司(Digital Research)开始意识到,一个类似于CP/M的操作系统正在被IBM出售(与IBM坚持的电脑操作系统同名),并威胁要采取法律行动。作为回应,国际商用机器公司提出了一项协议:他们将让个人电脑消费者选择个人电脑操作系统(PC-DOS)或CP/M或科尔达尔(Kildall)的8086版电脑操作系统。与此同时,CP/M的成本比个人电脑操作系统高出近200美元,而且销售额很低。CP/M逐渐衰落,微软操作系统(MS-DOS)和个人电脑操作系统(PC-DOS)成为个人电脑和个人电脑兼容产品的市场操作系统。
微软最初只向原始设备制造商出售微软操作系统。其中一个主要原因是,并非所有早期的个人电脑都是100%兼容的。DOS的结构使得系统特定的设备驱动程序代码(IO.SYS)和操作系统内核(MSDOS.SYS)使用分离的模块。微软提供了原始设备制造商适配套件(OAK),允许原始设备制造商根据其特定系统定制设备驱动程序代码。到了20世纪90年代初,大多数电脑都遵循了IBM的电脑标准,所以微软开始零售微软的微软操作系统5.0。
20世纪80年代中期,微软开发了多任务操作系统。 此版本的DOS通常被称为“欧洲微软-DOS 4”(European MS-DOS 4),因为它是为ICL开发的,并被几家欧洲公司许可使用。此版本的DOS支持抢占式多任务处理、共享内存、设备助手服务和新的可执行文件(“NE”)格式的可执行文件。这些特性都没有在较高版本的DOS中使用,但是它们被用来构成OS/2 1.0内核的基础。这个版本的DOS不同于广泛发布的PC DOSDOS 4.0,它是由IBM开发的,基于DOS 3.3。
数字研究公司(Digital Research)试图从CP/M 86中夺回失去的市场,最初是并行操作系统(Concurrent DOS,)、FlexOS 和DOS Plus操作系统(两者都兼容微软操作系统(MS-DOS)和CP/M 86软件),后来是多用户操作系统(Multiuser DOS)(兼容微软操作系统(MS-DOS)和CP/M 86软件)和DR DOS(兼容微软操作系统(MS DOS)软件)。数字研究公司(Digital Research)被诺维尔(Novell)收购,DR DOS成为掌上操作系统(PalmDOS)和诺维尔操作系统(Novell DOS);后来,它成为卡尔德拉(Caldera )(名字是OpenDOS和DR-DOS 7.02/7.03、Lineo和设备逻辑(DeviceLogics)的一部分)。
戈登·莱特温(Gordon Letwin)在1995年写道,“当我们第一次编写DOS的时候,它是一种一次性的产品,旨在让IBM开心,这样他们就可以购买我们的语言”。微软预计这将是Xenix之前的临时解决方案。该公司计划随着时间的推移改进微软操作系统(MS-DOS),使其与单用户Xenix或XEDOS几乎无法区分,XEDOS也将运行在摩托罗拉68000、Zilog Z-8000和LSI-11上;它们将与Xenix向上兼容,Xenix在1983年被BYTE描述为“未来的多用户微软操作系统(MS-DOS)”。
然而,IBM不想取代DOS。AT&T开始出售Unix后,微软和IBM开始开发OS/2作为替代。两家公司后来就DOS的两个后续操作系统,OS/2和windows系统(Windows)产生了一系列分歧。结果是,他们将DOS系统的开发分开了。微软-DOS的最新零售版本是MS-DOS 6.22;此后,微软操作系统成为windows95、98和windows Me的一部分。个人电脑操作系统(PC DOS)的最后一个零售版本是个人电脑操作系统(PC DOS 2000)(也称为个人电脑操作系统7修订版1),尽管后来IBM为原始设备制造商和内部用户开发了个人电脑操作系统(PC DOS)7.10。
FreeDOS 项目始于1994年6月26日,当时微软宣布不再出售或支持微软操作系统(MS DOS)。吉姆·霍尔随后发表了一份宣言,提议开发一种开源的替代品。几周之内,包括帕特·维拉尼和蒂姆·诺曼在内的其他程序员也加入了这个项目。内核、命令行解释器(COMMAND.COM)和核心实用程序是通过汇集他们编写或发现的可用代码而创建的。在2006年9月3日发布免费版1.0之前,免费版有几个正式的预发布版本。免费软件根据通用公共许可证(GPL)提供,不需要许可费或版税。
微软windows的早期版本运行在一个独立的DOS版本上。 到了20世纪90年代初,windows图形界面在新的操作系统上得到大量使用。1995年,windows95被捆绑成一个独立的操作系统,不需要单独的DOS许可证。windows95(以及紧随其后的windows98和windows Me)取代了默认的操作系统内核,尽管微软操作系统组件仍然保持兼容性。有了windows95和98,但没有windows Me,微软操作系统组件可以在不启动windows的情况下运行。 由于windows不再需要使用DOS,大多数电脑用户不再直接使用它。
2012年可用的DOS系统有FreeDOS、DR-DOS、ROM-DOS、PTS-DOS、Rx DOS和REAL/32。包括戴尔和惠普在内的一些计算机制造商销售采用Free DOS和DR-DOS作为原始设备制造商(OEM)操作系统的计算机。
嵌入式系统
DOS直接访问硬件的结构使其非常适合在嵌入式设备中使用。DR-DOS的最终版本仍然瞄准这个市场。 ROM-DOS用作佳能PowerShot 70的嵌入式系统。
模拟器
在Linux上,可以在DOSEMU上运行DOS及其克隆的副本,这是一个以接近本机速度运行DOS程序的Linux本地虚拟机。在Unix和微软windows的不同版本上运行DOS还有许多其他模拟器,例如DOSBox。 DOSBox是为现代操作系统上的传统游戏(如《King's Quest》、《Doom》)而设计的。
所有DOS类型的操作系统都运行在具有英特尔x86或兼容处理器的机器上,主要是IBM个人电脑和兼容处理器。微软操作系统(MS-DOS)的机器相关版本是为许多与IBM不兼容的基于x86的机器生产的,从以制造商的名义重新标记微软的发行版,到专门设计用于与不兼容的硬件一起工作的版本。只要应用程序使用直接操作系统应用程序接口而不是直接硬件访问,它们就可以在兼容和不兼容的机器上运行。在1984年和1985年,数字研究(Digital Research)也有GEMDOS和并发(Concurrent DOS 68K)的版本供摩托罗拉68000处理器使用,而最初的FreeDOS内核DOS-C是从DOS/NT派生出来的,也是在1990年代初供摩托罗拉处理器使用。虽然这些系统与DOS体系结构有些相似,但由于这些非x86-CPu的指令集不兼容,应用程序不是二进制兼容的。然而,用高级语言编写的应用程序可以很容易地移植。
DOS是一种单用户、单任务操作系统,具有不可重入的基本内核功能:一次只有一个程序可以使用它们,而DOS本身没有允许一个以上程序同时执行的功能。DOS内核为程序(应用程序接口)提供各种功能,如字符输入/输出、文件管理、内存管理、程序加载和终止。
默认情况下,DOS通过批处理文件(扩展名为 .BAT)。这些是可以在任何文本编辑器中创建的文本文件。它们以与编译程序相同的方式执行,并以命令的形式运行批处理文件的每一行。批处理文件也可以使用几个内部命令,如GOTO和条件语句。DR DOS COMMAND.COM支持GOSUB和简单算法,有些还支持第三方外壳,如4DOS,然而,通常没有真正形式的编程被启用。
操作系统提供了一个应用程序编程接口,允许开发基于字符的应用程序,但不允许访问大多数硬件,如显卡、打印机或鼠标。这要求程序员直接访问硬件,通常导致每个应用程序对每个硬件外设都有自己的一组设备驱动程序。硬件制造商将发布规范,以确保流行应用需要的设备驱动程序可用。
引导扇区加载的DOS系统文件必须是连续的,并且是前两个目录条目。 因此,删除和添加此文件可能会导致媒体无法启动。然而,可以随意替换命令解释程序,这种方法可以用来更快地启动专用应用程序的执行。此限制不适用于DR DOS的任何版本,其中系统文件可以位于根目录中的任何位置,并且不需要是连续的。因此,只要引导扇区与DR DOS兼容,就可以简单地将系统文件复制到磁盘上。
在个人电脑操作系统(PC DOS)和DR DOS5.0及以上版本中,操作系统文件被命名为IBMBIO.COM而不IO.SYS。同时IBMDOS.COM替换了MSDOS.SYS。旧版本的DR DOS使用DRBIOS.SYS 和 DRBDOS.SYS 这两个文件。
从微软DOS 7.0开始,二进制文件IO.SYS和MSDOS.SYS 被合并成一个单一的文件IO.SYS,而MSDOS.SYS变成了一个类似于CONFIG.SYS 和自动批处理(AUTOEXEC.BAT) 的配置文件。如果MSDOS.SYS的 BootGUI指令设置为0,引导过程将随着命令处理器(通常是COMMAND.COM)的加载而停止,而不是自动执行WIN.COM。
DOS使用支持8.3文件名的文件系统:8个字符作为文件名,3个字符作为扩展名。支持从DOS 2开始的分层目录。每个目录名也是8.3格式,但是由于DOS维护的内部当前目录结构表(CDS)的限制,最大目录路径长度是64个字符。包括驱动器名,使用驱动器:\path\filename.ext格式,DOS支持的完全限定文件名的最大长度为80个字符,后跟一个空字节。
DOS使用文件分配表(FAT)文件系统。这最初是FAT12,每个驱动器最多支持4078个簇。DOS 3.0增加了对FAT16的支持,FAT 16使用16位分配条目,每个驱动器最多支持65518个簇。康柏的MS-DOS 3.31增加了对FAT16B的支持,取消了32 MB的驱动器限制,最多可支持512 MB。最后,微软操作系统7.1(windows9x的操作系统组件)增加了对FAT32的支持,FAT32使用32位分配条目,可以支持高达137 GB及以上的硬盘。
从DOS 3.1开始,文件重定向器支持被添加到DOS中。这最初用于支持联网,但后来用于支持MSCDEX的光盘驱动器。IBM的 PC DOS 4.0也有初步的可安装文件系统(IFS)的支持,但这个功能没有使用而在DOS 5.0中被删除。DOS还支持从CONFIG.SYS加载的块设备(“磁盘驱动器”设备),而这个在DOS文件系统下可以用来支持网络设备的系统。
驱动器命名方案
在磁盘操作系统中,驱动器名是通过字母来表示的。标准做法是为软驱保留“A”和“B”。在只有一个软驱的系统上,磁盘操作系统将两个字母分配给驱动器,提示用户在程序交替访问磁盘时交换磁盘。这便于从一张软盘复制到另一张软盘,或者让一个程序从一张软盘运行,同时访问另一张软盘上的数据。硬盘最初被赋予字母“C”和“D”。DOS每个驱动器只能支持一个活动分区。随着对更多硬盘驱动器的支持变得有必要,这发展为首先为每个驱动器的活动主分区分配一个驱动器号,然后在驱动器上进行第二次传递,以将驱动器号分配给扩展分区中的逻辑驱动器,然后进行第三次传递,以给任何其他非活动主分区命名(如果存在这样的附加分区并且包含支持DOS的文件系统)。最后,磁盘操作系统为光盘驱动器、内存磁盘和其他硬件分配字母。字母分配通常按照驱动程序加载的顺序进行,但是驱动程序可以指示DOS分配不同的字母;例如,网络驱动器的驱动程序通常在字母表末尾附近分配字母。
因为DOS应用程序直接使用这些驱动器号(不同于类Unix系统中的/dev目录),所以它们可能会因添加需要驱动器号的新硬件而中断。一个例子是添加一个具有主分区的新硬盘,其中已经存在的硬盘包含扩展分区中的逻辑驱动器;新驱动器将被分配一个先前分配给扩展分区逻辑驱动器之一的字母。此外,即使在扩展分区中添加一个只有逻辑驱动器的新硬盘驱动器,仍然会破坏内存磁盘和光驱的字母。这个问题在微软基于DOS的9x版本的windows中一直存在,直到被基于NT行的版本所取代,该版本保留现有驱动器的字母,直到用户更改它们。在磁盘操作系统下,这个问题可以通过定义一个子磁盘驱动器并将磁盘操作系统程序安装到这个逻辑驱动器中来解决。无论何时应用程序启动,都会在批处理作业中更改该驱动器的分配。在某些版本的并发操作系统下,以及在多用户操作系统、系统管理器和REAL/32下,每当应用程序启动时,保留的驱动器号L:将自动分配给相应的负载驱动器。
保留的设备名称
DOS中有保留的设备名,无论扩展名如何,都不能用作文件名,因为它们被内置字符设备占用。这些限制还会影响几个windows版本,在某些情况下会导致崩溃和安全漏洞。
保留的名称是:CON(控制台)、AUX(辅助)、PRN(打印机)和LST(列表),它们是由86-DOS 0.74引入的。86-DOS 1.10和PC DOS 1.0增加了NUL。除了LST,从那时起,微软的MS DOS、PC DOS和DR-DOS的所有版本都继续支持它们。LST还在微软-DOS 1.25的一些原始设备制造商版本上可见,而MS-DOS 1.25的其他原始设备制造商(OEM)版本已经使用LPT1(第一行打印机)和COM1(第一串行通信设备)代替,这是随PC DOS而引入的。除了LPT1和LPT2以及COM1至COM3之外,惠普针对惠普便携式Plus的MS-DOS 2.11还支持LST作为LPT2的别名和82164A作为COM2的别名;它还支持PLTfor用于绘图仪。另外,DOS 2.0引入了COM2、LPT2、LPT3和CLOCK$(在MS-DOS 2.11的一些发行版中仍称为CLOCK)时钟设备,DOS 3.3增加了COM3和COM4。只有多任务MS DOS 4支持KEYBD$
和SCREEN$
。DR DOS 5.0及更高版本和多用户DOS支持$IDLE$设备进行动态空闲检测,以节省电能和改进多任务处理。LPT4是一个可选的内置驱动程序,用于自7.02以来在DR-DOS的某些版本中支持的第四行打印机。CONFIG$
构成了微软-DOS 7.0-8.0中的真实模式PnP管理器。
辅助设备通常默认为COM1,PRN默认为LPT1 (LST),但在某些版本的DOS中,这些默认值可以更改为指向其他串行或并行设备。PLT也是可重新配置的。
文件名以冒号(:)结尾,如NUL:通常表示设备名称,但冒号实际上不是内置设备驱动程序名称的一部分。在某些情况下,不需要键入冒号,例如:
ECHO This achieves nothing > NUL
仍然可以使用这些保留的设备名称创建文件或目录,例如通过直接编辑磁盘扇区中的目录数据结构。这种命名,例如以空格开头的文件名,有时被病毒或黑客程序用来屏蔽不知道如何访问这些位置的用户的文件。
DOS最初是为英特尔8086/8088处理器设计的,因此最多只能直接访问1 MB的内存。由于电脑架构的原因,最多只有640千字节(称为传统内存)可用,因为最前面的384千字节被保留。
开发了允许访问额外内存的规范。第一个是扩展内存规范(EMS),它最初允许通过保留的上部内存区域中的64 KB页面帧访问附加卡上的内存。80386和更高版本的系统可以使用虚拟8086模式(V86)内存管理器,如EMM386,从扩展内存创建扩大的内存区域,而不需要附加卡。第二个规范是80286和更高版本系统的扩展内存规范(XMS)。这提供了一种将数据复制到扩展内存和从扩展内存复制数据的方法,可以访问第一兆字节内存正上方的65520字节高内存区域(HMA)和高内存块(UMB)区域。一般来说,XMS支持由HIMEM.SYS文件提供。V86模式内存管理器,如QEMM或386MAX,也支持EMS。
从DOS 5开始,DOS可以直接利用HMA,通过配置系统(CONFIG.SYS)中的DOS =HIGH语句加载内核代码和磁盘缓冲区到HMA
OS/2和windows中的DOS仿真运行方式与本地应用程序非常相似。他们可以访问所有的驱动器和服务,甚至可以使用主机的剪贴板服务。因为文件系统等的驱动程序驻留在主机系统中,所以DOS仿真只需要提供一个将DOS调用转换为OS/2或windows系统调用的DOS应用编程接口翻译层。转换层通常还转换基本输入输出系统(BIOS)调用,并虚拟化许多操作系统程序通常使用的通用输入输出端口访问。
在windows3.1和9x中,DOS虚拟机由WINOLDAP提供。WinOldAp基于程序的PIF文件和加载窗口时的系统状态创建虚拟机。DOS图形模式,包括字符和图形,可以在窗口中捕获和运行。DOS应用程序可以通过访问WinOldAp中额外发布的调用来使用窗口剪贴板,并且可以通过WinOldAp图形粘贴文本。
OS/2和windows操作系统NT中的DOS 模拟器 是基于DOS 5的。虽然有默认配置(config.sys和autoexec.bat),但是可以逐个会话地使用备用文件。可以在这些文件中加载驱动程序来访问主机系统,尽管这些驱动程序通常是第三方的。
在OS/2 2.x和更高版本下,DOS仿真由DOSKRNL提供。这是一个代表IBMBIO.COM和IBMDOS.COM组合的文件,系统调用被传递到OS/2窗口服务。DOS程序在自己的环境中运行,大部分的DOS实用程序是由目录中绑定的DOS / OS2应用程序提供的。OS/2可以通过使用修改后的windows副本(Win-OS/2)来运行windows3.1应用程序。这些修改允许windows3.1程序在OS/2桌面上无缝运行,或者可以启动一个WinOS/2桌面,类似于从操作系统启动windows。
OS/2允许“从驱动器A中启动磁盘操作系统(DOS)”:(VMDISK)。这是一个真正的DOS,像MS DOS 6.22或PC DOS 5.00。可以制作一张可引导的磁盘,从OS/2中添加一些驱动程序,然后创建一个特殊的镜像。以这种方式引导的DOS可以完全访问系统,但提供自己的硬件驱动程序。可以使用这样的磁盘来访问没有OS/2驱动程序的光驱。
自1993年以来,在windowsNT系列的所有32位(IA-32)版本中,DOS仿真都是通过虚拟DOS机器(NTVDM)提供的。64位版本的windows不支持NTVDM,不能直接运行16位操作系统应用程序;第三方仿真器,如DOSbox,可以用来在这些机器上运行DOS程序。
DOS系统使用命令行界面。程序通过在命令提示符下输入文件名来启动。DOS系统包括几个程序作为系统实用程序,并提供与程序不对应的附加命令(内部命令)。
为了提供更加用户友好的环境,许多软件制造商编写了文件管理程序,为用户提供基于菜单和/或图标的界面。微软windows是一个显著的例子,最终导致微软windows9x成为一个独立的程序加载器,并取代DOS成为最常用的个人电脑兼容程序加载器。文本用户界面程序包括诺顿指挥官(Norton Commander)、DOS导航器(Navigator)、沃尔科夫指挥官(Volkov Commander)、Quarterdesk DESQview 和Sidekick。图形用户界面程序包括数字研究(Digital Research)的GEM(最初为CP/M编写)和GEOS。
最终,主要DOS系统的制造商开始包括他们自己的环境管理器。微软操作系统(MS DOS)/IBM DOS 4包括操作系统外壳(DOS Shell);第二年发布的DR DOS 5.0包括基于GEM的ViewMAX。
DOS不是一个多任务操作系统。然而,DOS确实提供了一个终止和驻留(TSR)功能,允许程序保持驻留在内存中。这些程序可以连接系统定时器和/或键盘中断,以允许它们自己在后台运行任务,或者在任何时候被调用,从而在程序特定的基础上有效地实现简单形式的多任务处理。PRINT命令这样做是为了实现后台打印假脱机。弹出个人信息管理器Borland Sidekick也使用了这种技术。
终止和驻留程序也用于提供默认情况下不可用的附加功能。像CED和DOSKEY这样的程序提供的命令行编辑功能超出了COMMAND.COM的范围。微软光盘扩展(MSCDEX)等程序提供了对光盘上文件的访问。
一些驻留程序(TSR)甚至可以执行一种基本形式的任务切换。例如,共享软件程序Back and Forth (1990)有一个热键来将当前运行的程序的状态保存到磁盘,加载另一个程序,然后切换到它,因此可以在程序之间“来回”切换,尽管由于需要访问磁盘而速度很慢。然而,Back and Forth无法启用后台处理;这需要DESQview (至少在386上)。
DOS是主要的个人电脑兼容平台,许多著名的程序都是为它编写的。其中包括:
暂无