MS-DOS
| 开发商 | Microsoft Corporation |
|---|---|
| 源代码模型 | 大多数版本闭源;版本 1.25、2.11 和 4.00 为开源 |
| 初始版本 | QDOS 0.10 (1980 年 7 月 1 日) |
| 最终版本 | MS-DOS 8.0 (2000 年 9 月 14 日) |
| 支持平台 | x86 |
| 内核类型 | 宏内核 |
| 用户界面 | 命令行界面 |
| 许可 | 大多数版本为专有;MIT 许可证适用于版本 1.25、2.11 和 4.0 |
Microsoft Disk Operating System(Microsoft 磁盘操作系统),通常简称为 MS-DOS,是 Microsoft 在 1980 年至 2000 年间针对基于 x86 的个人计算机开发的单体单任务操作系统。它是 IBM PC 及其克隆版本上事实上(de facto[a])的行业标准环境,尽管它也发货了其他与 IBM 不兼容的基于 x86 的计算机。
默认情况下,MS-DOS 由命令行界面驱动——当命令处理器准备好接受输入时显示的 A> 或 C:\> 提示符最终成为 DOS 的非官方符号之一。一些软件供应商开发了一些添加了更友好的用户界面来管理文件和启动其他程序的应用程序。Microsoft 本身在一些版本的 MS-DOS 中包括了形如 MS-DOS Shell 这样的程序。
在 MS-DOS 中同时运行多个程序的支持非常有限。操作系统允许程序终止并保持驻留(Terminate and Stay Resident,TSR),这意味着程序代码的一部分可以保留在内存中,并由 API 调用或硬件中断触发,即使在基本程序退出后也是如此。1986 年生产了适当的 MS-DOS 多任务版本,但是,它只发布给有限数量的 OEM,并最终演变为 OS/2。
最初,MS-DOS 不直接零售,而是由从 Microsoft 获得许可的 OEM 分发。制造商将收到一个 OEM 适配工具包,然后用于构建支持特定机器的 MS-DOS 的自定义版本。然而,随着市场稳定在接近 100% 的 IBM 兼容克隆上,Microsoft 最终开始提供通用的 IBM 兼容版本的 MS-DOS。起初,通用版本仍然由从 Microsoft 批量订购的 OEM 分发,尽管最终 Microsoft 从 MS-DOS 5 开始直接零售 MS-DOS。
独立的 MS-DOS 产品最终随着 Windows 95 的发布而停止,Windows 95 将 MS-DOS 集成到 Windows 本身中,此举成为竞争对手 DR-DOS 操作系统的开发商 Caldera 的重大诉讼的主题。最后一个版本 MS-DOS 8 于 2000 年作为 Windows Me 的一部分发布。
16 位 MS-DOS 的端口是针对 8 位 MSX 计算机设计的,称为 MSX-DOS。MSX-DOS 基于 MS-DOS 1.25 内核,并使用相同的文件系统。
体系结构
MS-DOS 由三个主要组件组成,即 DOS BIOS(IO.SYS 或 IBMBIO.COM)、DOS 内核((MSDOS.SYS 或 IBMBIO.COM)和 shell(COMMAND.COM)。这与 CP/M 使用的布局相同。
DOS BIOS
DOS BIOS(基本 I/O 系统)是 MS-DOS 的底层,它直接与系统的硬件通信,并包含驻留设备驱动程序(与从 CONFIG.SYS 加载的可安装驱动程序相反)。此模块过去由 OEM 提供,并针对特定机器进行定制;这种做法最终随着市场对接近 100% 兼容 IBM 的机器而消失。
它还包括 DOS 初始化模块 SYSINIT,此模块在引导到 MS-DOS 时由引导扇区调用。此模块初始化 DOS BIOS 和 DOS 内核,解析 CONFIG.SYS 文件,然后继续启动 shell。
DOS 内核
DOS 内核是 MS-DOS 的更高层,提供包括进程控制、内存管理和文件系统访问在内的服务。它等效于 CP/M 的基本磁盘操作系统组件。
由于系统的单一任务性质,进程控制功能非常有限。一个程序可以执行另一个程序,尽管在另一个程序退出之前,控制权不会返回到原始程序。但是,程序可以选择终止并保持驻留(Terminate and Stay Resident,TSR),这会将程序的一部分留在内存中。如果程序在以这种方式终止之前挂接中断处理程序,即使其他程序正在运行,也可以调用常驻部分,从而产生多任务的错觉。
内存管理允许程序在运行时根据需要分配常规内存。在加载多个程序时,必须确保活动程序不会覆盖其他程序的数据。但是,由于 MS-DOS 在实模式下运行,因此没有内存保护,因此与保护模式操作系统不同,实际上并未强制执行分配。
内核实现了对文件分配表(File Allocation Table,FAT)系列文件系统的支持。最初的 FAT12 文件系统改编自 Microsoft Standalone Disk BASIC 使用的文件系统,并使用 12 位群集索引。在以下版本中,通过添加对子目录和更大卷的支持,以及扩展 FAT 以使用 16 位和更高版本的 32 位群集索引,它得到了进一步的改进。在启用了 32 位文件访问的 Windows for Workgroups 3.11 或更高版本下运行 DOS 应用程序时,完全绕过 MS-DOS 内核中的文件系统实现;实现此功能的VFAT虚拟驱动程序后来在 Windows 95 中得到了改进,以支持长文件名。
MS-DOS 3.1 中引入的重定向器接口允许绕过 FAT 文件系统代码来实现自定义文件系统。这最初旨在供网络客户端用作允许访问其他联网计算机上的文件的方法,尽管它最终还用于在 Microsoft CD-ROM 扩展(MSCDEX)中实现对 CD-ROM 文件系统的支持。
从 MS-DOS 7 开始,内核合并到 IO.SYS 中,而 MSDOS.SYS 则用作配置文件。
源代码
2000 年,MS-DOS 6 beta 版本源代码的不完整副本在网上泄露。MS-DOS 3.30 OEM 适配套件的副本,是计算机供应商用于为其硬件定制 MS-DOS 的源套件,过去也已联机上传。
2014 年,MS-DOS 1.25(相当于 PC DOS 1.1)和 2.11 的源代码通过计算机历史博物馆发布,用于非商业目的。[1]Microsoft 后来于 2018 年在宽松的 MIT 许可下在 GitHub 上重新发布了源代码。MS-DOS 1.25 的源代码由 Tim Paterson 提供,来自 Seattle Computer Products 的 OEM 版本。它包括 SCP 的 IO.SYS 和其他 SCP 工具的源代码。[2]MS-DOS 2.11 源代码版本中包含的文件至少来自三个不同的来源:MS-DOS 2.00 OEM 分发盘、来源不明的 MS-DOS 2.11 源代码以及 WordStar 3.20 覆盖文件等其他碎片。[3]
MS-DOS 4.00 的源代码于 2024 年发布,同样在 MIT 许可下发布,[4]以及多任务 MS-DOS 4 的 beta 版本,包括内部设计文档和驱动程序源代码。[5]
历代版本
| 名称 | 初始版本 | 最新版本 | 注 |
|---|---|---|---|
| 86-DOS | 0.10(1980) | 1.14(1981) | 最初被称为 QDOS(Quick and Dirty Operating System,快速和肮脏的操作系统) |
| MS-DOS 1 | 1.20(1981) | 1.54(1982) | |
| MS-DOS 2 | 2.00(1983) | 2.25(1985) | |
| MS-DOS 3 | 3.00(1984) | 3.31(1987) | |
| 多任务 MS-DOS 4 | 4.00(1985) | 4.10(1987) | 也称为欧洲 MS-DOS 4 |
| MS-DOS 4 | 4.00(1988) | 4.01(1988) | |
| MS-DOS 5 | 5.00(1991) | 5.00A-H(1991) | |
| MS-DOS 6 | 6.00(1993) | 6.22(1994) | |
| MS-DOS 7 | 7.00(1995) | 7.10(1996) | 包含在 Windows 95 中;7.10 后来包含在 95 OSR 和 Windows 98 中。 |
| MS-DOS 8 | 8.00(2000) | 8.00(2000) | 包含在 Windows Me 中,用于 Windows XP 到 Windows 8.1 中的启动磁盘选项 |
相关产品
注
- ↑ 土耳其语“事实上”
引用资料
- ↑ https://computerhistory.org/blog/microsoft-ms-dos-early-source-code/
- ↑ https://www.os2museum.com/wp/pc-dos-1-1-from-scratch/
- ↑ https://www.os2museum.com/wp/dos-2-11-from-scratch/
- ↑ https://github.com/microsoft/MS-DOS/pull/431
- ↑ https://github.com/microsoft/MS-DOS/commit/69417b9befa431b12f495e03d97ae836039a4bbf