Пользователь Twitter @tthirtle спросил, почему установка Windows 95 проходит через три операционные системы: MS-DOS, Windows 3.1, а уже потом Windows 95. Почему не перейти от MS-DOS сразу к Windows 95?

Ещё один хороший вопрос: почему в установке Windows 95 используется три разных UI. DOS, Win3.x и Win9x?

— Thomas (@tthirtle) July 7, 2024

Установка Windows 95 может быть апгрейдом с трёх начальных точек: MS-DOS, Windows 3.1 или Windows 95. (Да, можно проапгрейдить Windows 95 до Windows 95. Это может понадобиться для того, чтобы восстановить повреждённую систему и сохранить при этом данные).

Один из вариантов решения — написать три версии установки Windows 95: одна для установки из MS-DOS, другая для установки из Windows 3.1 и третья для установки из Windows 95.

Это не очень удобный вариант, ведь, по сути, придётся трижды выполнять одну и ту же работу, но реализованную по отдельности, так что потребуется в три раза больше кода.

Вариант получше: просто написать одну версию установки Windows 95 и использовать её для всех трёх начальных точек. Так вы сможете выбирать платформу, на которой будет базироваться ваш код.

Исходная платформа

Тип приложения

MS-DOS

16-битный GUI

32-битный GUI

MS-DOS

 

 

Windows 3.1

 

Windows 95

Если написать установку Windows 95 как приложение MS-DOS, то оно запустится на всех трёх платформах. И это отлично! Достаточно написать только одну программу-установщик. Недостаток этого заключается в том, что это будет установщик в текстовом режиме, который будет выглядеть некрасиво и оставит неприятное первое впечатление от продукта, который должен познакомить пользователя с миром совершенно нового GUI.

Вариант с другого конца спектра: можно написать установщик Windows 95 как 32-битную GUI-программу, но если пользователь начинает с MS-DOS или Windows 3.1, то придётся установить Windows 95 до того, как можно будет запустить установку Windows 95, что похоже на «Уловку-22».

Но есть и золотая середина: можно сделать так, чтобы программа-установщик для MS-DOS устанавливала минимальную версию Windows 3.1, в которой есть только ровно необходимое для 16-битной GUI-программы установки1. Эта крошечная версия достаточно мала, чтобы её можно было скопировать и установить с небольшого количества гибких дисков. После завершения её установки можно загрузить крошечную версию Windows 3.1 и запустить 16-битную GUI-программу установки.

1. Существовал реальный прецедент крошечной версии Windows, в которой было только самое необходимое для запуска одной программы. Первая версия Microsoft Excel для Windows поставлялась со средой выполнения Windows 2.1, чтобы пользователи без Windows всё равно могли работать с Excel.

Итак, теперь у нас есть три программы-установщика. Первая используется при установке из MS-DOS: она устанавливает крошечную версию Windows 3.1, а затем загружает Windows 3.1, чтобы продолжить выполнение со следующего этапа.

Вторая программа-установщик запускается как 16-битная программа Windows или в миниатюрной копии Windows 3.1 (если пользователь выполняет апгрейд с MS-DOS), или в реальной копии Windows 3.1 (если пользователь апгрейдится с Windows 3.1), или в реальной копии Windows 95 (если пользователь обновляется с Windows 95). Эта вторая программа-установщик и выполняет практически всю реальную работу: она обеспечивает первоначальное взаимодействие с пользователем для получения информации о том, как устанавливать Windows 95, например, спрашивает, какие опциональные компоненты нужно установить, а также выполняет распознавание оборудования, чтобы знать, какие драйверы устанавливать2. Затем она копирует драйверы и файлы Windows 95 в систему, выполняет миграцию старых настроек в новую операционную систему и загружает Windows 95.

2. Этот код распознавания оборудования, который используется в программе установки — на самом деле, тот же код, который выполняется при распознавании оборудования внутри самой Windows 95, так что даже этот код нужно было написать только один раз. Он проводил проверки среды выполнения, чтобы немного менять своё поведение в зависимости от того, запущен ли он в Windows 3.1 или в Windows 95, но подавляющая часть кода была одинаковой.

Третья программа-установщик запускается как 32-битное приложение Windows. Она работает в реальной системе Windows 95 и выполняет финальные шаги, требующие живой работающей системы, например, устанавливает принтеры.

Именно поэтому установка Windows 95 — это, на самом деле, цепочка из трёх программ-установщиков. Это позволяет использовать одну копию кода во всех трёх сценариях установки. Каждая программа на один шаг приближает вас к цели. И всё это реализовано только один раз.

