Несколько дней назад Microsoft опубликовала очень любопытную информацию, мимо которой мы не могли пройти мимо. Опубликованная статья называлась The engineer’s engineer: Computer industry luminaries salute Dave Cutler’s five-decade-long quest for quality и посвящена заслуженному инженеру Microsoft и первому архитектору Windows NT Дэйву Катлеру, который заложил основу всех версий Windows начиная с 1993 года.



Известно, что Windows NT разрабатывалась как серверная операционная система и она прошла достаточно долгий путь эволюции перед тем как предстать во всей своей красе перед домашними пользователями в виде Windows 2000 и Windows XP. Не многие знают, что, на самом деле, все семейство ОС Windows NT, начиная от самых первых ее версий и заканчивая Windows 10 основано на одной из первых полностью 32-битных ОС фирмы Digital Equipment Corporation под названием VAX VMS, которая основана на UNIX.

Мы приведем наиболее значительные отрывки из вышеуказанной статьи с нашими комментариями

В 1976 г. компания Digital Equipment Corporation (DEC) [или просто Digital] была на волне успеха и считалась преуспевающей компьютерной фирмой. [Digital не только специализировалась на разработке своей ОС, но и железа для нее] Совместно с другими такими компаниями как Data General, Prime Computer и прочими IT-компаниями, которые располагались вдоль т. н. шоссе 128 (Massachusetts Route 128), DEC формировала компьютерный ландшафт того времени [выпуская миникомпьютеры].

В то же время уже известный на тот момент инженер Гордон Белл (Gordon Bell), который работал в Digital на высокой должности, был обеспокоен падением динамики продаж флагманского 16-битного миникомпьютера компании, известного как PDP-11 [работавшего на ОС RSX-11]. Другое беспокойство менеджеров DEC вызывал факт разработки IBM первого [микро-]компьютера.

Белл решил использовать свое видение будущего, поставив на создание нового 32-битного миникомпьютера под названием VAX с новой ОС [VMS], которая будет обеспечивать обратную совместимость с приложениями для миникомпьютера PDP-11. Тогда Белл обратился к Дэвиду Катлеру, которому, на тот момент, было 33 года. Он считался перспективным инженером Digital, к тому же, имевшим опыт разработки RSX-11. Бэлл попросил Катлера возглавить проект разработки VAX [Virtual Address Extension].

Два года спустя, первые экземпляры миникомпьютеров VAX увидели свет на производстве Digital. При этом VAX сразу же закрепил свою позицию лидера на этом рынке. Тогда Белл назвал Катлера лучшим «лучшим разработчиком операционных систем в мире».


Рис. Дэйв Катлер.
В 1982 г. Катлер встретился с Беллом и анонсировал свой уход из DEC, что стало для него полной неожиданностью. В свою очередь, руководство DEC не собиралось просто так расставаться со своим самым талантливым инженером, хотя, подозревало, что его недовольство относится к растущей бюрократии в руководстве Digital. Катлеру сделали встречное предложение от которого он не смог отказаться. Так была создана дочерняя компания DECWest.

Офис новой компании расположился на расстоянии 3 тыс. миль от штаб-квартиры Digital: в Бельвью, штат Вашингтон, т. е. недалеко от Сиэтла и Microsoft. Молодой инженер Len Kawell стал одним из первых талантливых специалистов этой фирмы. Специалисты собрались разработать ОС реального времени (real-time) для VAX, но в результате был создан и новый компьютер MicroVAX, а также real-time ОС для него под названием VAXeln. Катлер взял на себя функции разработки нового железа, а Len Kawell отвечал за создание ПО.

Kawell говорил, что у Катлера есть уникальное видение функций железа (hardware), что отличало его от других инженеров того времени. Он мыслил на уровне машинных инструкций и операций с регистрами микропроцессора. Тем не менее, в 1988 г. Катлер покинул Digital, а новый компьютер MicroVAX и ОС для него так и не увидели свет. После этого Катлер ушел в Microsoft, познакомившись с Биллом Гейтсом еще за пять лет до этого. Для него уже был готов проект новой ОС, которой суждено было произвести настоящий переворот в области микрокомпьютеров.


