标 题: DOS的历史之四
发信站: BBS 水木清华站 (Thu May 20 01:12:42 1999)
发信人: dos (白兔仔), 信区: DOS
标 题: DOS的历史之四
发信站: 逸仙时空 Yat-sen Channel (Sun Apr 4 10:30:01 1999), 站内信件
最早的IBM PC是基于软盘的系统,使用软盘驱动趋A和B。最早的PC不支持当时非常
昂贵的硬盘。当IBM发表包括10MB硬盘的IBM PC XT计划时,Microsoft开发了新的用于
DOS的文件系统。MS-DOS1.0版本及格1.1版本不支持分层目录,而对于硬盘,着样的目录
是必须的。
Microsoft选择开发小型机UNIX操作系统相似的分层目录结构。UNIX当时开始流行。
由于文件控制块不支持用于目录路径名的空间,因此Microsoft保留文件控制块并使2.0
版本基于文件句柄管理文件.DOS使用文件句柄的第二个好处是能够实现重定向功能(也是
UNIX的一个普通功能)。
使用DOS2.0版本,IBM变得很成功,并且DOS和CP/M操作系统一起成为可选的操作系
统。由于PC机的流行,很多硬件生产厂家开发基于PC的产品。为帮助这些厂家汇集其产
品,MS-DOS2.0提供支持可安装设备驱动程序,首次提供了CONFIG.SYS预配置文件。DOS
2.0版本包含很多UNIX的特性,然而,UNIX是一允许许多个用户同时运行多个程序的多
用户操作系统。
为提供多任务的简化格式,DOS2.0版本提供了诸如GRAPHICS及PRINT这样的内存驻留
程序。
在DOS2版本之后,Microsoft又发表了MS-DOS2.01,该版本支持国际字符集。在这期
间,IBM推出了其短寿命的IBM PCJr计算机。为支持PCJe,Microsoft又为IBM开发了PC-
DOS2.1。后来Microsoft又将这两个最后的DOS版本结合在一起产生了MS-DOS2.11。1983
年,Microsoft发表了MS-DOS2.25版本,该版本包括了定位故障并支持扩展ASCII字符集。
--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·
(本文采用S-Term文章拷贝脚本拷贝)
==================================================
Gemini 解答
这篇文章简要概述了 DOS 从 1.x 演进到 2.x 系列的关键技术转折点。以下是对文中提到的技术演进、背景及历史细节的补充与修正:
1. 文件系统的重大演进:从 FCB 到文件句柄
MS-DOS 1.0 的文件操作完全沿袭了 CP/M 的**文件控制块(FCB, File Control Block)**模式。FCB 是一种定长的数据结构,包含文件名、扩展名、文件大小及磁盘位置等信息,且必须由应用程序在内存中维护。这种设计的局限性在于它不支持路径名,因为 FCB 结构中没有存储路径的空间。
随着 1983 年 IBM PC XT(机型 5160)的推出,引入了 10MB 的硬盘。为了管理庞大的存储空间,MS-DOS 2.0 引入了分层目录结构(Hierarchical Directory Structure)和文件句柄(File Handle)。
- 技术实现:文件句柄通过 DOS 内部的系统文件表(SFT)来追踪文件状态,程序只需操作一个整数索引(句柄)。
- 兼容性保障:为了保证 DOS 1.x 程序的兼容性,2.x 依然保留了对 FCB 的支持,但 FCB 无法直接访问子目录中的文件,只能访问当前目录。
2. UNIX 特性的引入与“句柄”的副产品
文中提到 DOS 2.0 受 UNIX 影响极深,这在技术实现上有明确体现:
- 重定向与管道:由于引入了文件句柄,DOS 能够模仿 UNIX 将标准输入(STDIN)、标准输出(STDOUT)和标准错误(STDERR)作为预定义的句柄(0, 1, 2)。这使得
>、<和|等操作符在 DOS 命令行中得以实现。- 路径分隔符的差异:虽然 DOS 借鉴了 UNIX 的目录结构,但由于 IBM 在 PC-DOS 1.0 中已经将斜杠
/定义为命令行开关(Switch)的分隔符,为了避免冲突,MS-DOS 2.0 被迫采用了反斜杠\作为路径分隔符。3. 可安装设备驱动程序与 CONFIG.SYS
在 DOS 1.x 中,支持新硬件(如特殊的串行卡或非标准磁盘驱动器)需要对 BIOS 或 DOS 内核进行二进制补丁。MS-DOS 2.0 引入了**可安装设备驱动程序(Installable Device Drivers)**架构,通过
CONFIG.SYS文件动态加载.SYS文件。
- 这标志着操作系统从“针对特定硬件定制”向“平台化、可扩展化”的转变,是 DOS 能够适配大量兼容机硬件的关键。
4. 内存驻留(TSR)与早期“多任务”
由于 DOS 设计之初是单用户单任务系统,缺乏进程调度器。为了实现诸如后台打印(PRINT)或键盘热键激活(如后来的 SideKick),程序员利用了 DOS 2.0 完善后的 INT 27H 或 INT 21H AH=31H(Keep Process) 调用,使程序在退出后仍保留在内存中。这类程序被称为 TSR (Terminate and Stay Resident)。这并非严格意义上的多任务,而是通过中断拦截实现的协同式后台处理。
5. 版本演进的细节补充
文中提到的版本分支反映了当时 Microsoft 与 IBM 以及 OEM 厂商之间的复杂关系:
- PC-DOS 2.1:主要是为了适应 IBM PCjr 的特定硬件需求(如不同的磁盘控制器时序)。
- MS-DOS 2.11:这是 2.x 时代流传最广的 OEM 版本。它修正了 2.1 中的大量错误,并正式支持了更多的国际化特性(如不同国家的日期、货币格式)。
- MS-DOS 2.25:这是一个鲜为人知的版本,其核心意义在于增加了对 DBCS(双字节字符集) 的初步支持。这为后来汉化 DOS 的出现(如后来的中文系统)奠定了处理东亚语言的基础,主要面向亚太和日韩市场。
6. 技术局限性与历史背景
尽管 DOS 2.0 引入了硬盘支持,但其 FAT12 文件系统在管理大容量磁盘时效率极低。在 2.x 版本中,FAT12 的簇寻址能力限制了分区大小,这导致在 3.0 版本之前,DOS 处理大硬盘的能力仍显稚嫩。文中提到的“定位故障”通常是指对磁盘坏道和分区表处理逻辑的改进。
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
