Windows是否仍然依赖MS-DOS?


71

我即将开始操作系统课程,并且作为Apple用户,我对Windows OS的基本细节不是很熟悉。我想知道,MS DOS是否仍与运行在顶部的Windows一起使用,还是仅Windows现在用作操作系统?我有点困惑,因为我读过某个地方说MS-DOS用于引导,但是Windows内置了所有其他OS功能,因此用于所有其他OS操作...


讨论的结尾看起来很有趣。
user2284570 2013年

不,不是的。依赖MS-DOS的最后一个消费者操作系统是Windows Me。Windows XP,Vista,7和更高版本均建立在Windows NT体系结构上。
bwDraco '16

Answers:


140

对于Microsoft Windows,有两种截然不同的血统,而当人们写下他们已经了解的另一种血统的东西时,这无济于事。

  • DOS +的Windows谱系包括DOS +的Windows所有版本至3.11版本,DOS + Windows 95中,DOS + Windows 98和DOS + Windows Millennium Edition中。Windows在DOS之上分层放置。整本书都涉及这一层次,这是一些争论的主题,尤其是因为在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应用程序,该虚拟机在Windows NT而不是其他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程序,包括Microsoft各种资源工具包中的所有工具,图片中的任何地方仍然没有DOS的味道,因为这些都是执行Win32控制台的普通Win32程序。 / O。

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

而且,十八年后,我们仍在努力使某些人知道Windows NT不能像DOS那样工作,甚至永远也不能像DOS那样工作。☺

进一步阅读

  • 乔纳森·德·博因·波拉德(2006)。 操作系统内核开发人员和设备驱动程序编写者的书籍清单。经常给出答案。
  • Mark E.Russinovich,David A.Solomon,Alex Ionescu(2009年)。Windows Internals(第5版)。微软出版社。ISBN 9780735625303。
  • Walter Oney(1996)。Windows 95的系统编程。微软出版社。国际标准书号1 55615 949 8。
  • Matt Pietrek(1995年11月)。Windows 95系统编程的秘密。IDG图书。ISBN 1-56884-318-6。
  • 安德鲁·舒尔曼(1994)。未经授权的Windows 95。全球IDG图书。ISBN 9781568841694。
  • Matt Pietrek(1993)。Windows内部构件:Windows操作环境的实现。艾迪生-韦斯利。书号9780201622171。
  • Andrew Schulman,David Maxey,Matt Pietrek(1992)。未公开的Windows:保留的Microsoft Windows Api函数的程序员指南。艾迪生-韦斯利。ISBN 9780201608342。

11
只会变得更好。我仍在教人们可以在应用程序之间进行Alt-Tab键。。。
surfasb 2011年

2
在Windows 95+中,DOS被用作引导程序而不是操作系统层是不是真的。即Windows 95+不会在启动过程中调用DOS服务。
温斯顿·埃韦特

3
@Winston Ewert,据我所知,Windows程序仍然依赖Windows 95中的dos INT 21h。例如,用于初始化的INT 21h函数55h和用于终止的INT 21h函数4Ch。我无法回答98和ME。但是95做到了。
artifex 2011年

6
但是,您仍然无法在Windows 7中的explorer.exe下使用保留的DOS设备名称!
LawrenceC

5
人!您知道这个网站的运作方式。如果要询问有关DOS模式,msdos.sys选项的含义以及为什么不能在Win32中使用多个名称作为文件名问题,请使用此页面顶部的询问问题”超链接。开始,而且,从谁的人阅读的问题,已经
JdeBP 2011年

23

此外,Windows 95并不完全是基于DOS的GUI。在这里阅读更多:

http://blogs.msdn.com/b/oldnewthing/archive/2007/12/24/6849530.aspx


1
我记得整个VxD接口和VMM切换器。这是在OS上有所发展并且仍然具有许多向后兼容性的有趣方式。
Rich Homolka

Windows 95确实带有MS-DOS 7,并且可以仅使用DOS部分制作仅DOS的启动盘,并且感觉像是MS-DOS 6的稍有破损的版本(但还有一些新的附加功能)特征)。
Randolf Richardson 2011年