Комментарии (138)


  1. DMGarikk
    18.11.2024 13:21

    прикольно, я реально в то время задумывался почему именно так это устроено было, и отлично помню интерфейс 3.1 (который на скрине) и то что он менялся на 95 после перезагрузки..и у меня были точно такиеже мысли-вопросы как у автора - почему столько шагов

    p.s. у меня еще долго бомбило от текстового инсталлера NT ...который сравнивая с 95 и особенно с 98 выглядит крайне старомодно на...и это тянулось аж до XP включительно


    1. lubagov
      18.11.2024 13:21

      при установке Windows 3.1/3.11 был очень очень похожий текстовый инсталлятор, который потом на каком-то шаге превращался уже в графический с запущенным Windows 3.1, просто установив базовую часть с первой дискеты, а потом загрузив 3.1 до установив, с остальных. правда без лишних перезагрузок, т. к. на самом деле 3.1 это не ОС, а оболочка. (для Windows 95 OS R2 используется специальная версия DOS, без которой из старой версии DOS 6.22 например, не получилось бы запустить Windows 95, без перезагрузки, и установки этой дос)

      И тут маленький подвох, в названии статьи, 3.1 не ОС а оболочка :-)

      В Windows NT, DOS не было, она изначально использовала NTFS в качестве файловой системы, а ДОС ее не видит вообще, и ветка NT развивалась своей жизнью. А ветка на базе OS поверх DOS, умерла на Windows ME. Это не эволюция а два разных решения, инсталляторы у них разные, и ОС очень разные.


      1. CrashLogger
        18.11.2024 13:21

        Почему оболочка то, если у нее свой формат исполняемых файлов, система управления памятью, многозадачность - все, чего нет в DOS ? Только потому, что ее можно запустить из DOS командой win ? Так она после этого полностью перехватывает управление и от DOS остаются только обработчики прерываний, да и те работают через слой совместимости.


        1. zatim
          18.11.2024 13:21

          Любое приложение дос тоже может перехватывать управление и иметь свои собственные форматы файлов. Те же текстовые или графические редакторы, например. Игры, кстати, тоже. Но их же никто не называет ос?


          1. Krey
            18.11.2024 13:21

            Ну если оно позиционируется как операционная система, предоставляет какое-то API/ABI, то почему бы и не назвать?

            Но сам Майкрсофт винду до 95 как ОС вроде и не позиционировал.


            1. tlittle
              18.11.2024 13:21

              Именно. Сам Майкрософт ее позиционировал как оболочку. Я подозреваю потому что ОС - это, всё-таки, в том числе и взаимодействие с железом, драйвера и вот это все. А в 3.хх Винде вроде бы управляла только графикой и модемом.


              1. Krey
                18.11.2024 13:21

                Железом она управляла и драйвера были совершенно разного толка, а не только GDI.

                Скорее всего вопрос ОС это или оболочка стоит исключительно в коммерческой плоскости, а, отнюдь, не технической. Например немаленькое количество лицензий 3х продавались внутри IBM OS/2


              1. Uprt
                18.11.2024 13:21

                Сам Майкрософт ее позиционировал как оболочку.

                Win 1.x/2.x - возможно, а про 3.x и дальше это уже миф. По крайней мере уже в 1992 году Microsoft позиционировал Windows как операционную систему. Пруф: Getting started with Microsoft Windows : for the Microsoft Windows operating system : Microsoft Corporation : Free Download, Borrow, and Streaming : Internet Archive

                А в 3.хх Винде вроде бы управляла только графикой и модемом.

                Зависит от конкретной версии, процессоре, на котором она запускалась, и наборе конкретного железа. В 386 Enhanced Mode там уже могли использоваться свои 32-разрядные драйвера файловой системы (не использовавшие вызовы DOS), 32-разрядные драйвера дисковой системы (не использовавший вызовы BIOS), и т.д.


                1. tlittle
                  18.11.2024 13:21

                  Win 1.x/2.x - возможно, а про 3.x и дальше это уже миф. По крайней мере уже в 1992 году Microsoft позиционировал Windows как операционную систему. Пруф: Getting started with Microsoft Windows : for the Microsoft Windows operating system : Microsoft Corporation : Free Download, Borrow, and Streaming : Internet Archive

                  Я позволю себе усомниться. Дело в том, что указанный документ относится к версии Windows 3.1. Говорят, что первая версия NT - это как раз Windows 3.1. Я ее не щупал, видел только Windows NT 3.51, которая была весьма похожа на Windows 3.0/3.11, но при этом считалась полноценной ОС. А версии "оболочек" - 3.0, 3.0a, 3.10, 3.11 (https://web.archive.org/web/20050525190415/http://support.microsoft.com/kb/q32905/#appliesto)

                  PS. Хм... https://en.wikipedia.org/wiki/Windows_3.1

                  https://www.computerhistory.org/tdih/april/6/


                  1. Uprt
                    18.11.2024 13:21

                    Дело в том, что указанный документ относится к версии Windows 3.1. Говорят, что первая версия NT - это как раз Windows 3.1

                    Windows NT как раз дали версию тоже 3.1, чтобы показать что она по user experience соответствует версии 3.1 из линейки обычной Windows.
                    Собственно, ваши ссылки на википедию и computerhistory вполне четко демонстрируют, что Windows NT 3.1 и Windows 3.1 (без "NT") - это разные системы.


                  1. mayorovp
                    18.11.2024 13:21

                    Windows и Windows NT были двумя разными линейками продуктов. И книга по ссылке - именно про первую.


                  1. hondurasez
                    18.11.2024 13:21

                    Windows NT 3.х и Windows 3.x (как и NT4 и Win9x) действительно имели одинаковый интерфейс и были совместимы на уровне ПО, но отличались весьма существенно - NT обходились без DOS, поверх которого грузились 9х, используя собственный загрузчик - NTLoader (стоить ли говорить, что именно NT была первой 32-разярдной системой от MS, в то время как Win3.0 реально было запустить на 286). И как бы MS не старались спрятать DOS, например, в WinME (последней ипостаси 9х), уши его торчали отовсюду и при желании можно было загрузиться в командную строку вообще без GUI.


                    1. axe_chita
                      18.11.2024 13:21

                      Windows NT 3.х и Windows 3.x (как и NT4 и Win9x) действительно имели одинаковый интерфейс

                      Уточню, что первые (3.х) следовали в интерфейсе стандарту IBM CUA, вторые имели интерфейс модифицированный для "домохозяек", по результатам развода с IBM исследований Microsoft

                      в то время как Win3.0 реально было запустить на 286).

                      При определенном терпении она запускалась на 8088. Был даже специальный ключ /R для запуска Windows в реальном режиме


                1. axe_chita
                  18.11.2024 13:21

                  Цитата из первой главы Танненбаума: "Когда корпорация Microsoft решила создать преемника MS-DOS, она была под большим впечатлением от успеха Macintosh. В результате появилась основанная на применении графического интерфейса пользователя система под названием Windows, первоначально являвшаяся надстройкой над MS-DOS (то есть она больше была похожа на оболочку, чем на настоящую операционную систему). На протяжении примерно 10 лет, с 1985 по 1995 год, Windows была просто графической оболочкой, работавшей поверх MS-DOS."

                  Ещё цитата "Windows 3.0 не была настоящей операционной системой — это была графическая среда, работавшая поверх системы MS-DOS, которая по-прежнему управляла компьютером и файловой системой. Все программы работали в одном адресном пространстве, и ошибка в любой из них могла привести к остановке всей системы. "


                  1. hondurasez
                    18.11.2024 13:21

                    И тем не менее, Windows, начиная с версии 3.х это именно операционная система, и не только потому, что autoexec.bat у кого-то заканчивался на nc.exe, а у кого-то на win.com.


                    1. axe_chita
                      18.11.2024 13:21

                      Win16 даже при наличии установленного Win32s не становилась операционной системой. Точка. И DOS не являлся "всего лишь" загрузчиком Windows.

                      Далее смотрим в Win.com и наблюдаем следующие сообщения об ошибках "Отсутствует HIMEM.SYS; Убедитесь, что этот файл находится в Вашем каталоге Windows и что его местонахождение правильно указано в Вашем файле CONFIG.SYS", плюсом к этому идут сообщения что "Нужна MS-DOS версии 3.30 или выше", а так же "Недостаточно обычной памяти для запуска Windows. Переконфигурируйте Вашу систему для увеличения доступной памяти и попробуйте еще раз", и ещё "Недостаточно указателей файлов. Увеличьте значение files= в config.sys до 30 и более"

                      Этого ВСЕГО более чем достаточно, чтобы ОПРЕДЕЛЯТЬ Win16 как оболочку DOS, не способную к самостоятельному существованию.


                      1. mvv-rus
                        18.11.2024 13:21

                        Этого ВСЕГО более чем достаточно, чтобы ОПРЕДЕЛЯТЬ Win16 как оболочку DOS, не способную к самостоятельному существованию.

                        Вам ещё не надоело вести тут древнюю священную войну против Win3.x (в пользу OS/2, полагаю - тогда священной войной занимались как раз сторонники "полуоси")? Но, по-любому: читали ли вы книгу Эндрю Шульмана "Неофициальная Windows 95"? Если не читали, но намерены продолжать священную войну дальше - обязательно прочтите. Там как раз соответствующие вопросы разобраны подробно, с исследованиями внутренностей и подтверждением правоты на примерах кода, написанных автором. Его выводы:

                        1. Windows 95 - это эволюционное развитие расширенного режима Windows, появившегося в Windows 3.0 (1990).

                        2. Ядро расширенного режима Windows (VMM) является полноценной ОС, полностью управляющей выполнением программ: режимами работы процессора, обработкой прерываний, обращением к вводу-выводу.

                        3. Как и всякая хоть чуть-чуть современная операционная система, для работы с устройствами и файловыми системами VMM Windows 3.х/9.x использовал компоненты - драйверы. Какие именно драйверы и в каких случаях их использовать, определял VMM.

                        4. В частности, для многих устройств драйвером являлся 16-битный код BIOS и DOS, загруженный (а в случае BIOS - вообще, прошитый) до запуска Windows. Этот код VMM запускал в режиме V86 процессора 80386 и старше под своим управлением, и в некоторых случаях даже перехватывал управление вызовами из этого кода. А поскольку этот код не предназначен для его параллельного выполнения, VMM перед вызовом этого кода захватывал блокировку, которую освобождал после завершения вызова.

                        В принципе, теоретически, в расширенном режиме можно заменить вообще весь код DOS как своего рода драйвер на собственные драйверы VMM (VXD) и избавиться от этой зависимости. Эта работа постепенно велась, но так и не была доделана до конца существования линейки Win3.x/9x/ME по причинам экономическим, а не техническим. В частности, вполне можно было бы и пресловутое форматирование дискеты перенести в VXD (перенесли или нет - не в курсе, дискеты к концу 90-х стали как-то для меня неактуальны).

                        Называть ли после этого Windows 3.x расширенного режима ОС или оболочкой - вопрос чисто терминологический, я лично причин ломать по этому копья (особенно, сейчас) не вижу.

                        В конце концов, к XXI веку памяти на работу с полноценной ОС с вытесняющей многозадачностью и изоляцией памяти процессов стало хватать всем, и прошлые компромисные ОС/оболочки стали неактуальны.

                        Как-то так.


                    1. tlittle
                      18.11.2024 13:21

                      Тут, видите ли, даже насчет Windows 95 споры не утихают по сей день, а уже Win3.хх... Попробуйте установить Win3.хх на чистый комп? Это же операционная система, значит должна уметь?


                      1. hondurasez
                        18.11.2024 13:21

                        В этом смысле она ничем не отличается от Win95, просто DOS забыли в коробку положить.


          1. AlexSpirit
            18.11.2024 13:21

            >>Но их же никто не называет ос?

            win 3.1 могла сама работать с диском в 32 битном режиме. Не используя ДОС подсистему. Вопрос тогда, оболочкой какой "Дисковой Операционной Системы" она была ?


            1. zatim
              18.11.2024 13:21

              Ну и что? Еще раз повторю свою мысль. Под досом мало какое приложение пользовалось только вызовами дос. Чаще всего - вызовами биос, а нередко работало напрямую с аппаратурой. Это было в порядке вещей.

              Простой пример - широко известная программа MHDD, грузится из под дос и напрямую через железо работает с дисками, причем как старыми ide, так и всеми современными. Наверняка при работе использует упомянутое вами 32-битное обращение к дискам. А может и 64 бит использует, я хз. Так что ж, эта программа теперь - ОС, по вашему критерию?


              1. mayorovp
                18.11.2024 13:21

                С такой логикой вообще любою ОС можно считать оболочкой для MS-DOS.

                Простой пример - широко известная программа MHDD [...] Так что ж, эта программа теперь - ОС, по вашему критерию?

                До тех пор, пока она не позволяет запускать другие программы, предоставляя им своё системное API - нет, не ОС.


                1. zatim
                  18.11.2024 13:21

                  С такой логикой вообще любою ОС можно считать оболочкой для MS-DOS.

                  В winnt нет доса, в убунте нет доса, в андроиде нет доса) вообще нигде нет доса, кроме самого доса и семейства вин 1.0 - 3.0 (вин 95-ме - под вопросом).

                  Вы, видимо, хотели пошутить, но чет не срослось. Шутка не получилась.

                  До тех пор, пока она не позволяет запускать другие программы,

                  Перечитайте исходный комментарий, речь шла о другом.


                  1. hondurasez
                    18.11.2024 13:21

                    вин 95-ме - под вопросом

                    Отчего же? Там есть дос, без вопросов.


                    1. axe_chita
                      18.11.2024 13:21

                      Модифицированный DOS с интегрированным в io.sys драйвером XMS ЕМНИП


                1. khajiit
                  18.11.2024 13:21

                  Вот так вот, ВНЕЗАПНО, Операционной Системой стали Dos Navigator, разнообразные DOS-extenders, и IDE


                  1. Komrus
                    18.11.2024 13:21

                    А также - Nero Burning ROM :))))


                  1. Uprt
                    18.11.2024 13:21

                    Dos Navigator

                    позволяет запускать другие программы, предоставляя им своё системное API

                    нет, Dos Navigator не представляет свое API другим программам


                    1. axe_chita
                      18.11.2024 13:21

                      А GeoWorks, New Deal Office, Breadbox Ensemble имевшие SDK и API теперь тоже ОС?


                      1. mayorovp
                        18.11.2024 13:21

                        Понятия не имею что это такое, но оно даже называется GEOS...


                      1. axe_chita
                        18.11.2024 13:21

                        GEOS работала только на Commodore 64 и Apple II

                        PC/GEOS обычно именовалась как GeoWorks, и она являлась графической оболочкой DOS предоставлявшей доступ к своему API

                        Versions
                        • 1990: OS/90 beta version

                        • 1990: geoDOS beta version

                        • 1990: GeoWorks 1.0

                        • 1991: GeoWorks 1.2

                        • 1992: GeoWorks 1.2 Pro (with Borland Quattro Pro for DOS with PC/GEOS "Look and Feel")

                        • 1992: GeoWorks DTP

                        • 1992: GeoWorks CD Manager

                        • 1993: GeoWorks Ensemble 2.0 (new kernel PC/GEOS 2.0)

                        • 1993: Geopublish 2.0

                        • 1994: Geoworks Ensemble 2.01

                        • 1996: NewDeal Office 2.2

                        • 1996: NewDeal Office 2.5

                        • 1996: NewDeal Publish 2.5 shareware version

                        • 1997: NewDeal Office 97

                        • 1998: NewDeal Office 98

                        • 1999: NewDeal Office release 3 (new kernel PC/GEOS 3.0)

                        • 1999: NewDeal Office release 3 evaluation

                        • 1999: NewDeal Office 3.2

                        • 2000: NewDeal Office 3.2d (German patch)

                        • 2000: NewDeal Office 2000 (new kernel PC/GEOS 4.0)

                        • 2000: NewDeal Office 2000 for GlobalPC [de] (for a Surf´n´Office PC from Ted Turner IV (MyTurn, Inc.) with help from CNN)

                        • 2001: BreadBox Ensemble beta version 4.0.1.1

                        • 2001: BreadBox Ensemble beta version 4.0.1.x

                        • 2002: Breadbox Ensemble beta version 4.0.2.0

                        • 2005–March: Breadbox Ensemble version 4.1.0.0

                        • 2005–November: Breadbox Ensemble version 4.1.2.0

                        • 2009–August: Breadbox Ensemble version 4.1.3.0


              1. tlittle
                18.11.2024 13:21

                Под дос большинство программ работали с вызовами дос. В той части, которая относилась именно к дисковой операционной системе. Ну вот не надо никому обращаться к 13-му (к 13-му?) прерыванию и разбираться с тонкостями работы каждого винта. Есть 21 прерывание и стандартные функции дос, их и использовали.

                Да, графика, звук - здесь средств доса не хватало. Игрушки, всяческая графика - через свои драйвера.

                Да, специализированные утилиты для работы с диском работали с ним напрямую. Но это далеко не весь софт.


        1. tlittle
          18.11.2024 13:21

          Я вам открою, быть может, секрет, но с виндой 95 это тоже возможно. Я имею в виду - отключить автостарт винды из MS-DOS 7.xx, а также реализовать возврат обратно в дос после завершения работы (когда на экране надпись "теперь питание компьютера можно отключить").


          1. CrashLogger
            18.11.2024 13:21

            Не секрет. Так и что теперь, Windows 9x тоже не системы, а оболочки ? )


            1. khajiit
              18.11.2024 13:21

              Да. Безумно разросшиеся, и — по сложности — давно превзошедшие реальную ОС, без которой они не могут запуститься, но все еще оболочки.


              1. czz
                18.11.2024 13:21

                Ну тогда любая ОС — это оболочка для EFI, так?


              1. Denis_Chernyshev
                18.11.2024 13:21

                Ну, тогда Ubuntu - оболочка для LILO/GRUB.

                Но все-таки логичнее считать, что DOS - всего лишь системный загрузчик для Windows Classic


                1. axe_chita
                  18.11.2024 13:21

                  Приведите пример ОС возвращающей управление загрузчику после своего завершения?


                  1. mayorovp
                    18.11.2024 13:21

                    Это действительно странно для ОС, однако делается довольно просто. При сильном желании можно добавить подобную функциональность в ядро linux.

                    Может ли ОС стать не-ОС от добавления функциональности?


                    1. axe_chita
                      18.11.2024 13:21

                      Троллебусизбуханки.JPG

                      Для этого Win16 нужно стать самостоятельной ОС не требующей для своей работы другую ОС.

                      А Win16 не могла работать самостоятельно в отрыве от DOS, что и отображено в её сообщениях об ошибках "Отсутствует HIMEM.SYS; Убедитесь, что этот файл находится в Вашем каталоге Windows и что его местонахождение правильно указано в Вашем файле CONFIG.SYS", плюсом к этому идут сообщения что "Нужна MS-DOS версии 3.30 или выше", а так же "Недостаточно обычной памяти для запуска Windows. Переконфигурируйте Вашу систему для увеличения доступной памяти и попробуйте еще раз", и ещё "Недостаточно указателей файлов. Увеличьте значение files= в config.sys до 30 и более"

                      Этого ВСЕГО более чем достаточно, чтобы ОПРЕДЕЛЯТЬ Win16 как оболочку DOS, не способную к самостоятельному существованию.


                    1. axe_chita
                      18.11.2024 13:21

                      Это действительно странно для ОС, однако делается довольно просто. При сильном желании можно добавить подобную функциональность в ядро linux.

                      Так что, когда мы увидим данный сверхважный коммит в ядре linux? ;)

                      Может ли ОС стать не-ОС от добавления функциональности?

                      А разве Win16 это операционная система? Это обычное приложение DOS, которое после окончания своей работы освобождает все ранее захваченные ресурсы. Так что, то что вы называете добавление функциональности, на самом деле стандартное поведение ожидаемое от приложения.

                      Или нужно идти по пути Microsoft в офисе которой сгорела лампочка?

                      Сколько инженеров по программному обеспечению из компании "Майкрософт" нужно для того, чтобы выкрутить перегоревшую лампочку и закрутить новую?
                      Нисколько. Они просто определят темноту как индустриальный стандарт.


                      1. mayorovp
                        18.11.2024 13:21

                        Так что, когда мы увидим данный сверхважный коммит в ядре linux? ;)

                        Никогда, в силу его сверхважности

                        А разве Win16 это операционная система?

                        А разве я про неё писал?


        1. vikarti
          18.11.2024 13:21

          Драйвера диска и файловой системы. (и то - есть ньюансы скажем так - в некоторых случая эти драйвера - свои).

          Вообще - почитайте книжку Unauthorized Windows 95 (русский перевод - Неофициальная Windows 95), там очень подробный разбор что и как. Текст прям на раз ищется (русский вариант правда в djvu обычно), печатные версии разве что по библиотекам офлайновым дожили (там мягкая обложка и не очень хороший переплет).

          Система управления памятью своя и формат файлов - ну так у вас тогда и DOS Extender'ы станут "ОС" например


          1. CrashLogger
            18.11.2024 13:21

            DOS extender'ы не имеют своего формата исполняемых файлов. Но да, они уже намного ближе к операционной системе.


            1. vikarti
              18.11.2024 13:21

              Были extender'ы которые могли PE загружать.


            1. axe_chita
              18.11.2024 13:21

              Да ну! А если поискать?


      1. MaTocoB
        18.11.2024 13:21

        В Windows NT, DOS не было, она изначально использовала NTFS в качестве файловой системы, а ДОС ее не видит вообще, и ветка NT развивалась своей жизнью.

        Вообще-то на этапе установки Windows NT доступна только одна файловая система - FAT16, преобразование в HPFS/NTFS происходит на втором этапе и по выбору пользователя. И первый запуск инсталляции Windows NT происходит из-под DOS. С этим связана одна особенность - в случае отсутствия himem.sys и smartdrv.exe копирование файлов в папку установки может идти практически бесконечно долго. Что касается DOS, то она не видит любые файловые системы, для которых нет драйверов. Вот в PC DOS 7.1 добавили драйвер FAT32 - и операционная система сразу начала работать с дисками в этом формате, а для NTFS существовали сторонние программы, позволяющие с ней работать.


        1. axe_chita
          18.11.2024 13:21

          WinNT не нужен ни Himem.Sys ни smartdrv. Вы её с Wix9x перепутали


          1. MaTocoB
            18.11.2024 13:21

            Нет, дружок, не перепутал. Один из вариантов установки - запуск из-под DOS командой winnt. HIMEM.SYS нужна для драйвера кэширования дисков SMARTDRV.EXE. При отсутствии кэширования даже на современной системе у вас терпения не хватит дождаться окончания копирования файлов из дистрибутива в папку установки. И только после окончания этого процесса начнётся установка. Конечно, можно сделать набор установочных дискет командой winnt /b, но ни в 1990-х, ни сейчас это не актуально. Есть ещё загрузочные дистрибутивы NT 4.0, где инсталляция начинается сразу с CD-ROM.


            1. MaTocoB
              18.11.2024 13:21

              Виноват, winnt /ox - создание загрузочных дискет, winnt /b - это как раз установка без дискет


            1. zatim
              18.11.2024 13:21

              Нет, таки перепутали. Хаймем и смартдрайв нужны только на этапе установки из под доса.


              1. mayorovp
                18.11.2024 13:21

                А он что, написал что-то другое? Вы сейчас с чем вообще спорите?

                И первый запуск инсталляции Windows NT происходит из-под DOS.


            1. axe_chita
              18.11.2024 13:21

              Не всякий BIOS умел грузится с CDROM, так что первый этап запускался именно с загрузочных дискет, которая подготавливала второй этап установки с CD диска.

              И ещё, человека устанавливавшего OS/2 с дискет, не напугать установкой с дискет WinNT 8P


              1. MaTocoB
                18.11.2024 13:21

                Только загрузочную дискету DOS сделать легче, чем 3 дискеты Windows NT. И меня всегда удивлял этот избыточный шаг. Нужна была загрузочная дискета DOS, чтобы создать 3 загрузочные дискеты NT, чтобы загрузиться для установки с CD-ROM. В своей практике я свёл число телодвижений к минимуму - создавал загрузочный том DOS на HDD, копировал на него дистрибутив, запускал инсталляцию с него. Если много одинаковых машин, пользовался программами для снятия образа жёсткого диска. Если что, я админ с 30-летним стажем... И вы мне будете рассказывать, как грузится и ставится винда.


                1. axe_chita
                  18.11.2024 13:21

                  Только загрузочную дискету DOS сделать легче, чем 3 дискеты Windows NT. И меня всегда удивлял этот избыточный шаг.

                  Вот только загружаясь у этих трех дискет, ты мог устанавливать её с установочного CD, не тратя время на установку DOS, конфигурирование DOS чтобы он видел CD, потом копирование каталога установки на раздел FAT16, ведь NT4 не понимал ничего другого во время установки. И да, поддержка FAT32 отсутствовала "искаропки" организовывалась сторонними программами. Причем загружаться NT4 умела только с FA16 или NTFS.

                  В своей практике я свёл число телодвижений к минимуму - создавал загрузочный том DOS на HDD, копировал на него дистрибутив, запускал инсталляцию с него. Если много одинаковых машин, пользовался программами для снятия образа жёсткого диска.

                  Т.е. вы заморочились заранее, сделали кучу телодвижений "до того как" и говорите что легче создать всего лишь одну загрузочную дискету? ;) У вас странные понятия о "легче" ;)

                  Если много одинаковых машин, пользовался программами для снятия образа жёсткого диска.

                  Если так много одинаковых машин, то проще их завязать в сетку, в сетевушки воткнуть с bootrom, подцепить к серваку, на сервак закинуть образы снятые с уже настроенных машин и восстанавливать их по щелчку пальцев админа?

                  «Лучше день потерять, а потом за пять минут долететь!»

                  Если что, я админ с 30-летним стажем...

                  Верю дружок, верю: "Я Баба Яга в шестом поколении!" ;))

                  Первичные половые признаки админа присутствуют? В смысле борода, свитер и бубен? :)

                  И вы мне будете рассказывать, как грузится и ставится винда.

                  И когда вы последний раз устанавливали/переустанавливали NT4 Workstation или NT4 Server? Лет 20-25 назад? :)


                  1. MaTocoB
                    18.11.2024 13:21

                    Вот только загружаясь у этих трех дискет, ты мог устанавливать её с установочного CD, не тратя время на установку DOS, конфигурирование DOS чтобы он видел CD, потом копирование каталога установки на раздел FAT16, ведь NT4 не понимал ничего другого во время установки. И да, поддержка FAT32 отсутствовала "искаропки" организовывалась сторонними программами. Причем загружаться NT4 умела только с FA16 или NTFS.

                    Нет, как ленивое существо, я для себя вывел такую формулу. В конце концов, досовская дискета создаётся один раз , а с 3-мя дискетами надо шевелиться 3 раза. :))) На счёт FAT32 не понял, я где-то говорил, что она поддерживалась "искаропки"?! Про утилиты Winternals для поддержки FAT32 под NT4, равно как и NTFS под DOS, я ещё помню. А, да, наша милая NT4 ещё и дефрагментатора не имела, поэтому сразу после инсталляции на слабых машинах еле ворочалась.

                    Если так много одинаковых машин, то проще их завязать в сетку, в сетевушки воткнуть с bootrom, подцепить к серваку, на сервак закинуть образы снятые с уже настроенных машин и восстанавливать их по щелчку пальцев админа?

                    Это действует только если все машинки находятся в сети. К тому же, если мне склероз не изменяет, в 1996-1998 годах с bootrom были какие-то сложности. Не всегда это прокатывало, хотя, в мануалах по самой NT была возможность и сетевой установки, и заливать образ системы удалённо тоже можно было, только потом надо было разбираться с SID-ами, чтобы не было конфликтов.

                    И когда вы последний раз устанавливали/переустанавливали NT4 Workstation или NT4 Server? Лет 20-25 назад? :)

                    Да, примерно так. В 2003 году рабстанцию переставлял, серваки к тому времени уже все 2000-е были, ради эксперимента кое-где начали появляться 2003-и. А в виртуалке я по NT4 до сих пор ностальгирую :)


                    1. MaTocoB
                      18.11.2024 13:21

                      Первичные половые признаки админа присутствуют? В смысле борода, свитер и бубен? :)

                      Свитер и бубен, да, ещё пивное пузо от благодарных пользователей :) Бороды нет - растёт хреново, в отличие от пуза :)))


                  1. MaTocoB
                    18.11.2024 13:21

                    И да, поддержка FAT32 отсутствовала "искаропки" организовывалась сторонними программами. Причем загружаться NT4 умела только с FA16 или NTFS.

                    А, я понял, это как бы намёк на то, что якобы с этих 3-х дискет можно было сразу форматировать системный том в NTFS. Таки нет. Сначала всё равно NT4 создавала раздел FAT16, причём его объём был ограничен 4 ГБ за счёт большого кластера в 64 кБ. И только потом преобразовывала FAT16 в NTFS.

                    Т.е. вы заморочились заранее, сделали кучу телодвижений "до того как" и говорите что легче создать всего лишь одну загрузочную дискету? ;) У вас странные понятия о "легче" ;)

                    Признаю, мсье знал толк в извращениях. Но манипулировать тремя дисками ему было откровенно лень. Мсье даже искал способ, как загрузиться с Zip, скинув туда содержимое этих трёх дискет. Не прижилось только потому что не все компы шли с Iomega ZIP.


        1. tlittle
          18.11.2024 13:21

          С этим связана одна особенность - в случае отсутствия himem.sys и smartdrv.exe копирование файлов в папку установки может идти практически бесконечно долго.

          Ну не бесконечно долго, но долго. Первые пару раз я ставил NT4.0 именно так, потом уже чуть подучил матчасть и узнал, что есть не просто smartdrv, а smartdrv c+ :)


      1. iago
        18.11.2024 13:21

        тогда что такое MacOS, самостоятельная ОС или оболочка над FreeBSD? По сути она куда более базируется над Unix, чем 3.11 над досом, там буквально для чего не сделали кнопку - надо лезть в консоль напрямую, а юникс там не просто так, для совместимости со старым софтом


        1. khajiit
          18.11.2024 13:21

          От всей фряхи там крохотный кусочек, и тот — сбоку


          1. DMGarikk
            18.11.2024 13:21

            MacOS это самостоятельная ОС, от фри там реально довольно небольшой кусок

            если уж на то пошло, макос это скорее NeXTSTEP чем фря


        1. tlittle
          18.11.2024 13:21

          Вы немного путаете. MacOS не запускает FreeBSD для себя. Она использует часть кода BSD в ядре. Является в чем-то ее наследником.


          1. iago
            18.11.2024 13:21

            довольно размытая грань между этими понятиями. В винде тоже столько легаси, оставшегося со старинных версий 80-х, начала 90-х годов, всяких паскалевских сигнатур, кусков кода доса - что тоже черт уже не разберет, кто от кого произошел.

            Ну так и Win95, о чем изначально шла речь в треде, не является оболочкой над досом.


    1. DieSlogan
      18.11.2024 13:21

      Сколько людей, столько и мнений.

      Игнорируя техническую сторону вопроса, мне всегда нравились TUI инсталляторы. Я точно знал, что кило/мега/гигабайты памяти и CPU не тратятся на отрисовку красоты и могут быть задействованы работе.

      К тому же, графика занимает место в виде ассетов, что во времена флоппи дискет имело большой вес.


      1. fhunter
        18.11.2024 13:21

        К тому же, графика занимает место в виде ассетов, что во времена флоппи дискет имело большой вес.

        В то время оно было не целиком картинками, а кусочками и довольно компактными. На фоне общего объёма того же windows 95 - довольно мало.

        то что я вижу тут на картинке инсталлятора - почти наверняка 16-цветное, то есть 2 пикселя на байт даже без сжатия. И почти наверняка с RLE кодированием (которое тут будет хорошо работать, потому что есть большие куски сплошных цветов).


        1. DieSlogan
          18.11.2024 13:21

          И сколько по вашему это занимает?

          А ещё у нас в инсталляторе появляется обслуживающий графику код и драйвера карты. То есть, фактически, помимо графики нужно загрузить в память и урезанную версию windows 3.1


          1. CrashLogger
            18.11.2024 13:21

            Драйвера не нужны - инсталлятор работает в стандартном VGA режиме 640x480x16 цветов.


          1. fhunter
            18.11.2024 13:21

            Десятки килобайт максимум.

            Драйвер, на самом деле не особо большой (посмотрел в win3.11 - там 70 килобайт vga-драйвер вроде + шрифты).

            castle.bmp (32x32 картинка в .bmp формате из win3.11 - 760 байт) и т.д.


      1. SagePtr
        18.11.2024 13:21

        К тому же, графика занимает место в виде ассетов, что во времена флоппи дискет имело большой вес.

        Различные кнопки и другие UI-элементы чаще всего отрисовывались просто геометрическими примитивами. До сих пор помню, как в старых версиях Windows через реестр можно было подкрутить цвета света и тени кнопок и тем самым поменять им стиль рамки.


    1. firehacker
      18.11.2024 13:21

      у меня еще долго бомбило от текстового инсталлера NT ...который сравнивая с 95 и особенно с 98 выглядит крайне старомодно на...и это тянулось аж до XP включительно

      А что, если я скажу, что мне больше нравился и сильно нравился именно текстовый вариант?

      Вы наверное из тех людей, кто молится на циферные спидометры и сенсорные кнопки на панели управления, а стрелочные приборы (которые считываются периферическим зрением) и физические осязаемые кнопки и крутилочки (которыми можно управлять вслепую) считаете старомодными?


      1. DMGarikk
        18.11.2024 13:21

        Вы наверное из тех людей, кто молится на циферные спидометры и сенсорные кнопки на панели управления

        а вот как раз тут я категорически консервативен и буду молится на физические стрелки и кнопки до конца ;) потому что их юзабилити сильно выше

        но в случае с инсталлером винды, если вы вспомните сколько всего надо было настраивать при установке 95 версии, если это сделать в текстовом виде, то это у человека неискушенного просто кукушка поедет, листать списки значений по 30-50 элементов, да еще доустанавливать драйвера в процессе...в винде кстати там даже справка была доступна которую полистать можно было, есть справка в текстовых инсталлерах?

        я вот например помню мозголомный способ установки драйверов в NT/2k/XP на рейд контроллеры и прочие сидиромы..если в NT он хоть и предлагает их выбирать (здоровенный список в котором помоему не все влезает в экран в ширину)..то в XP это "упростили" и там надо всякие кнопочки жать успевая прочитать подсказку внизу

        ==

        если идти дальше, то я терпеть ненавижу текстовый инсталлер линуксов где надо делать разметку на диске ориентируясь на текстовое описание разделов и вбивая циферки руками чтобы правильно попасть в свободное место

        т.е. объективно, для обычного смертного, графический инсталлер удобнее, а еще удобнее если он не спрашивает лишнего как в современной винде, а пишет чёнить интересное или нужное


  1. Uprt
    18.11.2024 13:21

    Здесь они, хотя бы, запускаются и работают последовательно.

    А вот при использовании Windows 3.11 (которую еще ошибочно называют "оболочкой для доса") на 32-битном процессоре, там фактически одновременно работало сразу три операционных системы.


    1. axe_chita
      18.11.2024 13:21

      Win16 была графической надстройкой над DOS и не могла работать без загруженного DOS драйвера XMS


      1. Uprt
        18.11.2024 13:21

        Это никак не противоречит тому, что написал я и что написано по ссылке.

        В Enhanced Mode (а скорее всего и в Standard Mode тоже) досовский HIMEM.SYS требовался только для запуска, а по факту дальше вообще не использовался. Да и для запуска он требовался, скорее всего, только для сохранения обратной совместимости с софтом, который юзер мог напихать в autoexec.bat и запустить до момента запуска Винды, типа Stacker'а, и для взаимодействия с ними досовского софта запущенного уже из Винды - поэтому во время старта винда просто дергала функцию HIMEM'а, аллоцируя в нем всю оставшуюся доступную память для себя (HIMEM тут как раз нужен чтобы при этом не трогать то, что уже могло быть аллоцированно другим софтом до этого момента), а дальше управляла ей самостоятельно.

        Одного факта присутствия HIMEM'а (который даже там почти и не использовался) не достаточно, чтобы называть систему "оболочкой". По факту же, в enhanced mode Windows 3.1 и дальше уже имели 32-разрядное ядро-гипервизор, в котором запускались виртуальные машины (в одной VM работали Win16 и Win32s приложения, плюс на каждую DOS-программу создавалось по отдельной виртуалке с DOS), свои 32-разрядные драйвера файловой системы (не использовавшие вызовы DOS), 32-разрядные драйвера дисковой системы (не использовавший вызовы BIOS), и т.д.

        Поэтому в Windows 3.1 на 386 и выше можно было запускать сразу несколько DOS-программ в окнах (без захвата целого экрана) с вытесняющей (!) многозадачностью между ними и возможностью скидывать их в своп. Ни одна из "оболочек" такое не умела и уметь не могла.

        DOS же там служил только загрузчиком, плюс использовалось очень небольшое количество его API, да и то, их продолжали дергать ровно по той же причине, что и в Windows 95/98/ME - потому что переписывание их заново не давало особых бенефитов, зачем тратить время и трогать то, что и так работает.


        1. axe_chita
          18.11.2024 13:21

          Это никак не противоречит тому, что написал я и что написано по ссылке.

          Если Win16 бы не требовала для работы загруженного драйвера XMS, то ваш высказывание "(которую еще ошибочно называют "оболочкой для доса")" имело бы право на существование. А так увы и ах, Win16 всего лишь GUI требующий для своей работы настроенную среду DOS.


          1. Uprt
            18.11.2024 13:21

            Я в том же комментарии, который вы процитировали, подробно расписал, почему мое высказывание не то что имеет право на существование, а является объективным фактом.

            Вы можете сколько угодно фантазировать свои определения и критерии, но давайте все-таки пользовать общепринятыми понятиями. Можете открыть академический учебник того же Танненбаума по операционным системам, и прочитать там первую главу, которая как раз и посвящена определению того, что является операционной системой. Windows 3.11 в enhanced mode целиком и полностью удовлетворяет всем этим критериям.

            Кстати, а Windows 95/98 - это, по-вашему, тоже лишь оболочки?


            1. axe_chita
              18.11.2024 13:21

              Я в том же комментарии, который вы процитировали, подробно расписал, почему мое высказывание не то что имеет право на существование, а является объективным фактом.

              В этом мире можно бесконечно наблюдать за тремя вещами, как горит огонь, как течет вода и как свидетели секты "Win16 - это операционная система!" с маниакальным упорством доказывают то, что сама Microsoft никогда не называла Win16 это ОС. Так ваш объективный факт ложь.

              В Enhanced Mode (а скорее всего и в Standard Mode тоже) досовский HIMEM.SYS требовался только для запуска, а по факту дальше вообще не использовался.

              По факту вы не знаете, что Himem.sys являлся менеджером памяти XMS для всех правоверных приложений DOS, которым являлся Win16, которую эти приложения освобождали по завершению своей работы, и возвращали управления командному процессору DOS. Ой, а вы что реально не знали, что Win16 при завершении своей работы передавал управление DOS, а не завершал работу ПК? 8D

              Да и для запуска он требовался, скорее всего, только для сохранения обратной совместимости с софтом,

              С каким таким софтом? Какая такая обратная совместимость? Win16 с точки зрения DOS был обычным приложением. Ничем не отличавшихся от мириад других. Да, там были неконкурентные преимущества, в виде использования недокументированных возможностей DOS, но кто мы такие чтобы критиковать Microsoft?. ;)

              который юзер мог напихать в autoexec.bat и запустить до момента запуска Винды, типа Stacker'а,

              Всё "понапиханное" в Config.sys и autoexec.bat и формировало среду в которой и запускались DOS приложения, к коим и относился Win16. И до DOS 6, конфигурирование этой среды было не тривиальной задачей, ибо зависший при старте драйвер превращал ПК в тыкву, и требовал наличия у пользователя загрузочной дискеты. ;) И чем тут могла помочь "ОС" Win16? Да ничем, она была обычным DOS приложением, требовавшим для запуска вполне определенно настроенное DOS окружение. А Stacker, это не всегда драйвер DOS, а иногда вполне реальная железка в виде карты расширения требовавших аппаратных ресурсов. Но вы об этом наверное и не слышали. ;)

              и для взаимодействия с ними досовского софта запущенного уже из Винды - поэтому во время старта винда просто дергала функцию HIMEM'а, аллоцируя в нем всю оставшуюся доступную память для себя (HIMEM тут как раз нужен чтобы при этом не трогать то, что уже могло быть аллоцированно другим софтом до этого момента),

              DOS приложение запущенное из под Win16? А какой в этом смысл? Только от безысходности. Ведь все ресурсы уже получила Win16.

              а дальше управляла ей самостоятельно.

              Неожиданно, DOOM/QUAKE делали тоже самое, брали весь доступный им объём памяти и управляли им - они от этого стали ОС?

              Одного факта присутствия HIMEM'а (который даже там почти и не использовался) не достаточно, чтобы называть систему "оболочкой".

              Достаточно того что Win16 ТРЕБОВАЛА этого драйвера и отказывала запускаться без него "Отсутствует HIMEM.SYS; Убедитесь, что этот файл находится в Вашем каталоге Windows и что его местонахождение правильно указано в Вашем файле CONFIG.SYS", плюсом к этому идут сообщения что "Нужна MS-DOS версии 3.30 или выше", а так же "Недостаточно обычной памяти для запуска Windows. Переконфигурируйте Вашу систему для увеличения доступной памяти и попробуйте еще раз", и ещё "Недостаточно указателей файлов. Увеличьте значение files= в config.sys до 30 и более"

              Этого ВСЕГО более чем достаточно, чтобы ОПРЕДЕЛЯТЬ Win16 как оболочку DOS, не способную к самостоятельному существованию.

              По факту же, в enhanced mode Windows 3.1 и дальше уже имели 32-разрядное ядро-гипервизор, в котором запускались виртуальные машины (в одной VM работали Win16 и Win32s приложения, плюс на каждую DOS-программу создавалось по отдельной виртуалке с DOS), свои 32-разрядные драйвера файловой системы (не использовавшие вызовы DOS), 32-разрядные драйвера дисковой системы (не использовавший вызовы BIOS), и т.д.

              Поэтому в Windows 3.1 на 386 и выше можно было запускать сразу несколько DOS-программ в окнах (без захвата целого экрана) с вытесняющей (!) многозадачностью между ними и возможностью скидывать их в своп. Ни одна из "оболочек" такое не умела и уметь не могла.

              Которое благополучно висло при зависании любого Win16 приложения, не виртуализировало DOS среду где любое DOS приложение обращавшиеся к графике требовало полноэкранного режима, с ненулевой вероятностью отлёта Win16, если это приложение использовало расширенные возможности VESA графики.

              И ещё, когда вы дискетку форматируете в Win16, что делает этот цирк на колёсах? 8Р

              DOS же там служил только загрузчиком, плюс использовалось очень небольшое количество его API,

              Ага, значит у вас DOS это "загрузчик"? Так почему, Win16 по своему завершению передавало управление "загрузчику"? В какой операционной системе такое происходит? Linux по своему завершению передает управление GRUB? Или WinNT завершая работу передает управление NTLDR? Извините но, что вы курите известно, вот что вы курите - не известно. ;)

              да и то, их продолжали дергать ровно по той же причине, что и в Windows 95/98/ME - потому что переписывание их заново не давало особых бенефитов, зачем тратить время и трогать то, что и так работает.

              Нет, не трогали это ровно потому, что это нагромождение из говна, скотч ленты и палок трюков, хаков, костылей и недокументированных возможностей держалось чудом, а иногда рушилось в зависимости от расположения звёзд. А исправить это уже не было никакой возможности, проще было прикопать стюардессу.

              Вы можете сколько угодно фантазировать свои определения и критерии, но давайте все-таки пользовать общепринятыми понятиями.

              Так приведите эти общепринятые понятия, в которых приложение конкретно требующее определенной версии ОС, настроенного окружения этой ОС, внезапно становится ОС не вытесняя собой первоначальную ОС, а по окончанию своей работы освобождающую захваченные ей ресурсы и передающёй управление первоначальной ОС.

              И прошу вас, прямо таки умоляю, перестаньте натягивать прилюдно сову на глобус, вас могут увидеть дети и получить травму психики! 8D

              Можете открыть академический учебник того же Танненбаума по операционным системам, и прочитать там первую главу, которая как раз и посвящена определению того, что является операционной системой.

              Цитата из первой главы "Дать точное определение операционной системы довольно трудно."

              Windows 3.11 в enhanced mode целиком и полностью удовлетворяет всем этим критериям.

              Каким ВСЕМ ЭТИМ критериям?
              Цитата из первой главы Танненбаума: "Когда корпорация Microsoft решила создать преемника MS-DOS, она была под большим впечатлением от успеха Macintosh. В результате появилась основанная на применении графического интерфейса пользователя система под названием Windows, первоначально являвшаяся надстройкой над MS-DOS (то есть она больше была похожа на оболочку, чем на настоящую операционную систему). На протяжении примерно 10 лет, с 1985 по 1995 год, Windows была просто графической оболочкой, работавшей поверх MS-DOS."

              Ещё цитата "Windows 3.0 не была настоящей операционной системой — это была графическая среда, работавшая поверх системы MS-DOS, которая по-прежнему управляла компьютером и файловой системой. Все программы работали в одном адресном пространстве, и ошибка в любой из них могла привести к остановке всей системы. "

              Вы точно Танненбаума читали или просто фалломорфировали? Или теперь "Войско взбунтовалось, говорят царь Танненбаум ненастоящий!"?

              Кстати, а Windows 95/98 - это, по-вашему, тоже лишь оболочки?

              "Вы престали пить коньяк по утрам? Отвечайте односложно - Да или Нет!" 8D

              Цитата из Танненбаума "В августе 1995 года была выпущена Windows 95. Она имела многие функциональные возможности полноценной операционной системы (моё примечание: но не все возможности), в том числе виртуальную память, управление процессами, многозадачный режим, а также ввела 32-битные интерфейсы программирования. Однако ей не хватало безопасности, а также изоляции приложений друг от друга и от операционной системы. Поэтому проблемы со стабильностью остались даже после выпуска Windows 98 и Windows Me, в сердце которых по-прежнему работал 16-битный ассемблерный код операционной системы MS-DOS."


        1. vp7
          18.11.2024 13:21

          Самое интересное, что вытесняющая многозадачность в 3.1/3.11 была с сюрпризом - любое зависшее DOS приложение (выполняющее бесконечный цикл) вешало всю ОС целиком. Это свойственно скорее кооперативной многозадачности.

          Частично проблему устранили в Win95 (уж не OSR2 ли? не помню уже), но окончательно её решили только переходом на ядро NT.


          1. mvv-rus
            18.11.2024 13:21

            Это свойственно скорее кооперативной многозадачности.

            Дык, в Win3.x была именно кооперативная многозадачность. А вытесняющей не было, совсем. В свое время (примерно 90-92-й годы) именно наличие вытесняющей многозадачности считалось ключевым козырем для ОС семейства Unix на ПК (в ОS/2 многозадачность тоже была, в целом, кооперативная, а Windows NT тогда ещё не было), который позволит этим ОС захватить рынок ПК. Но случилось страшное: оперативная память резко подорожала и ОС с вытесняющей многозадачностью, которым памяти требовалось много, для массовых ПК оказались неподходящимим (и WinNT - тоже).
            Вытесняющая многозадачность формально появилась в Win95 и только для 32-бит приложений. А поскольку графическая подсистема в Win9x оставалась, в основном, 16-битной, и в ней многозадачность была кооперативной, воспользоваться вытесняющей многозадачностью в них было сложно.


            1. Uprt
              18.11.2024 13:21

              А вытесняющей не было, совсем

              В Enhanced mode была, только не для Win-программ, а между Win и DOS сессиями.


              1. mvv-rus
                18.11.2024 13:21

                А, конкретно вы, оказывается, об этом?
                Однако я не помню, чтобы DOS-программы как-то влияли на графические программы WIndows в в этом режиме, потому так и отписал предыддущему комментатору.


            1. geher
              18.11.2024 13:21

              в ОS/2 многозадачность тоже была, в целом, кооперативная

              Только в первых версиях (которые были 16 бит). В Варпе уже точно вытесняющая. Возможно, что в 2.10 уже тоже.


              1. vp7
                18.11.2024 13:21

                В варпе была, причём очень качественная. Сколько мы потратили с приятелями времени на то, чтобы её повесить... причём DOS программы работали либо полностью, либо с какими-то не особо существенными ограничениями (деталей уже не помню).

                Многие BBS переходили на OS/2 (из тех, у кого железо позволяло и было желание разбираться) именно по этой причине - она была практически неубиваемой. Если память не подводит - можно было даже настоить автоубивание подвисшего мейлера и его перезапуск, чего в Win сделать было нельзя.

                В Linux было всё тоже самое, но порог входа значительно выше, плюс совместимости с привычными DOS программами не было.

                Жаль, что OS/2 закончилась на мерлине и умерла ;(


                1. M_AJ
                  18.11.2024 13:21

                  В Linux было всё тоже самое

                  Во времена актуальности OS/2, чтобы ставит Linux нужно было быть большим энтузиастом, для всех остальных была BSD


          1. Uprt
            18.11.2024 13:21

            Ага, но не совсем. Там чуть сложнее.

            Win16 с самых первых версий основывались на кооперативной многозадачности. Приложение в своем основном цикле (event loop) должно было регулярно дергать один из двух методов (GetMessage/PeekMessage), и когда в очереди не оставалось сообщений, управление передавалось другому процессу. Соответственно подвисшая или криво написанная программа могла легко заблокировать всю систему.

            А в Real Mode и Standard Mode Windows при запуске DOS'овских программ система вообще по сути дела становилась однозадачной.

            Зато в Enhanced Mode все стало гораздо веселее. Там было ядро-гипервизор, управляющее виртуальными машинами. Для каждой DOS'овской программы уже создавалась отдельная VM (так называемый virtual 8086 mode). А в самой первой виртуальной машине запускалась всё то же Standard Mode ядро Windows, и в ней работали все Windows-программы. Поскольку они работали в одной общей виртуальной машине, там именно для Win16 аппок была все так же кооперативная многозадачность со всеми вытекающими, не смотря на то что, и между виртуалками VMM делал уже кооперативную многозадачность.

            Почему сделали так - скорее всего просто не успевали сделать по-другому, а возможно еще ресурсы экономили. Более-менее по-нормальному сделали уже в Windows 95 (но и там были проблемы из-за необходимости обратной совместимости с кучей старого 16-битным кодом).

            Кстати, это различие в архитектурах хорошо заметно по ограничения Win32s - оно могло запускать программы использующие Win32 API (Windows NT, Windows 95) на Windows 3.11, но при условии, что там не используются треды (потому что в Win32 треды не требуют никакого yield'а, а кооперативная многозадачность наоборот требует), и при условии что там в бинаре есть relocation tables - потому что в Win95/NT каждый процесс имеет свое адресное пространство и может работать с фиксированными адресами, а в Win16 все виндовые приложения крутятся в одной VM и имеют общую память, там так нельзя.


            1. Alcpp
              18.11.2024 13:21

              Дополню, что в Вин95 при зависании одной досовской программы, вешались и остальные открытые ДОС-окна.


              1. MaTocoB
                18.11.2024 13:21

                Ваше дополнение было бы ещё более веским, если бы вы указали, что для DOS-окон было общее системное адресное пространство, потому и крашилось сразу всё.


          1. VenbergV
            18.11.2024 13:21

            Сразу вспомнилась шутка про могозадачность Windows 95 и форматирование дискеты.


            1. Uprt
              18.11.2024 13:21

              Справедливости ради, это была не сколько проблема Windows 95, а проблема необходимости поддерживать обратную совместимость помноженную на проблему кривых BIOS'ов, которую Windows пыталась обойти всеми способами.


              1. axe_chita
                18.11.2024 13:21

                а проблема необходимости поддерживать обратную совместимость помноженную на проблему кривых BIOS'ов,

                На которых OS/2 форматировала и не чихала


              1. dragonnur
                18.11.2024 13:21

                Разве кривыми биосами не пытались восстановить работоспособность и обратную совместимость с наследуемой из начала 1980-х ошибкой в железе контроллера?


          1. MaTocoB
            18.11.2024 13:21

            Ядро NT существовало параллельно ядру 16/32, чтобы переманить пользователей на него потребовало много работы по обеспечению совместимости с DOS. Первая удачная попытка - Windows 2000, за которой последовала Windows XP. Но проблемы совместимости полностью преодолеть так и не удалось.


            1. vp7
              18.11.2024 13:21

              Я это и имел в виду, про переход на NT в пользовательском сегменте.

              В сегменте серверов NT появилась значительно раньше, но как вы верно подметили - с совместимостью там было не очень, UI хорошо отставал и использовать как рабочую станцию такой сервер было не слишком удобно (хотя и подвесить его было практически нереально).


              1. MaTocoB
                18.11.2024 13:21

                Насколько помню, первой распространяемой версией была Windows NT 3.1 - результат отказа от сотрудничества MS и IBM над OS/2. И я бы не сказал, что интерфейс там сильно отставал от 16/32. С 3.1 по 3.51 интерфейс был от Windows 3.1, в NT4.0 - Windows 95, Windows 2000 (NT5.0) сама задала интерфейс Windows ME. В СНГ в это время (1993-1995) был парк компьютеров, состоящий в лучшем случае из 486-х. Так что, для нас Windows NT долгое время была экзотикой. За рубежом же, в корпоративном секторе сочетание Windows NT Server/Workstation удивления уже не вызывало, хотя Unix долгое время доминировал в больших компаниях. Так что, в прошлом году Windows NT тихо отметила свой юбилей, т.к. первые версии прошли для подавляющего большинства пользователей незаметно.


                1. mayorovp
                  18.11.2024 13:21

                  А насколько я помню, Windows NT 3.1 была не просто первой распространяемой версией, а вообще первой версией.


                  1. DMGarikk
                    18.11.2024 13:21

                    а вообще первой версией.

                    первый версией с этим названием, до этого она называлась Microsoft OS/2


                    1. axe_chita
                      18.11.2024 13:21

                      OS/2 New Technology