关于DOS和命令行的故事

作为 IT 工作者,我们经常与命令行打交道。
不过不知道是什么原因,很多人将 DOS 和命令行混为一谈(或许是因为它们长得很像?)。虽说吧,这样并没有什么实质性的危害,至少大部分情况下如此,不过该严谨的地方还是严谨一下比较好。

下面来说说 Win32(对于Win64,文章末尾会单独拿出来说明)环境中,DOS和命令行的关系。
显然,提到 DOS,一般指很久以前那个黑底白字的玩意儿,早年的Win9x中,也有它,这个DOS是真正的DOS16位模式。

后来 NT内核的Windows(也就是Win2000以后的)普及后,DOS彻底的从Windows中消失。但是为了兼容以前的老软件,微软内置了一个DOS虚拟机(NTVDM),这个虚拟机可以模拟出16位的DOS环境。很多人这里就分不清了,Windows中不是还有一个命令提示符(Command Prompt)么? 它又是什么东东呢?

Windows中的命令提示符,是一个普通的应用程序 ,就是 cmd.exe,这是一个 纯Win32程序 ,跟 DOS完全不搭边 。只不过它和DOS界面很像,再加上支持很多原来的DOS的命令 ,所以很多人把这个称作DOS。这里牵涉到一个子系统的问题,Win32程序在链接的时候可以调整子系统 ,一个是Win32 Console(命令行风格),Win32 GUI(图形窗口);显然,cmd.exe的子系统是Win32 Console。不过这个并没有很大的影响,Console程序一样可以创建窗口什么的,而GUI也可以创建命令提示符。

至于 NTVDM,也很简单 ,如果你想体验 ,请在运行中运行command.com即可。然后会执行一个跟命令提示符几乎一样的程序,这个就是模拟的16DOS

最后,在 Win64中,NTVDM彻底的消失,这意味着无法在Win64上使用任何16位的老式程序了(我个人很期待Wow64Win64里面消失的那个时刻,毕竟64位平台下面还是使用纯正的64位应用程序效率是最高的)。
 

你可能感兴趣的:(职场,dos,命令行,休闲)