4
这是最正确的答案:自Windows 95以来,Windows就不再依赖DOS。严格来说,一旦32位驱动程序接管了Windows 3.11,就不需要DOS。但是3.11没有随附引导程序;因此,它需要DOS才能使其达到起点。
伊恩·博伊德

1
该博客非常不错,感谢您的链接
-crasic

20

否。 具有“ NT内核”的所有Windows版本更像是DOS之上的GUI。随着NT在Windows XP的引入中变得尤为普遍(并且Windows Vista和Windows 7也都使用NT内核),不再需要使用DOS作为底层OS

Windows的32位版本仍然具有DOS提示符,可以通过command.com在运行对话框中输入来运行DOS提示符,并且它可以运行大多数旧的DOS程序。Windows的所有版本都有一个命令提示符,可用于运行批处理文件和类似DOS的命令(通常是本机Windows应用程序,旨在与DOS样式的控制台进行交互)。64位Windows无法运行DOS应用程序,因为它不支持16位进程。

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

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


13
旧版(古老的16位)DOS应用程序在NTVDM中运行,该程序在命令提示符子系统中进行了仿真。NTVDM在64位Windows系统中不可用,因此您需要一个第三方仿真器来运行16位DOS应用程序,例如DOSBox或VirtualBox。
afrazier 2011年

11
NTVDM在64位Windows中不可用的原因是,它只是运行Windows代码之前将CPU切换为16位模式的精简包装。在64位模式下,CPU只能暂时切换到32位模式以运行32位代码;如果没有冷重启,它将无法运行16位代码。
Hello71 2011年

2
所有人注意:这篇文章中的评论已被清除。致相关人员:请保持谦虚,并记住,只要有可能,就应扩大讨论范围,以便聊天 -帖子上过多的评论对其他访问者来说非常嘈杂。
DMA57361 2011年

由于人们继续对此帖子进行激烈辩论,因此我们暂时将其锁定。注释已被再次删除。
nhinkle

@ Hello71错误。例如,在Linux中可以。而且,您可以在64位Linux中运行16位DOS和Win 3.1应用程序。
Anixx

5

作为Randolf的烦恼,他不是唯一一个,反复使命令行界面DOS混乱。

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

然后在DOS(2.0、3.0、3.1、3.11)之上构建Windows ,其中在Windows内重新出现一个DOS-Box图标,作为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,-Xmx之类的Java参数等等。

许多人认为命令行界面是过去的遗迹 -他们不知道通过几次按键即可处理数千个文件的功能。他们也不知道wsh和monad。但是对于专业人士来说,Windows上的命令解释器几乎与Unix或Linux上一样有用。它并不是众所周知的,但是对于许多管理员来说是必不可少的。

甚至还有gnu工具链的一个端口,带有sh.exe和sed,awk,bc,tail,rev,cat以及所有这些作为本地win32应用程序。

也许您可以在cmd.exe下运行旧的DOS程序,但是您不能在DOS模式下运行Windows程序,因此请不要告诉别人,cmd.exe DOS -事实并非如此。而且它不像DOS。你的意思,是interactive command-line program,一command-line interface

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

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

您需要正确的表达方式(如外科医生的刀一样锋利)来解释复杂的事情。错误的表达会在听众的大脑中引起错误的印象。lop草的表情总比没有糟。避免他们。CLI如果您希望输入命令行界面,请使用此命令。

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


说得好。周围有很多错误的术语。
Milind R

在Win95和Win98中,没有cmd.exe。
Anixx

2

在Windows NT家族(NT,2000,XP,2003,Vista,2008、7)中,它独立于DOS。只有DOS模拟器可以向后兼容。

但是,仍然存在一些限制,这是NT早期与DOS兼容的结果。例如,您无法创建名为“ CON”或“ PRN”的文件或目录,因为这些是保留名称,用于表示DOS中的设备。


1

实际上,现在Windows不再使用DOS。在Windows XP,Vista或Windows 7上模拟DOS(或cmd)提示。Windows从其自身的资源启动。


9
-1:错。不是to DOS (or cmd)。有一个命令解释器cmd.exe,但不是DOS。DOS也有一个命令解释器,即command.com,它在语法,关键字和用法上都非常相似,但是命令界面只是DOS的一部分。不是DOS。
用户未知

console是的PE头中的类型是Win32 / Win64子系统的一部分。它根本不是16位。
user2284570 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.