【转载】DOS 系统和 Windows 系统有什么关系?为什么windows系统下可以执行dos命令?

作者:bombless

因为不同的系统都叫 Windows ,这些系统在界面上也有一定连续性并且因此可能造成误解,所以有必要稍微梳理一下几个不同的 Windows 系统。
首先是 DOS 上的一个图形界面 Windows 1.0 ,它带了画图、记事本等程序。 DOS 上的这些图形界面程序当然也是16位的,并一直发展到 Windows 3.1 (不过Windows 3.1对应的中文版的版本号是3.2)。 在这个时候因为 DOS 总是作为 Windows 的基础运行的,在运行Windows 的时候当然可以回到 DOS 下运行 DOS 命令。 接下来就是划时代的 Windows 95,这个系统下它不是直接运行在 DOS 上,而是在 DOS 启动的时候直接跳到一个 Windows 图形界面。 Windows 95 上的程序是32位的,不过操作系统的核心还是 DOS 下的那一套,虽然图形方面当然是32位的。 这个时候的 Windows 还是可以运行16位下的 DOS 程序。 Windows 95、 Windows 98 再接下来是 Windows ME ,这就是32位的仍然没有摆脱 DOS 的三个Windows 版本。
接下来就是 Windows NT 3.5,Windows NT 4.0,Windows 2000,Windows XP/Windows 2003 开始的这一代了,也包括 Windows 7 ,Windows 8 等,我们叫做 NT 内核的 Windows ,它的核心就完全是32位的,跟从前汇编编写的代码库完全告别了。这个时候操作系统只是在最初的时候从16位模式跳到32位的保护模式,除此之外不再真正有16位的代码,所以这个时候就没有运行 DOS 程序的条件了。
所以总结下来就是,早期的 Windows 中就是 DOS 上的一个外壳,中期的 Windows 和 DOS 共享了一些代码,在 Windows XP 中已经完全告别了 DOS ,只能靠模拟来运行这些DOS程序。 不过,旧的DOS程序在 Windows XP 上还是可以照常运行,虽然有些比较依赖硬件的程序会运行不正常(不过这些程序反正换了一套硬件就很有可能运行不正常了), Windows 8 在第一次运行 DOS 程序的时候会提示安装 NTVDM 。 这个 NTVDM 就是 NT 内核 Windows 运行 DOS 程序的关键,它用来模拟 DOS 程序运行时所依赖的环境。 不过以上这些都是说的32位 Windows ,在64位 Windows 中本身也没有 NTVDM 功能,所有也就运行不了 DOS 程序了。
不过最后还剩一个问题,在 Windows NT 中执行 DOS 命令到底是什么意思? DOS 上带有一系列的命令,早期和中期的 Windows 都可以执行这些 DOS 命令。到了 Windows NT ,这些命令的使用方式没有变,于是就沿用了执行 DOS 命令这个说法。而实际上在 Windows NT 中使用这些命令时都只是在使用一个叫 cmd.exe 的命令行辅助工具,跟 DOS 不再有什么关系了。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

现在windows下的命令提示符只是一个软件,操作方式和界面模拟dos操作系统

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

转自http://www.zhihu.com/question/24744565

上一篇:C#比较二个数组并找出相同或不同元素的方法


下一篇:从头開始写项目Makefile(七):统一目标输出文件夹