Windows 仍然依赖 MS-DOS 吗?

rra*_*azd 73 windows-7 operating-systems ms-dos

我即将开始操作系统课程,作为 Apple 用户,我对 Windows 操作系统的底层细节不是很熟悉。我想知道,MS DOS 是否仍然与运行在顶部的 Windows 一起使用,还是现在只使用 Windows 作为操作系统?我有点困惑,因为我在某处读到 MS-DOS 用于启动,但 Windows 内置了所有其他操作系统功能,因此用于所有其他操作系统操作......

Jde*_*eBP 143

当涉及到 Microsoft Windows 时,有两种不同的谱系,当人们写关于一个谱系的东西而他们已经了解另一个谱系时,这无济于事。

  • DOS +的Windows谱系包括DOS +的Windows所有版本至3.11版本,DOS + Windows 95中,DOS + Windows 98和DOS + Windows Millennium Edition中。它在 DOS 之上有 Windows 分层。关于这种分层的主题已经写了整本书,并且它是一些争论的主题,尤其是因为在 1990 年代初到中期的一段时间内,很多人希望世界相信 DOS 已经消失而 Windows 是操作系统。

    这就是 DOS+Windows 引导程序。

  • Windows NT的谱系包含的Windows NT 3.x中,Windows NT 4.0中的Windows NT 5.0( “视窗2000”)时,Windows NT 5.1( “Windows XP中”)时,Windows NT 5.2(Windows XP和“Windows Server 2003中”的某些版本)、Windows NT 6.0(“Windows Vista”)和 Windows NT 6.1(“Windows 7”)。它不是在 DOS 之上分层,以与 DOS 完全不同的方式工作,并且可以通过 NT 虚拟 DOS 机 (NTVDM) 运行 DOS 应用程序,NTVDM 是运行在 Windows NT 之上的虚拟机,而不是另一个绕道。

    这是 Windows NT 6.x 引导程序。

当人们错误地谈论 Windows NT 中的“DOS 提示符”时,也无济于事,甚至在此处的答案中也发生了这种情况。除了提示的是命令解释器而不是操作系统这一事实之外,这将“DOS”与“文本用户界面”和“命令解释器”混为一谈,这两者实际上都不是 DOS 的同义词。DOS 是一系列操作系统:MS-DOS、PC-DOS、DR-DOS、FreeDOS、OpenDOS 等等。

如果在 Windows NT 上打开了一个命令提示符窗口,那么它几乎总是在运行CMD,这是 Microsoft 在框中提供的默认命令解释器,它是一个普通的文本用户界面 Win32 程序。没有“DOS”,也没有 NTVDM。只有一个 Win32 程序与其 Win32 控制台对象对话。而事实上对于很多可以在Windows NT上运行的TUI程序,包括微软各种资源工具包中的所有工具,图中的任何地方仍然没有DOS的味道,因为这些都是执行Win32控制台的普通Win32程序我/O,也是。

具有讽刺意味的是,鉴于 Windows NT 3.1 于 1993 年发布,Windows NT 谱系实际上是不基于 DOS 的 Windows-is-the-operating-system 系统,1990 年代中期的所有人都试图说服DOS+Windows 95 的世界。

并且,18 年后,我们仍然试图让一些人明白 Windows NT 不像 DOS 那样工作,而且从来没有。☺

