среда, 26 сентября 2012 г.

История NT


История NT
О счастье, книгах, операционных системах и программистах


Юрий «yurembo» Язев

В этой статье нет глубоких рассуждений об устройстве операционных систем: управление памятью, планирование выполнения на CPU, процессах и потоках, вводе-выводе, алгоритмах расположения головок жесткого диска и других сопутствующих темах, зато в ней есть сжатая информация об истории создания операционной системы Windows NT, переплетенная с размышлениями yurembo о смысле жизни.
Мне нравится читать книги об истории программных продуктов, основателях выдающихся софтверных бизнесов и, просто, о людях, оставивших след в технической истории компьютерной эры. В этот список входят такие книги, как: «Just for Fun» Линуса Торвальдса, размышления о будущем, принадлежащие Биллу Гейтсу, рассуждения о программировании в книге «Мифический человеко-месяц» Фредерика Брукса и др. До недавнего времени из книг этого жанра мне более всего нравилась книга Карэн Саусвик «Все вокруг должны разориться», как ни странно, повествующая о великом и ужасном Ларри Эллисоне (как стало известно позднее, Дэвид Катлер ни сколько не менее ужасен (но о нем – далее)).
Между тем, переворачивая томики об архитектуре операционных систем, хобби у меня такое: по ночам вдохновляться внутренним устройством операционных систем, внезапно, в конце одного из томиков, в списке литературы (очевидно, это не такая уж и бесполезная часть книги), я наткнулся на следующую ссылку: Zachary, G. Pascal (1994). Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft. Warner Books. ISBN 0-02-935671-7. Сначала, я был удивлен, как так я до сих пор не прочитал книгу об истории одной из самых выдающихся операционных систем всех времен и народов? Ответ скоро стал для меня очевиден, да песнь не об этом.
Не долгие поиски в сети дали результаты: на винт моего компа был слит pdf-файл, содержащий эту книгу. Кончено, книги надо покупать в магазинах в бумажном виде, но меня посетило сомнение о том, что в 3 часа ночи в ближайшем книжном магазине нашего городка есть книга на английском языке 18-ти лет не давности. Короче, пришлось довольствоваться тем, что есть; не такой уж и плохой вариант.
Showstopper – общеизвестный перевод: представление, спектакль; менее распространенный перевод: накладка, неисправность. Но в данном конкретном случае, во время разработки системы NT, под этим определением понимался крайне критический баг, приводивший к сбою в работе системы; таким образом, кроме него существовали баги первого и второго приоритетов, находившиеся, соответственно, после showstopper.
Содержание книги логичнее отнести к художественному, нежели к техническому литературному жанру, из-за этого лично мне было тяжеловато ее читать, однако интересность от этого нисколько не уменьшилась.
Вообще, книга очень не объемна, но ее текст построен удивительным образом! В это небольшое количество страниц, автору удалось вместить невероятный объем информации! Он вкратце рассказал о биографии Дэвида Катлера: о трудном детстве, о его юности, когда тот занимался спортом, но в связи с тяжелой травмой был вынужден оставить его (напомнило мне меня самого, после событий 2000-го года); его карьере, в частности, о промежутке жизни, когда тот работал в Digital Equipment. О потрясающих успехах компьютеров (PDP, VAX) и операционных системах (VMS) компании. О периоде завершении работы в Digital. Во многих источниках говориться о том, что в конце 80-х Катлер просто уволился из Digital и перешел в Microsoft, но на самом деле это было далеко не так. И в это время у Дэвида был тяжелый жизненный период, когда начальство Digital отвергало многие его проекты современных операционных систем. В это время Дэйв был в Сиэтле, где под началом Digital открыл компанию для разработки компьютера PRISM и операционной системы Mica для него, тем не менее, эти начинания тоже были отвергнуты начальством в 1988-ом году. Тем самым, был поставлен крест на его бизнесе. Катлер был в подавленном состоянии. С другой стороны, в нескольких километрах, в Сиэтле Билл Гейтс искал разработчика операционных систем, который мог бы руководить процессом создания переносимой – не зависящей от архитектуры ЭВМ операционной системы. Он слышал о достижениях Катлера, и, узнав, что тот находится с ним в одном городе, пригласил Дэвида на собеседование, которому, потерявшему бизнес, мало что оставалось. С этого момента и началась история NT. Кроме всего прочего, Дэйв с презрением относился к Unix, и работа в Microsoft представляла ему шанс создать операционную систему, которая будет совершеннее Unix.
Кроме биографии Дэвида Катлера, автор рассказывает о биографии Гейтса, казалось бы, что нового можно узнать об этом человеке, оказывается можно, например, из этой книги.
Вместе с тем, Захари (будем так называть автора) основную часть книги посвящает, конечно же, разработке Windows NT, в подробностях описывая решения принимаемые менеджментом группы разработки, взаимоотношениях между участниками команды и др. Много внимания уделяется отдельным участникам разработки, и это не только программисты, а так же, тестеры, билдеры, технические писатели и др. Коротко описываются их жизненные пути, что привело их в группу NT, даже их внешность! В книге есть описание внешнего вида и устройства корпорации Microsoft на начало 90-х. Конечно, с того времени много что изменилось, но даже это поражает воображение! Прямо в кампусах, где ведется разработка ПО, находятся тренажерные залы, бассейны – все для людей.

 Корпорация Microsoft, снимок Google Maps

