热门问题
时间线
聊天
视角

DOS

個人計算機操作系統 来自维基百科,自由的百科全书

DOS
Remove ads

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

Thumb
DOS画面

DOS家族包括MS-DOSPC-DOSDR-DOSFreeDOSPTS-DOS英语PTS-DOSROM-DOS英语ROM-DOS、JM-OS等,其中以MS-DOS最为著名。虽然这些系统常被简称为“DOS”,但没有任何一个系统单纯以“DOS”命名(只有一个毫无关连的1960年代IBM大型主机作业系统英语DOS/360以此命名)。此外,有几个和DOS无关、在非x86的微电脑系统上执行的磁碟作业系统在名称中也有“DOS”字眼,而且在专门讨论该机器的场合中也会简称为“DOS”(例如:AmigaDOS英语AmigaDOSAMSDOS英语AMSDOSANDOS英语ANDOSApple DOSAtari DOS英语Atari DOSCommodore DOS英语Commodore DOSCSI-DOS英语CSI-DOSProDOSTRS-DOS英语TRS-DOS等),但这些系统和DOS执行档以及MS-DOS API并不相容。

Remove ads

设计架构

Thumb
放于IBM原装软碟机的DOS 5.25吋系统开机磁片

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

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

DOS的核心为使用者程式提供了各式各样的函式,例如:在萤幕上显示文字、从键盘读入字元、存取磁碟上的档案等等。

Remove ads

脚本语言

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

硬体存取

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

装置保留名称

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

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

磁碟命名法

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

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

Remove ads

开机流程

PC相容机的开机磁区(MBR)位于第 0 扇区。对于DOS来说,这段代码会将DOS的HAL读入记忆体中然后执行。在DR DOS及PC DOS中,这个HAL放在IBMBIO.COM英语IBMBIO.COM文件中;而MS DOS则是放在IO.SYS英语IO.SYS。接下来这个HAL会载入位于IBMDOS.COM英语IBMDOS.COM(PC DOS或DR DOS)或是MSDOS.SYS(MS DOS)里面的DOS内核。Windows 9x中附的DOS版本(MS DOS 7和8)将HAL和核心合并放在IO.SYS里面,而MSDOS.SYS则是文字格式的组态档案。然后DOS核心会去执行CONFIG.SYS英语CONFIG.SYS这个档案。在CONFIG.SYS中,SHELL这个命令指定了SHELL的档案位置(通常是COMMAND.COM)。接下来这个SHELL会被执行,然后它会去开启开机启动项(通常是AUTOEXEC.BAT[8]

Remove ads

历史

MS-DOS(以及经授权更换商标而成的IBM PC-DOS)以及它的前身86-DOS是受到Digital Research公司的CP/MControl Program / (for) Microcomputers)启发而完成的。CP/M是当时使用Intel 8080Zilog英语Zilog Z80这两颗8位元CPU的微电脑上最受欢迎的磁碟作业系统。

在1980年的时候,IBM使用Intel 8088微处理器,开发出了他们的第一台微电脑。他们需要一套能够在这台微电脑上使用的作业系统。IBM在找一套能和Intel 8088 (1979-1982)相容的CP/M,一开始找上了微软的执行长比尔·盖茨(可能是因为当时微软开发出了让CP/M可以在Apple II上执行的Z-80 SoftCard英语Z-80 SoftCard,所以IBM相信微软拥有CP/M[9])。IBM被转介到Digital Research,并且举行了相关的会议。然而,关于CP/M的使用权的初次谈判破裂了—因为Digital Research希望以权利金的方式贩售CP/M,但IBM希望单一授权,并且将名称改为"PC-DOS"DR的创始人盖瑞·基尔多拒绝签约,IBM因此放弃购买CP/M[9][10]

IBM再次找上比尔·盖茨。盖茨转而找上了Seattle Computer Products英语Seattle Computer Products(SCP)。SCP的程式员Tim Paterson英语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。[11]

微软也将这套系统授权给数个电脑公司。这些电脑公司贩售给他们的硬体使用的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相容机的主力作业系统。[9]