Рис. Катлер с Соломоном и Руссиновичем, авторами известной книги Windows Internals.
После переговоров с Биллом Гейтсом в 1988 г., Катлер принял решение о переходе в Microsoft для создания настоящей 32-битной ОС для микрокомпьютеров. К нему также присоединилась команда инженеров из предыдущего проекта: пять специалистов по разработке ОС и шесть специалистов в hardware.

Команда Катлера приступила к разработке новой ОС для Microsoft в апреле 1989-го, работа велась более десяти часов в сутки, иногда, без выходных. Основной задачей при разработке Windows NT стала портируемость будущей ОС, т. е. возможность ее работы не только на микропроцессорах Intel архитектуры x86, но также и на RISC-архитектурах, которые были популярны в тов время и обеспечивали большую производительность по сравнению с x86. Одновременно с этим, специалисты Microsoft уже сотрудничали с компанией IBM в новом проекте по разработке ОС под названием OS/2. Но у OS/2 были явные недостатки, во-первых она была 16-битной, а во вторых не была портируемой и могла работать только на микропроцессорах фирмы Intel.

Цели разработки Windows NT были сложными и амбициозными. Команда Катлера должна была обеспечить выполнение следующих требований:

  • Поддержка различных микропроцессорных архитектур [на уровне исходных текстов], включая, MIPS, Alpha, PowerPC, и x64.
  • Поддержка запуска приложений других ОС [модель подсистем], включая, UNIX POSIX, OS/2 и Win32.
  • ОС должна быть безопасной и соответствовать стандарту безопасности C2 (trusted computer certification).
  • Поддержка нескольких одновременно работающих микропроцессоров (мультипроцессорная архитектура) и подлинная многозадачность. Обе эти функции считались уникальными на тот момент для сегмента ПК.



Рис. Логотип Windows NT.
Одной из самых сложных задач, которую предстояло решить разработчикам, была задача тестирования разрабатываемой ОС. На раннем этапе команда не обладала всеми необходимыми ресурсами для разработки нужного набора тестов. Вместо этого, они сделали выбор в пользу динамической системы проверки стрессоустойчивости, что создало высокую нагрузку на систему в целом. Каждую ночь разработчики запускали стресс-тесты новой ОС на сотнях машин. Утром авторы Windows приезжали в офис и производили сортировку ошибок для последующего их анализа.

Интересно отметить, что первоначально в качестве основной подсистемы Windows рассматривалась не Win32, а OS/2, но позже Microsoft отказалась от этой затеи.[Как и от разработки самой OS/2 как таковой] Отчасти это было связано и с быстро набравшей популярность Windows 3.1, продажи которой составили 16 миллионов копий за полгода. В результате 16-битное Windows API было взято за основу и расширено до 32-х бит. Для новой ОС также была написана своя 32-разрядная графическая подсистема. Позже разработчики были вынуждены адаптировать Windows NT на RISC микропроцессор MIPS R3000 вместо заявленного изначально Intel i860 XR. Еще одной проблемой, которую необходимо решить, была совместимость новой ОС с устаревшими приложениями MS-DOS и 16-битной Windows.



Рис. Архитектура Digital VMS.


Рис. Архитектура Windows NT.

Windows NT 3.1 увидела свет 27 июля 1993 г. В 1996 Катлер оставил руководство всем проектом Windows NT и сконцентрировался на руководстве команды разработки ядра до 2006 г. В марте 2005 года Катлер закончил часть работы по портированию Windows NT на платформу AMD64, когда были выпущены первые 64-битные версии для рабочих станций и серверов.