После ухода из DEC, Катлер привел в Microsoft всю свою команду разработчиков, тем самым, как замечает автор в эпилоге, организовал компанию внутри компании и этому не помешал даже Билл Гейтс. Во многом от этого и зависел будущий успех Windows NT. Катлер окружил себя уже знакомыми специалистами, с которыми он годами работал в Digital. Впоследствии, программисты из Microsoft тоже стали вливаться в процесс разработки, стали организовываться дополнительные отделы, например, графическим отделом руководил очень своеобразный программист Whitmer, его команда называлась «Бессмертные» - Undead.
Меня всегда интересовало отношение NT и OS/2. Во многих источниках приводится довольно разная информация, вплоть до того, что NT – это продолжение OS/2. Так как, книга Showstopper написана в результате общения автора с непосредственными разработчиками системы NT во время разработки, мне кажется, что этому источнику можно доверять. В конце книги Захари привел список лиц, с которыми он провел интервью. Список громадный: фамилии находятся в двух столбцах и занимают 2 страницы. В него входят не только участники разработки, но и члены их семей, автор показал, как NT повлияла на общественную жизнь участников проекта.
 В конце 1988-го года совершенно независимо от OS/2, Дэйв Катлер начал разработку системы под кодовым названием NT, впоследствии, маркетологи окрестили ее “New Technologies”. До этого времени в подавляющем большинстве случаев операционные системы разрабатывались непосредственно на языке ассемблера, тогда как большая часть NT писалась на C. Это делалось для того, чтобы сделать систему переносимой на другие аппаратные платформы, тем не менее, в качестве целевой – был выбран процессор i386 от Intel. Однако сначала NT собирались разрабатывать  для процессора i860 – интеловская RISC архитектура. Но из-за конструкторских дефектов, разработка системы для него была прекращена, а через некоторое время разработка и тестирование параллельно велась на MIPS архитектуре, в чем Катлер видел будущее, однако не срослось, от ее поддержки впоследствии тоже отказались (после выпуска Windows NT 4.0). В начале разработки NT, она создавалась, как обособленная система, не предполагалась совместимость ни с DOS, ни с Windows, ни с OS/2, поэтому она так и называлась: NT.