Digital Research曾试图挽回CP/M-86错失的市场。一开始是发行了DOS Plus英语DOS Plus,后来又发行了DR-DOS(这两者都同时与MS-DOS和CP/M-86的软体相容)。Digital Research被Novell买下,DR-DOS变成了Novell DOS 7。之后,它又成为Caldera Systems(以OpenDOS及DR DOS 7为名)、Lineo英语Lineo以及DeviceLogics英语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,也不再提供支援。于是吉姆·霍尔张贴了一份宣言,宣布要开发DOS的开放源始码替代品。在几个星期内,包括Pat Villani和Tim Norman的几位程式员加入了这个计划。他们利用共享他们撰写或现有程式码的方式,产生了核心、command.com命令直译器(shell界面)以及核心公用程式。在历经了数个版本的官方预览版本之后,FreeDOS 1.0版在2006年9月3日正式发布。使用FreeDOS不需支付任何的版权费用或权利金。[14][15]

Remove ads

淡出

早期版本的Microsoft Windows只是在DOS之上执行的应用程式。[16]大约在90年代初,Windows仍相当依赖新版本的DOS。一直到Windows for Workgroups 3.11,DOS才逐渐退居负责开机及载入Windows核心的角色。在Windows 95(以及其后推出的Windows 98与Me)中,MS-DOS核心依然存在,只是加上Windows当作系统的图形界面。Windows 95与98的MS-DOS元件可以在不开启Windows的情况下独立执行(但Windows Me不行)。[17]随著Windows的普及,大部份的电脑使用者都使用Windows,DOS也越来越少人使用。英特尔计画于2020年彻底舍弃Intel平台的UEFI CSM(即UEFI的Legacy BIOS开机支援),届时Intel平台的个人电脑将无法启动DOS系统。

Remove ads

持续发展

有些电脑制造商(包括DellHP)会预载FreeDOS当作OEM作业系统出货。[18][19]

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

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

嵌入式系统

由于DOS可以直接存取硬体,因此它很适合拿来控制嵌入式装置。新版本的DR-DOS便瞄准了这块市场。[21] 佳能的数位相机PowerShot Pro 70使用ROM-DOS做为嵌入式系统。[22]

模拟器

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

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

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

与Microsoft Windows的关系

纯32位元版本的Windows(从NT开始;包含了2003、XP和Vista)并非以DOS为基础的。这些系统中内含了一个NT DOS虚拟机器英语NT Virtual DOS Machine(NT Virtual DOS Machine,缩写为NTVDM),在上面执行一个修改过的DOS。原本以DOS为基础的系统使用传统的COMMAND.COM做为命令列界面,而Windows NT及其衍生版本则是使用cmd.exe(不过cmd.exe也移植了许多DOS的命令)。x64架构的Windows也有cmd.exe(命令提示字元),但是无法执行16位元DOS程式(没有NTVDM)。

软体

Thumb
Arachne互联网浏览器

由于DOS在长时间内是PC相容机的主要平台,有许多为DOS撰写的知名软体。例如:

易用性

用户界面

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

为了提供对使用者更友善的操作环境,许多的软体厂商纷纷推出各式各样的档案管理程式。这些程式通常使用选单及图示做为界面。Microsoft Windows就是其中最有名的例子,最后发展成为完整的作业系统,取代DOS成了PC相容机上最受欢迎的作业系统。使用文字模式的使用者界面有:Norton Commander英语Norton CommanderDos Navigator英语Dos NavigatorVolkov Commander英语Volkov Commander、Quarterdesk的DESQview英语DESQview,以及SideKick。使用图形用户界面的程式有:Digital Research的Graphical Environment Manager英语Graphical Environment Manager(最早是写给CP/M用的)以及GEOS英语GEOS

发展到最后,主要的DOS厂商开始在DOS中加入自己的环境管理程式。MS/PC-DOS 4中有DOS Shell英语DOS Shell[28]而次年发行的DR-DOS 5则加入了以GEM为基础的ViewMAX英语ViewMAX[29]

多工

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

限制

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

DOS还有硬碟分割区大小的限制。造成这个问题的原因有两个。首先,许多DOS类的作业系统只支援到FAT16,而FAT16在设计上就不支援超过2.1 GB的硬碟分割区。[36]另外,DOS存取硬碟的方式是透过INT 13这个中断呼叫,然后往下再利用CHS系统对应到磁碟上的资料。在这个架构下,作业系统只能看到8 GB的硬碟空间。[37]比较新的作业系统使用软体的方式(例如:32位元磁碟存取)存取硬碟。

FAT16和FAT12(用于软碟片)上的档案名称必须遵守“8.3命名规则”:档案的主档名不得超个8个字元,而副档名则不得超过3个字元。

命令集

(部分)

更多信息 命令, 备注 ...

参考文献

参见

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads