Friday, August 18, 2017

DOS简史及模拟器

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-DOSFreeDOS、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软件,如DOSBoxScummVM,主要的设计目标是在当前的操作系统上运行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 查看日期命令

Leave a Reply

Your email address will not be published. Required fields are marked *