После выхода и успешных продаж Windows 3.0, для Microsoft стало очевидно, что совместный с IBM проект операционной системы OS/2 не оправдал возложенных надежд, но отказываться от такого союзника, как IBM им тоже не хотелось, поэтому под разработкой OS/2 они стали скрывать разработку NT. В это же время стало понятно, что для более широкого распространения NT, необходимо добавить к ней совместимость с Windows, дополнив ее возможностью выполнения написанных для Windows приложений. Вместе с тем, OS/2 так же имела некоторый парк программ, от поддержки которых в новой системе тоже нельзя отказываться. Узнав об этом, Катлер был вне себя от злости. Он сказал, что разработка новой системы ведется уже полтора года без предположения о какой-либо совместимости со старыми системами, вследствие чего придется вносить изменения в базовый код. Кстати, именно эта обратная совместимость с Windows стала одним из бедствий; так как, речь идет еще о 16-ти битной Windows, при этом NT изначально была 32-х битной. Поэтому совместимость была сложной задачей. Забегая на пару лет вперед, уже перед самым релизом системы, обнаружив, что скорость выполнения старых 16-ти разрядных Windows программ была не удовлетворительной, релиз несколько раз откладывался для внесения изменений в NT.
Вместе с этим, основным маркетинговым шагом было переименование NT в Windows NT. Катлер сильно ругался, но понимал, такой шанс и заработок, которые он имел в Microsoft, вряд ли будут где-то еще. 
Фактически работа над OS/2 была прекращена, а прокаченные в ее процессе разработчики стали переходить в проект Windows NT. Руководство Microsoft продолжало весить лапшу на уши IBM о том, что ведется разработка OS/2. Но, однажды, на очередной встрече руководителей разработки операционных систем Microsoft и IBM, последним была представлена новая система Windows NT, имеющая схожий с Windows программный интерфейс. Те оказались в недоумении, незамедлительно доложили об этом начальству, но ничего изменить так и не удалось, разработка OS/2 продолжилась исключительно в IBM, которая так и не смогла сделать из нее коммерчески успешную операционную систему.
Ближе к концу разработки все еще стоял вопрос об используемой файловой системы; FAT со своими ограничениями явно не подходила для новой 32-х битной операционной системы Windows NT. Тогда, был поднят вопрос о разработке новой. Удивительно, одна из самых совершенных файловых систем NTFS была создана 3-мя разработчиками!
Ведущий разработчик ядра Mach Ричард Рашид в 1991 году присоединился к Microsoft, для работы над Windows NT в отделе исследований – Microsoft Research. Так как, Катлер проектировал NT, опираясь на результаты, полученные при проведении исследований для разработки Mach, Рашид сделал несколько важных рекомендаций для управления памятью, что, в итоге, позволило повысить скорость работы Windows NT.
Команды разработчиков и тестеров, как всегда, так и в проекте Windows NT были по разные стороны баррикады. Тестеры находили баги, программисты восклицали, что в их коде не может быть багов, тогда тестеры эксплуатировали баг снова и снова, разработчикам нечего было ответить, и это злило их еще сильнее. Знакомая картина? А как же!
Для билдеров был отведен вместительный офис на первом этаже второго кампуса Microsoft. Как следует из названия, билдеры готовили результирующий билд. Каждый программист работал над своей задачей – своими файлами с кодом, затем компилировал результат в объектные файлы, которые отправлял в Билд Лаб. Уже там, собрав последние версии всех необходимых объектных файлов системы, и, подготовив нужные скрипты, старший билдер запускал процедуру линкования. Эта процедура могла длиться до 18 часов! Если она выполнялась успешно, то была готова операционная система, которую, в лучшем случае, если никто из программистов не накосячил, и никто из билдеров не забыл прилинковать нужную либу, можно запустить. Обычно процесс линковки запускали на ночь, поэтому Катлер, придя с утра на работу, ждал новый билд. И приходил в ярость в случае его отсутствия. Во время дедлайнов старший билдер ночевал в лаборатории, чтобы не допустить проникновения кого-либо внутрь. Поскольку, как обычно бывало, уже после начала процедуры построения кому-либо из программистов приходила идея внести изменения в свой код, и он сломя голову бежал в Билд Лаб для внесения изменений в код. Необходимо было воспрепятствовать этому, ради готовности билда к утру.
Еще один комический случай, произошедший во время разработки Windows NT. Когда команда Undead реализовала вывод изображений – битовых образов на экран, то первая картинка, которую они вывели посредством NT была фотография обнаженной женщины. Конечно, мужской части сотрудников Microsoft это показалось забавным, но были в корпорации так же и женщины, одной из них это очень не понравилось. Она сообщила об этом главе графического отдела Витмеру, на что тот махнул рукой, тогда она доложила о случившемся самому высшему начальству; после чего битмап был заменен.
В последние перед финишем месяцы, когда команда исключительно правила баги, не внося в систему новой функциональности, в конце каждой рабочей недели на командном собрании, Дэвид Катлер дарил футболку с надписью “Zero Bugs” программистам, исправившим все баги в своем коде. Тем самым происходило поднятие командного духа, и сразу были видны те, кто еще не исправил все баги.
Отдельно стоит отметить взрывной характер Катлера. Разозлившись, он говорил своим сотрудникам: “Your ass like a grass and Im a lawn mower”. Со временем команда разрасталась, вместе с тем росла злоба Дэвида. Хех, программистами руководить всегда тяжело. В порыве ярости, он отбивал кулаком стену; о причиненных кому-либо увечьях, Захари не сообщает.

 Дэвид Катлер, Microsoft Corporation