进一步阅读

  • 乔纳森·德·博因·波拉德 (2006)。 操作系统内核开发人员和设备驱动程序编写人员的书籍清单。经常给出答案。
  • Mark E. Russinovich、David A. Solomon、Alex Ionescu (2009)。Windows 内部(第 5 版)。微软出版社。国际标准书号 9780735625303。
  • 沃尔特奥尼(1996)。Windows 95 系统编程。微软出版社。国际标准书号 1 55615 949 8.
  • 马特·皮特雷克Matt Pietrek)(1995 年 11 月)。Windows 95 系统编程秘密。IDG 书籍。ISBN 1-56884-318-6。
  • 安德鲁舒尔曼(1994)。未经授权的 Windows 95。IDG图书全球。国际标准书号 9781568841694。
  • 马特·皮特雷克(1993)。Windows 内部:Windows 操作环境的实现。艾迪生-卫斯理。ISBN 9780201622171。
  • 安德鲁·舒尔曼、大卫·麦克西、马特·皮特雷克 (1992)。Undocumented Windows: A Programmers Guide to Reserved Microsoft Windows Api Functions。艾迪生-卫斯理。ISBN 9780201608342。

  • 它只会变得更好。我仍在教人们您可以在应用程序之间使用 Alt-Tab。. . (12认同)
  • 但是,您*仍然*不能在 Windows 7 中的 explorer.exe 下使用保留的 DOS 设备名称! (6认同)
  • 人们!你知道这个网站是如何运作的。如果您想_询问_有关 DOS 模式、msdos.sys 选项的含义以及为什么在 Win32 中不能使用多个名称作为文件名的问题,请**使用本页顶部的 _Ask Question_ 超链接**。此外,首先阅读 [已经](http://superuser.com/questions/86999/) [有](http://superuser.com/questions/282194/) 的人提出的问题。 (6认同)
  • @Winston Ewert,据我所知,Windows 程序在 Windows 95 中仍然依赖 dos INT 21h。例如,INT 21h 函数 55h 用于初始化,INT 21h 函数 4Ch 用于终止。我不能回答98和我。但是 95 做到了。 (3认同)
  • 对于 Windows 95+,DOS 不是用作引导加载程序而不是操作系统层吗?即 Windows 95+ 不调用 DOS 服务,除非在引导过程中。 (2认同)
  • 这只是一个调用约定。这些调用可能会在 32 位磁盘驱动程序中结束。 (2认同)
  • @JdeBP:去 FidoNet! (2认同)
  • 感兴趣的人:[DOS 在 Windows 95 中的作用。](http://blogs.msdn.com/b/oldnewthing/archive/2007/12/24/6849530.aspx) (2认同)

小智 22

此外,Windows 95 并不完全是 DOS 之上的 GUI。在这里阅读更多(带有评论的链接

  • 这是最正确的答案:Windows 自 Windows 95 以来就不再依赖 DOS。严格来说,一旦 32 位驱动程序接管,Windows 3.11 就不需要 DOS。但是 3.11 没有自带引导加载程序;所以它需要 DOS 才能让它到达起点。 (4认同)

Ran*_*son 21

不。 在那些带有“NT 内核”之前的所有 Windows 版本更像是 DOS 之上的 GUI。随着 Windows XP 的引入,NT 变得尤为普遍(Windows Vista 和 Windows 7 也都使用 NT 内核),因此不再需要使用 DOS 作为底层操作系统

32位版本的Windows还有DOS提示符,command.com在运行对话框中输入即可运行,可以运行大部分老式DOS程序。所有版本的 Windows 都有一个命令提示符,可用于运行批处理文件和类似 DOS 的命令(通常是旨在与 DOS 风格的控制台交互的本地 Windows 应用程序)。64 位 Windows 无法运行 DOS 应用程序,因为它不支持 16 位进程。

您可能最好将命令提示符视为更像是可用于从命令行运行 DOS 程序和/或启动 Windows 程序的专用应用程序。

注意:在引入 NT 内核之前,术语“DOS 提示符”通常用于描述“命令提示符”。尽管今天许多人仍然使用术语“DOS 提示符”(因为他们使用它来运行许多相同的命令,这些命令最初称为“DOS 命令”,通常在 DOS 环境中可用),但术语“命令提示”在 Windows 的 NT 变体中在技术上是正确的。

  • 传统(古老的 16 位)DOS 应用程序在 NTVDM 中运行,该应用程序在命令提示符子系统内进行模拟。NTVDM 在 64 位 Windows 系统中不可用,因此您需要一个 3rd 方模拟器来运行 16 位 DOS 应用程序,例如 DOSBox 或 VirtualBox。 (14认同)
  • NTVDM 在 64 位 Windows 中不可用的原因是因为它只是一个瘦包装器,可以在运行代码之前将 CPU 切换到 16 位模式。在64位模式下,CPU只能暂时切换到32位模式运行32位代码;它不能在没有冷重启的情况下运行 16 位代码。 (11认同)
  • 请注意:此帖子的评论已被清除。对于相关人员:请保持文明并记住,应尽可能将扩展讨论移至 [chat](http://chat.stackexchange.com/) - 对帖子的过多评论对其他访问者来说会变得非常嘈杂。 (2认同)

use*_*own 5

更像是对 Randolf 的回答,但他不是唯一一个,反复混淆命令行界面DOS

请注意,许多 [DOS] 和 [MS-DOS]标签都存在同样的错误:MS-DOS 最初只有一个文本模式,一个command.com对我们许多人来说称为+ norton命令的命令行界面,以及一个带有框架的本地文本模式窗口,使用 ansi.sys 绘制,但不仅可以通过键盘控制,还可以通过鼠标控制,而且使用箭头键和热键也更容易控制。

然后 Windows 建立在 DOS(2.0、3.0、3.1、3.11)之上,其中 DOS-Box 的图标重新出现在 Windows 内部,作为 Windows 内部命令界面的名称。

但是在 Windows-NT 和 Windows-95 或 -98 MS-DOS 中被放弃了,但命令解释器cmd.exe(cmd32.exe)仍然存在,具有相同或几乎相同的语法和关键字。但这是一个在 Windows 中运行的程序,就像其他文本样式的命令解释器,如 BASIC、irb (Ruby)、scala-repl、psql (Postgresql)、sqlplus (oracle)、bc、R、rhino 等,等等,在多个平台上运行。

称这种 MS-DOS 风格是一种误导,因为 DOS 或 MS-DOS 而不是最初提出它的那些。它的年龄要大得多。

即使在 Windows 上,它也不限于运行 DOS 命令——批处理文件写入的常见做法是在启动 Windows 程序之前指定一些参数。例如,为 Java 程序设置 CLASSPATH、JAVA_HOME、java 参数(如 -Xmx 等)。

许多人认为命令行界面是旧时代的遗物——他们不知道通过几次按键处理数千个文件的能力。他们也不知道 wsh 和 monad。但是对于专业人士来说,Windows 上的命令解释器几乎和 Unix 或 Linux 上一样有用。它不是那么出名,但它对许多管理员来说是必不可少的。

甚至还有一个 gnu-toolchain 端口,带有 sh.exe 和 sed、awk、bc、tail、rev、cat 以及所有这些作为本机 win32 应用程序。

也许你可以在 cmd.exe 下运行旧的 DOS 程序,但是你不能在 DOS 模式下运行 Windows 程序,所以不要一直告诉人们,cmd.exeDOS - 它不是。它不像DOS 那样。你的意思是,是一个interactive command-line program,一个command-line interface

  • DOS 提示符
  • DOS批处理文件
  • 类似 DOS 的命令
  • DOS风格的控制台
  • DOS应用程序

几乎总是误导性的术语。它可能适合业余爱好者,但如果你想让你的听众理解你在说什么,你应该问自己:它是否仅限于一个特殊的操作系统,仅限于 DOS?CLI 风格最好称为“DOS 风格”吗?这在历史上是正确的吗?您的听众是否完全了解 DOS?对理解有帮助吗?那些程序真的能在 DOS 上运行吗?

你需要正确的表达方式,像外科医生的刀一样锋利,来解释复杂的事情。错误的表达会在听众的大脑中引起错误的印象。马虎的表达比没有更糟糕。避开它们。使用CLIif命令行界面是长你输入。

纠正 SU、SE 和其他方面的误导性标签。