См. также Windows NT and VMS: The Rest of the Story windowsitpro.com/windows-client/windows-nt-and-vms-rest-story

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


  1. olegkrasnov
    19.04.2016 16:26
    +9

    Вспомнил шутку, что если сдвинуть аббревиатуру VMS на один символ, то получим WNT.


  1. JKornev
    19.04.2016 16:33
    +13

    Тут написано что в основе Windows NT лежит VAX VMX, но нигде не сказано что Катлер использовал код или архитектурные решения из VMS, как-то желтовато


    1. khim
      19.04.2016 19:45
      +3

      А он и не использовал. Я думаю уж на это-то юристов Digital хватило бы, тогда Microsoft было гораздо меньше, а Digital — таки весьма намаленькой компанией тоже.

      Он оттуда только идеи взял, как я понимаю.


    1. esetnod32
      20.04.2016 22:11

      Т. е. по двух схемам почти полностью идентичных архитектур VMS и Windows NT этого не видно? Тогда предлагаю еще погуглить тему того, почему Microsoft соглашалась поддерживать для Windows NT архитектуру микропроцессора DEC Alpha до выпуска Windows 2000.


    1. esetnod32
      20.04.2016 22:15

      Для этого ниже дана ссылка на статью Руссиновича, в которой описаны все сходства архитектурных решений VMS и Windows NT.


  1. KpuTuK
    19.04.2016 17:18
    +1

    > Не многие знают, что, на самом деле, все семейство ОС Windows NT, начиная от самых первых ее версий и заканчивая Windows 10 основано на
    > одной из первых полностью 32-битных ОС фирмы Digital Equipment Corporation под названием VAX VMS, которая основана на UNIX.

    Разве?

    > Команда Катлера приступила к разработке новой ОС для Microsoft в апреле 1989-го, работа велась более десяти часов в сутки, иногда, без
    > выходных. Основной задачей при разработке Windows NT стала портируемость будущей ОС, т. е. возможность ее работы не только на
    > микропроцессорах Intel архитектуры x86, но также и на RISC-архитектурах, которые были популярны в тов время и обеспечивали большую
    > производительность по сравнению с x86.


  1. voidptr0
    19.04.2016 17:18
    -9

    >В результате 16-битное Windows API было взято за основу и расширено до 32-х бит.

    И с этого момента все пошло как-то не так.


  1. mpa4b
    19.04.2016 17:18
    +4

    А точно VMS 'основана на UNIX'? В википедиях ничего такого не написано.


    1. Duduka
      19.04.2016 20:13
      +3

      Точно — нет. В статье сказано: наследие RSX-11, даже совместимый режим PDP-11 был, с эмуляцией RSX-11.
      Нужно сказать, что такое VAX: экспериментальный микро-мини-суперкомпьютер, (практически ВСЕ экспериментально); пользователь мог программировать в микропрограммах, и можно было менять макроинструкции, что в эмуляторе PDP-11 и использовалось (два набора инструкций 32 и 16 битные, интел должен сказать спасибо), адресное пространство аппаратно ограничено 8 мегабайтами (обычно поставлялось меньше), но с прикольной системой виртуальных страниц (интел нервно курит в сторонке), адресное пространство 4ГБ разделено на 4 сегмента[верхний отдан OS, MS повторил этот трюк], шины данных 4-битные и данные передавались пачками (тут DEC должен сказать спасибо суперкомпьютерам), математический сопроцессор — внешний (интел должен сказать спасибо).
      Почему не UNIX?! На тот момент Си была четвертой по качеству генерируемого кода на VAX, сравниться с операционкой написаной частично на ассемблере, отлаженной кодовой базе RSX-11, ее утилитах, компиляторах, средствах разделения ресурсов UNIX не могла(и особых резонов ее ставить не было, на VAX/VMS приложений было больше), и на PDP-11 она особого распространения не имела, не все микрокомпьютеры имели необходимую память даже для запуска CLI.
      А статус RTOS VMS утеряло из-за свопирования на диск, хотя отдельные страницы можно было резервировать в памяти от свопинга (как в RSX-11), но все равно статус был дискредитирован, и реклама была направлена на рекламирование средств разделения, оптимизацию и квотирование используемых ресурсов, но даже в таком урезанном виде за счет быстродействия, большей памяти, интеллектуальных контролеров (нередко с собственной памятью) оставлял позади PDP-11 как «слабый» RTOS, но конечно — дорогой.


      1. mpa4b
        20.04.2016 19:59

        В статье именно что сказано в 1 месте, что якобы VAX VMS основана на UNIX. ctrl-f вам в помощь.

        Далее, таки VAX нифига не экспериментальный. Это вполне себе самостоятельная линейка миникомпьютеров, пришедшая на смену PDP-11 и PDP-10. PDP-11 упирались в ограничение 16-битной адресации, а PDP-10 просто тупо убили в угоду VAXам. В первых моделях VAXов был режим выполнения кода PDP-11, но тем не менее общего между архитектурами PDP-11 и VAX ничего нет, это не последовательное развитие, как например 8086-i386-amd64, а просто другая архитектура. Какие-то модели VAX действительно давали возможность микрокоды править, но далеко не все.


        1. esetnod32
          20.04.2016 22:03

          RSX-11M содержит в себе многие модели UNIX: файловая система, подсистема ядра, управление процессами и т д. VMS это 32 битное расширение RSX-11.


          1. khim
            20.04.2016 23:50

            Вы хотите сказать у какой-нибудь OS/360 или Multics'а нет ни файловой системы, ни подсистемы ядра? Бред какой.

            UNIX — важная веха в развитии IT, но он не был каким-то откровением в котором появились основные понятия.


          1. Duduka
            21.04.2016 15:43

            Да, иерархическая система VMS схожа с древовидной файловой системой UNIX, в рекламе акцентировалась эта похожесть (но на этом она и заканчивается), но «под капотом» была все та же файловая система RSX-11. RSX-11 уже была иерархическая, но в результате требований надежности, а не грамматических изысков Multics, системные структуры были распределены, продублированы, корневая директория хранила подкаталоги, а уже в них и хранились пользовательские данные, на этом схожесть fs заканчивается, дальше — только то чего не смогли осилить в AT&T: «группа и пользователь — права доступа, не у пользователя или группы есть права, а они и есть права, у каждого свой каталог (да, /home/.../ аналог, но доступ к группам не реализован, за место всего этого каждый файл или ACL хранит права, что приводит к „не наглядности и неконтролируемости“ прав в системе), повреждение отдельных пользовательских каталогов не приводил к полностью неработоспособной системе, после повреждения можно было загрузиться и попытаться реанимировать систему (если админ не полный… ноль, и не дал кому-то работать в каталоге [1,54]), версионность — все файлы имели версию, можно было хранить файл с несколькими разными версиями, управление непрерывностью файлов(и дефрагментацию можно было выполнить просто перекопировав с диска на диск, и установив признак непрерывности, или ключ при копировании), файловая система — в RSX было реализована не столь… топорно как в UNIX, кроме последовательной отправки записей(не только байты, но и строки переменной длинны, или других размеров, как в паскале, тут наверное нужно смотреть первоисточники в OS от IBM, не уверен), или с указанием номера записи в файле, так и некоторый аналог современных NoSQL(иерархический доступ по ключу, вероятно тоже, первоисточник в больших ЭВМ)».
            В VMS не, просто, переписали с 16 бит на 32, а разработали иную архитектуру, до которой UNIX так и не доросла. Сохранив идеологическую совместимость с RSX-11, позволили в пользовательских каталогах хранить подкаталоги и некоторые другие послабления из UNIX, но доступ к файлам остался столь же навороченным и даже еще больше усложнился, сплошные дескрипторы и сегменты, управлением файлом занимались непосредственно приложение и драйвер, получавший непосредственный доступ к данным в приложении, для UNIX это антипатерн.
            Система драйверов: тут Торвальдс долго дискутировал с Эндрю, а в VMS драйвера уже примонтировались «после» загрузки основной системы из CLI в батч-файле которого конфигурировалось ядро (рассчитывались размеры ресурсов и выделялись в зависимости от предполагаемой нагрузки и задач) и перечислялись драйвера, то что особо не нужно, но для экспериментальной системы, в которой постоянно дорабатываются драйвера, отлаживаются… это необходимый инструментарий. Драйвер устройства — независимый модуль, которому предоставляются собственные ресурсы, имеет доступ к некоторому подмножеству функций ядра, но живет почти независимо от OS, отличие от микроядра только в том, что OS — жирная, даже по меркам UNIX.


    1. redbeardster
      20.04.2016 18:57

      Нет, не основана. В любом случае, обещают OpenVMS перетащить на x86_64 скоро.


      1. Nxx
        26.04.2016 17:52

        А есть ссылка?


        1. redbeardster
          26.04.2016 17:58

          Есть от 2014 года — http://www.serverwatch.com/server-news/openvms-coming-to-x86.html, где-то видел еще, но не могу найти, сорри.


          1. Nxx
            26.04.2016 18:00

            Спасибо.


          1. Nxx
            26.04.2016 18:03

            Вот, нашел. Планируют к 2018 году: https://vmssoftware.com/pdfs/VSI_Roadmap_20160309.pdf


  1. Segmentq
    19.04.2016 17:18
    +16

    Как-то быстро статья закончилась.


    1. evil_random
      19.04.2016 18:49
      +9

      Ага.
      Желтый заголовок. Маловато информации.


      1. QtRoS
        19.04.2016 23:01
        -1

        Да и не так много нового…


      1. pavelkolodin
        20.04.2016 19:00

        Как раз спасибо, что сказали всё основное без высокохудожественных повествований и риторических вопросов.


    1. esetnod32
      20.04.2016 22:13

      Это не статья, а выдержки из одного материала Microsoft, в котором идет речь об исторических особенностях разработки Windows NT.


      1. MacIn
        24.04.2016 04:56

        Здесь не приведено ровным счетом ничего, что не было бы известно до. О каком раскрытии идет речь?


        1. Nxx
          26.04.2016 18:08

          К тому же, наврано, что VMS произошла от UNIX.


  1. onthefly
    19.04.2016 21:56
    +2

    Не многие знают, что, на самом деле, все семейство ОС Windows NT, начиная от самых первых ее версий и заканчивая Windows 10 основано на одной из первых полностью 32-битных ОС фирмы Digital Equipment Corporation под названием VAX VMS, которая основана на UNIX.


    Из последующего содержания статьи не следует, что «все семейство ОС Windows NT… основано на… VAX VMS». Если я был невнимателен, прошу указать на конкретные факты.


    1. esetnod32
      20.04.2016 22:08

      Факты есть, но это дополнительный материал, который к данному посту не имеет отношения. Предлагаю погуглить тему того, почему Microsoft поддерживала для Windows NT 64-битный микропроцессор DEC Alpha.


      1. onthefly
        21.04.2016 15:38

        В свою очередь предлагаю не делать в топиках сенсационных заявлений, если вы не готовы подкреплять это фактами. Оправлять в таких случаях читателя в гугл — это верх некорректности.


  1. belgak
    20.04.2016 10:20

    При упоминании PDP-11 вспоминаю теплый, ламповый «ПАРОЛЬ: Рыба-Меч» — застенки университета и исходиники гидры на магнитных бобинах этого древнего мейнфрейма, но все еще работающего. Тут с кодом видны тоже самое выходит, он все еще работает!


  1. thesame
    20.04.2016 10:52

    В 1976 г. компания Digital Equipment Corporation (DEC) [или просто Digital] была на волне успеха…
    Другое беспокойство менеджеров DEC вызывал факт разработки IBM первого [микро-]компьютера.
    Гм. С датировкой ничего не напутано? After developing it in 12 months—faster than any other hardware product in company history—IBM announced the Personal Computer on 12 August 1981
    Ну и слишком мало комментариев к статье, на мой взгляд. ;)


    1. khim
      20.04.2016 11:37
      +1

      С чего вы решили, что речь идёт о PC? Первый микрокомпьютер от IBM — это «всем известный» IBM 5100. А PC — это так, слегка усовершенствованная модель, IBM 5150… ну во всяком случае маркетологи некоторое время пытались это представить :-)

      Со временем про IBM 5100 все забыли (так как он действительно к IBM PC никакого отношения не имеет, кроме названия), что и порождает согодня подобные недоумённые вопросы.


    1. mpa4b
      20.04.2016 20:05
      +1

      Где-то в это время (76ой год, +-) как раз и началась 'микрокомпьютерная' революция.

      Появились доступные микропроцессоры (8080, 6800, 6502 и другие) и начали на них делать микрокомпьютеры (те же apple, commodore, atari, tandy и т.д.). В это время глава DECа заявлял что-то вроде, не могу предположить, зачем кому-то понадобится компьютер дома. И в результате DEC это всё проспал, и потом пытался выправлять ситуацию всякими там decmate и прочим. Закономерно проиграл. Все его VAXы по цене просто не могли сравниться с тем же ibm pc, сделанным из ничего (8088 и чипсет от 8080), не говоря уж о 8-битках.


  1. xerxes
    20.04.2016 10:52
    -1

    Почему-то не сказано, что IBM PC-совместимый VaXmate, вышедший в 1986-м, включал все те же Windows 1.0 + MS-DOS, а не свои разработки. А до этого PDP-11 работал на Xenix — лицензированный и допиленный Микрософтом Юникс.

    Выше говорят, что Микрософт был ничтожен в 80-х. Сомнительно, ведь у него был Xenix — самый популярный Юникс того времени, плюс MS-DOS и Windows 1.0. Микрософт уже с начала 80-х покрывал весь рынок ОС. Туда попробовали влезть IBM и DEC, у обоих не получилось. Логично, что главный инженер DEC ушел к лидеру.


    1. khim
      20.04.2016 12:12
      +1

      В 80е компьютерный мир был устроен сильно не так, как сегодня — и это нужно учитывать, когда вы о нём рассуждаете.

      Вы смотрите на историю 80х с позиций сегодняшнего дня. Где мы уже знаем, что «железо» приходит и уходит, а софт — остаётся.

      В 80е об этом ещё мало кто думал. Софт всё ещё затачивался под железо, а не наоборот. Собственно сами названия об этом говорят: hard — твёрдый, тяжёлый, soft — мягкий, податливый. Появление нового железа влекло за собой переписывание/переделку программ — а как иначе?

      Появление первого семейства компьютеров (IBM 360) должно было бы показать людям «где будущее», но это нам, из сегодняшнего дня так кажется. А в 80е… одна и та же компания могла выпускать несколько несовместимых линеек — и это не казалось диким. К пример Commodore за три года выпустила PET, C64 и Plus/4 — на совместимых процессорах, но несовместимые между собой (8250 от PET нельзя подключить ни к C64, ни к Plus/4, и 1551 для Plus/4 — тоже можно было использовать только с ним). Но если нужно — можно было спаять переходник и модифицировать программу. Делов-то.

      Теперь о размерах. У IBM было 300'000 человек, у DEC — 100'000. В Microsoft… 40. Доходы также отличались на три порядка, как и прибыли.

      До появления книги, наглядно объяснившей — что именно присходило в те года было ещё много лет, так что создавая какой-нибудь Rainbow DEC меньше всего думал о том, что он использует софт от «конкурирующей платформы». Просто пытались немножко денег заработать на причудах тех, кто в игры на домашних компьютерах играл.


    1. Duduka
      20.04.2016 12:24

      Можно ссылки?! Я как-то пропустил весь самый веселый шик. Вы видели Xenix/Unix на DECах(да Деймос я видел, не впечатлил, машины с минимумов 48КБ озу были у разратчиков, но ставить клиенту!)?! Пишут, что Bell Labs распространяли среди университетов, установили 600 штук, боюсь, что только в союзе было больше PDP-11 совместимых компьютеров, в принципе это и понятно, в сравнении с RT-11 и RSX-11, в их областях применения, юниксы малопригодны, а как учебный материал — вполне.
      То что у MS что-то было, не значит, что она что-то разрабатывала и продавала в то время. Windows 1.0 видел только на картинках, насколько помню продавать начали только с 2.0, до MS Win 3.0 было мало пригодной штукой, даже концепт бросили.

      Микрософт уже с начала 80-х покрывал весь рынок ОС
      — повеселило, так суперкомпьютеров, микрокомпьютеров… не было или они не нуждаются в OS? RTOS были у MS? Рынок надежных OS весь у MS?


      1. khim
        20.04.2016 12:56

        Вы видели Xenix/Unix на DECах
        А это — опять «с прямым углом» перепутали. Конечно Xenix был на DEC'ах. И Basic там был. Ну разрабатывали их на этих машинках! Но вот чтобы кто-то, кроме разработчиков внутри Microsoft'а использовал Xenix на PDP… не слышал.

        Windows 1.0 видел только на картинках, насколько помню продавать начали только с 2.0, до MS Win 3.0 было мало пригодной штукой, даже концепт бросили.
        Да ладно вам. Aldus Pagemaker шёл в комплекте с Windows 1.0. Ventura шла с GEM'ом…

        Обращаю внимание: не Windows шла в комплекте с Aldus'ом, а наоборот! Тогда не операционки рулили бал, а прикладные программы, не забывайте.

        Windows 1.0 видел только на картинках
        Да ладно вам. Брябрин же где-то её добыл и даже скриншотов наделал. Была она в природе, была.


  1. Nxx
    26.04.2016 17:43

    «VAX VMS, которая основана на UNIX» — не позорились бы хоть. VMS не имеет к Unix ВООБЩЕ никакого отношения. Она даже к MS-DOS исторически ближе, чем к Unix.