Как отмечали сотрудники: Дэвид много работал. Между тем, его труд хорошо оплачивался: за 3 первых года работы в Microsoft Дэйв купил 2 роскошных особняка на берегу озера Вашингтона, что в близь Сиэтла. Кроме того, он умел отдыхать: на каникулы уезжал на горнолыжные склоны, участвовал в автомобильных гонках.
Примечательно Захари рассказывает о том, как Катлер праздновал свое 50-летие 13 марта 1992 года. Мое воспитание не позволяет мне описывать то, в каких нарядах заявились некоторые гости. Любопытно, Билл Гейтс не был приглашен на торжество. В качестве подарка, друзья притащили VAX - миникомпьютер 10-лет давности, размером со шкаф, на котором работала операционная система, разработанная Катлером в DECVMS. К слову, многие успешные механизмы реализованные Дэйвом и компанией в этой системе, были впоследствии внедрены в NT. От чего, впоследствии появились трения между Microsoft и DEC, но они были благополучно улажены.
Спустя почти 5 лет после начала разработки, 27 июля 1993 года была выпущена первая версия операционной системы Windows NT, которая по маркетинговым соображениям получила версию 3.1. Следующую после Windows 3.0. Первая версия Windows NT распространялась на 20 флоппи дисках. До этого были выпущены 3 беты и Release Candidate на CD. Автор описывает суетливые подготовительные этапы билда к показу на компьютерных выставках. В итоге всех подобных маркетинговых шагов, общественность с нетерпением ожидала выхода релиза системы.
Но, поскольку, для своей работы NT требовала более мощные компьютеры, чем  Windows на основе DOS, примером тому: когда стандартом на объем оперативной памяти было 4 мегабайта, Windows NT требовала 16, то, соответственно, продажи были не высокими; впереди была Windows на основе DOS.
Оглядываясь назад, можно сделать вывод, что Windows NT опередила свое время, так средне-статические компьютеры смогли поддерживать систему NT только к 2001-му году, когда вышла первая широко распространившаяся среди не корпоративных пользователей Windows на основе NT Windows XP. Хотя вышедшая годом ранее Windows 2000 тоже была тепло встречена в корпоративном сегменте, она не получила широкого распространения среди домашних пользователей.
Накануне релиза завершился тест длительностью 41 час, в его процессе не было выявлено критических багов – showstopper’ов. Катлер был доволен. Процесс разработки системы NT был тяжелым предприятием. Особенно последний год. Команда исправила приблизительно 30 тысяч багов, смогла пережить стрессы и завершить билд. Дэвид сел за компьютер и написал для всех участников команды сообщение:

NT is officially released to manufacturing!
Let me state that again—NT is released!!!!!
This has been a long hard effort. You have all done a great job.
Thank you all for your contribution, especially in the final three months where we managed
to fix upwards of 200 bugs per day without serious regressions. It took an unparalleled effort
on everyone's part to accomplish this.
We met or exceeded all ship criteria!

После выпуска первой версии Windows NT люди, участвовавшие в ее разработке вместе со счастьем почувствовали некоторое опустошение, не веря, что NT завершена. Столь длительная разработка оставила отпечаток в жизни многих ее участников. Кто-то сменил подразделение внутри корпорации, кто-то ушел из Microsoft, у кого-то появились семейные проблемы, кто-то кроме ухода из Microsoft сменил место жительства. Так, например, Витмер – руководитель графического отдела NT уехал  в Турцию, где жила его девушка. Дэвид Катлер после завершения NT тоже собирался покинуть Microsoft, не зная, в какой проект пойти теперь. Но перед этим он взял недельный отпуск и отправился в Ирландию. По возвращению в штаты, Дэйв встретился с Биллом  Гейтсом, который предложил ему руководство над вновь образованным отделом для развития Windows NT, в итоге, Катлер остался в Microsoft.


Рекомендации по приему материала: внутрь - небольшими дозами, после чего тщательно пережевать, затем запить водичкой. На самом деле, материал книги следует тщательно обдумывать и анализировать, в результате, вы увидите то, что написал автор между строк, а там написано очень и очень много!