Windows все еще полагается на MS-DOS?

71

Я только начинаю курс по ОС, и как пользователь Apple, я не очень хорошо знаком с основными деталями ОС Windows. Мне было интересно, MS DOS все еще используется с Windows, работающей поверх или только Windows теперь используется в качестве ОС? Я был немного смущен, потому что где-то читал, что MS-DOS используется для загрузки, но в Windows встроены все остальные возможности ОС и, следовательно, он используется для всех других операций ОС ...

rrazd
источник
Конец этого обсуждение выглядит интересно.
user2284570
Нет. Последней потребительской ОС, которая использовала MS-DOS, была Windows Me. Windows XP, Vista, 7 и более поздние версии основаны на архитектуре Windows NT.
bwDraco

Ответы:

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 («Windows 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, и может запускать приложения DOS с помощью виртуальной машины NT (NTVDM), которая является виртуальная машина это работает поверх Windows NT а не наоборот.

    Это процесс начальной загрузки Windows NT 6.x.

Что также не помогает, так это когда люди по ошибке говорят о «подсказке DOS» в Windows NT, как это уже было в ответах. Помимо того, что это командные интерпретаторы, а не операционные системы это связывает «DOS» с «текстовым пользовательским интерфейсом» и «интерпретатором команд», которые в действительности не являются синонимами DOS. DOS - это семейство операционных систем: MS-DOS, PC-DOS, DR-DOS, FreeDOS, OpenDOS и так далее.

Если в Windows NT открыто окно командной строки, то оно почти всегда работает CMD, который является стандартным интерпретатором команд Microsoft, поставляемым в коробке, и который представляет собой обычный текстовый пользовательский интерфейс, программу Win32. Там нет ни "ДОС", ни НТВДМ. Есть только программа Win32, говорящая с ее консольным объектом Win32. И на самом деле для многих программ TUI, которые можно запускать в Windows NT, включая все инструменты в различных ресурсных наборах Microsoft, существует еще нигде на картинке нет никакого DOS, потому что это все обычные программы Win32, которые также выполняют консольный ввод-вывод Win32.

По иронии судьбы, учитывая, что Windows NT 3.1 была выпущена в 1993 году, линия Windows NT на самом деле не основанная на DOS система Windows-is-the-system, которую все люди в середине 1990-х пытались убедить в мире, что DOS + Windows 95 была.

И восемнадцать лет спустя мы все еще пытаемся донести до некоторых людей, что Windows NT не работает как DOS и никогда не , ☺

дальнейшее чтение

JdeBP
источник
11
Это только становится лучше. Я до сих пор учу людей, что вы можете Alt-Tab между приложениями. , ,
surfasb
2
Не правда ли, что для Windows 95+ DOS используется как загрузчик, а не как слой операционной системы. то есть Windows 95+ не вызывает службы DOS, кроме как во время процесса загрузки.
Winston Ewert
3
@Winston Ewert, насколько мне известно, программы Windows по-прежнему полагались на DOS INT 21h в Windows 95. Например, INT 21h функция 55h для инициализации и INT 21h функция 4Ch для завершения. Я не могу ответить за 98 и ME. Но 95 сделал.
artifex
6
Однако ты еще нельзя использовать зарезервированные имена устройств DOS в Windows 7 в explorer.exe!
LawrenceC
5
Люди! Вы знаете, как работает этот сайт. Если хотите задавать вопросы о режиме DOS, значениях параметров msdos.sys и почему нельзя использовать несколько имен в качестве имен файлов в Win32, тогда использовать Задать вопрос гиперссылка вверху этой страницы , Кроме того, начните с чтения вопросов от людей, которые уже иметь ,
JdeBP
22

Кроме того, Windows 95 не была полностью GUI поверх DOS. Узнайте больше здесь:

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

Strabbi
источник
1
Я помню это, весь интерфейс VxD и коммутатор VMM. Это был интересный способ продвинуться немного вперед в ОС и при этом иметь большую обратную совместимость.
Rich Homolka
Однако Windows 95 поставлялась с MS-DOS 7, и можно было использовать только часть DOS, чтобы сделать загрузочный диск только для DOS, и получить что-то вроде слегка сломанной версии MS-DOS 6 (но также и с несколькими новыми дополнительными функции).
Randolf Richardson
4
Самый правильный ответ: Windows не полагалась на DOS начиная с Windows 95. И, строго говоря, Windows 3.11 не нуждалась в DOS после того, как 32-разрядные драйверы вступили во владение. Но 3.11 не поставлялся с загрузчиком; так что нужно DOS, чтобы добраться до отправной точки.
Ian Boyd
1
Этот блог очень хорошо читается, спасибо за ссылку
crasic
20

Нет. Все версии Windows, предшествующие версиям с «ядром NT», были больше похожи на графический интерфейс поверх DOS. С NT, который стал особенно распространенным с введением Windows XP (и Windows Vista, и Windows 7 оба используют ядро ​​NT) необходимость использовать DOS в качестве основной ОС была устранена ,

32-разрядные версии Windows по-прежнему имеют приглашение DOS, которое можно запустить, введя command.com в диалоге запуска, и он может запускать большинство старых программ DOS. Все версии Windows имеют командную строку, которая может использоваться для запуска командных файлов и DOS-подобных команд (которые обычно являются родными приложениями Windows, предназначенными для взаимодействия с консолью в стиле DOS). 64-битная Windows не может запускать приложения DOS, потому что она не поддерживает 16-битные процессы.

Вероятно, лучше всего рассматривать командную строку как специализированное приложение, которое можно использовать для запуска программ DOS и / или запуска программ Windows из командной строки.

Примечание. Термин «приглашение DOS» обычно использовался для описания «командной строки» до появления ядра NT. Хотя многие люди до сих пор используют термин «приглашение DOS» сегодня (поскольку они используют его для запуска многих из тех же команд, которые первоначально назывались «командами DOS», которые обычно доступны в среде DOS), термин «команда подскажите "технически правильно в NT вариантах винды.

Randolf Richardson
источник
13
Устаревшие (старые, 16-разрядные) DOS-приложения запускаются в NTVDM, который эмулируется внутри подсистемы командной строки. NTVDM недоступен в 64-разрядных системах Windows, поэтому для запуска 16-разрядных приложений DOS, таких как DOSBox или VirtualBox, необходим сторонний эмулятор.
afrazier
11
Причина, по которой NTVDM недоступен в 64-битной Windows, заключается в том, что это просто тонкая оболочка, которая переключает ЦП в 16-битный режим перед запуском кода. В 64-битном режиме процессор может временно переключаться в 32-битный режим только для запуска 32-битного кода; он не может запустить 16-битный код без холодной перезагрузки.
Hello71
2
Примечание для всех: комментарии были удалены из этого поста. Для тех, кто вовлечен: Пожалуйста, держите это гражданским и помните, что расширенные обсуждения должны быть перенесены на чат когда это возможно - чрезмерные комментарии к посту становятся очень шумными для других посетителей.
DMA57361
Поскольку люди продолжали неистово спорить об этом посте, мы сейчас его закрываем. Комментарии были удалены, снова.
nhinkle
@ Hello71 неправильно. Например, в Linux это возможно. И вы можете запускать 16-битные приложения для DOS и Win 3.1 в 64-битном Linux.
Anixx
5

Больше как ответ Рэндольфу, но он не единственный, сбивающий с толку интерфейсы командной строки а также DOS несколько раз.

Обратите внимание, что многие из [DOS] и [MS-DOS] теги страдают от той же ошибки: изначально в MS-DOS был только текстовый режим, интерфейс командной строки command.com + norton commander для многих из нас, и доморощенные текстовые окна с рамками, нарисованные с помощью ansi.sys, но управляемые не только клавиатурой, но и мышью, но также легче с помощью клавиш со стрелками и горячих клавиш.

Тогда окна были построены на вершине DOS (2.0, 3.0, 3.1, 3.11), где значок для DOS-Box снова появился внутри окон, в качестве имени интерфейса команд внутри окон.

Но в 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, ни о монаде. Но для профессионалов командный интерпретатор в Windows почти так же полезен, как в Unix или Linux. Это не так хорошо известно, но это важно для многих администраторов.

Есть даже порт gnu-toolchain с sh.exe и sed, awk, bc, tail, rev, cat и всем этим как родные приложения win32.

Возможно, вы можете запускать старые DOS-программы под cmd.exe, но вы не можете запускать программы Windows в режиме DOS, так что не говорите людям, что cmd.exe является DOS - это не так. И это не DOS-подобный , Что вы имеете в виду, это interactive command-line program, command-line interface,

  • DOS подскажите
  • Пакетные файлы DOS
  • DOS-подобные команды
  • Консоль в стиле DOS
  • DOS-приложения

почти всегда вводит в заблуждение терминология , Это может быть уместно для любителя, но если вы хотите, чтобы ваша аудитория поняла, о чем вы говорите, вы должны спросить себя: ограничено ли это специальной ОС, DOS? Стиль CLI лучше всего назвать «стиль DOS»? Это исторически правильно? Ваша аудитория знает DOS вообще? Это полезно для понимания? Эти программы действительно работают на DOS?

Вам нужны правильные выражения, острые, как нож хирурга, чтобы объяснить сложные вещи. Неправильные выражения вызывают неправильные впечатления в мозгу вашей аудитории. Небрежные выражения хуже, чем ничего. Избежать их. использование CLI если интерфейс командной строки слишком длинный для вас, чтобы напечатать.

Исправьте вводящие в заблуждение метки на SU, SE и других сторонах.

user unknown
источник
Хорошо сказано. Вокруг много плохой терминологии.
Milind R
В Win95 и Win98 не было cmd.exe.
Anixx
2

В семействе Windows NT (NT, 2000, XP, 2003, Vista, 2008, 7) он независим от DOS. Есть только эмуляторы DOS для обратной совместимости.

Однако есть некоторые ограничения, которые являются следствием совместимости с DOS в первые дни NT. Например, вы не можете создать файл или каталог с именем «CON» или «PRN», потому что это зарезервированные имена для представления устройств в DOS.

Michał Šrajer
источник
1

На самом деле, теперь Windows больше не использует DOS. Запрос в DOS (или cmd) эмулируется через Windows XP, Vista или Seven. Windows загружается из собственных ресурсов.

Diogo
источник
9
-1: неправильно. Это не to DOS (or cmd), Есть интерпретатор команд, cmd.exe, но это не DOS. В DOS также был интерпретатор команд, command.com, который очень похож по синтаксису, ключевым словам и использованию, но интерфейс команды является лишь частью DOS; это не ДОС.
user unknown
Да console тип в заголовке PE является частью подсистемы Win32 / Win64. Это совсем не 16 бит.
user2284570