中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » [转帖][YKSoft1]37年的悲剧:MS-DOS的幽灵
作者:
标题: [转帖][YKSoft1]37年的悲剧:MS-DOS的幽灵 上一主题 | 下一主题
ming627
新手上路





积分 4
发帖 2
注册 2010-6-26
状态 离线
『楼 主』:  [转帖][YKSoft1]37年的悲剧:MS-DOS的幽灵

一个由虚拟设备文件而造成的限制,竟然能跨越三十多年,跨越CP/M、MS-DOS、Windows、OS/2和Windows NT五个架构而以相同的形式存在,这最后也许真是微软的一场悲剧。
1973年,一个名为CP/M的操作系统诞生了。CP/M的文件系统是单层目录结构,文件名限制为8.3字符。为了支持用户程序的输入输出,CP/M提供了虚拟文件 COM1, COM2, COM3, COM4, LPT1, LPT2, CON, AUX, PRN, 和 NUL。
1980年,西雅图电脑产品(Seattle Computer Product)山寨了一个CP/M,称为86-DOS。因此,它同样具有CP/M具有的那些虚拟文件,同样是单层目录结构和8.3字符。由于许多程序总是将文件带扩展名保存,所有以那些虚拟文件名为主文件名的文件,都被视为和那些虚拟文件等价。

1981年,微软买下了86-DOS,并将其以MS-DOS 1.0的名字发布给用户。

1983年,MS-DOS 2.0发布了,它加入了树形目录结构。为了保持向下兼容性,所有的虚拟文件,COM1, COM2, COM3, COM4, LPT1, LPT2, CON, AUX, PRN, 和 NUL,在所有磁盘的所有目录下,不管扩展名是什么,都存在并且实现相同的功能。

1985年,微软终于做出了他们自己的图形用户界面,Windows 1.0。Windows 1.0的所有文件API,都是在DOS中断的基础上实现的,因此那些虚拟文件,在Windows下仍然是你看不到,却永远是存在的,它们的文件名,也就成为了保留文件名。

1987年,微软和IBM合作,推出了一个旨在实现“比DOS更好的DOS,比Windows更好的Windows”的新操作系统OS/2。OS/2虽然已经不再基于DOS,甚至文件系统也换成了新的HPFS;但是,为了与MS-DOS程序相兼容,这些始于CP/M的虚拟文件,其实现被几乎原封不动地带到了OS/2中,它们的文件名,也成为了Windows的保留文件名。

1988年,微软挖来了前VMS工程师Dave Cutler。在他的带领下,一个将成为OS/2的继任者的多用户、抢占式多任务操作系统投入了开发。由于微软和IBM合作关系的破裂,这个系统并没有被作为OS/2的继任者发展起来,而是在1993年以Windows的超集与继任者身份发布——Windows NT。它引入了全新的、当时可谓强大的NTFS文件系统,使得文件名没有必要再被8.3字符限制;但是,因为需要通过NTVDM保持与DOS和 Windows(16位)的兼容,以及和旧Windows程序的源码级兼容,DOS(也是Windows)的那些虚拟设备文件,COM1, COM2, COM3, COM4, LPT1, LPT2, CON, AUX, PRN, 和 NUL,又顺理成章地在Windows NT最重要的Win32子系统中实现(虽然由于系统对资源的保护,它们可能无法实现原有的功能),它们的主文件名继续成为保留文件名。

由于Windows NT在当时对系统要求过高(16MB内存在1993年仍然需要一笔较大的投入),而且其运行速度也不够快,微软仍然在继续并行发展旧的Windows架构。

1995年,第一个不需要MS-DOS就能工作的旧系列Windows——Windows 95在万众瞩目中诞生。它不仅拥有连Windows NT都羡慕的即插即用功能,并且正式将Win32的一个功能比较完整的子集引入了旧Windows,同时引入了前两年Windows NT在DOS传统的文件系统——FAT中加入的扩展VFAT,文件名不再受8.3字符限制。然而,一方面由于Windows 95仍然有来自DOS和以前的Windows的“根”,加上Win32子集同样保留了这条“根”,DOS的虚拟设备文件的文件名,继续作为保留文件名在 Windows 95,以及后来的Windows 95 OSR2(加入了FAT的新实现FAT32)、Windows 98和Windows Me中存在。

2001年,微软正式发布了完全针对个人用户的Windows NT家族最新成员Windows XP,终结了旧系列Windows的15年历史。从那一时刻开始,Windows NT就是Windows。

2009年,微软发布了第一个不再具备兼容DOS和旧16位Windows程序的能力的Windows——Windows Server 2008 R2。虽然为了兼容DOS和Win16的子系统NTVDM已经消失,但是它又加入了一个能兼容32位的Windows程序的新NTVDM,就算是64位原生程序,其仍然最终实现在64位的Win32子系统(经常被称作Win64,但微软官方并不如此称呼)中。同样为了最大限度实现源码级向下兼容,CP/M、MS-DOS、Win16和32位Win32下的虚拟设备文件,虽然大部分已经失去原来的作用,但仍然如幽灵一般,在64位Win32子系统眼中的任何一个磁盘目录下隐藏着,虽然它们其实并不存在,但是你仍然无法直接建立和打开任何主文件名和它们中的任何一个相同的文件。

一个由虚拟设备文件而造成的限制,竟然能跨越三十多年,跨越CP/M、MS-DOS、Windows、OS/2和Windows NT五个架构而以相同的形式存在,如果从向下兼容角度看,这是个奇迹;但是从发展的角度来看,一个已经放弃与这个限制的来源——MS-DOS的兼容性的全新64位系统,竟然还要被它所继续限制。反观类Unix系统,虽然存在着更多的虚拟设备文件,甚至存在着stdin/stdout/stderr这样和文件系统无关的虚拟文件,但它们都是独立的,位置固定的文件,而不像现在我们谈到的的这些,不管在哪个目录,它们都像幽灵一样存在。

生物的进化达到人类这种水平,人类依然保持着灵长类的一切特征、哺乳类的一切特征和动物的一切特征,人类的身体成为人类发展的最后障碍;微软为了保持向下兼容性,折腾了30多年,.net这样的革新提出了10年,Windows仍然还没摆脱这样一个小小的限制。这最后也许真是微软的一场悲剧。

2010-6-28 22:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: