UNIX мертв, а я еще жив
Сергей Кузнецов
На самом деле, как и в случае Б.Г., мы живы оба и, скорее всего,
он переживет меня :-( (как и рок-н-ролл явно переживет бедного
Боба). Живучая получилась операционная система. Причем, чем
дольше живет, тем больше сил набирается. Когда отдельные странные
люди говорят, что с приходом Windows NT (а до этого OS/2 и т.д.)
эпоха ОС UNIX закончилась, я тихо смеюсь про себя. В чем же
состоит жизненная сила операционной системы (а точнее, семейства
ОС) UNIX?
По-моему, наиболее важным фактором является то, что исторически
система не является принадлежащей какой-либо компании,
производящей аппаратные или программные средства. Так получилось,
что на протяжении многих лет ОС UNIX занимались
телекоммуникационная компания AT&T (для которой средства
программного обеспечения всегда не являлись основным бизнесом) и
университеты. В результате технология операционной системы и даже
ее исходные тексты стали доступными для широкой публики, включая
академические и коммерческие ее части. Как говорил классик, идея
должна овладеть массами. В данном случае она ими овладела. Но в
чем же, собственно, состоит идея?
Она проста и заключается в том, что операционная система должна
опираться на небольшое число не связанных с конкретной
аппаратурой концепций, в совокупности обеспечивающих мобильную
среду разработки и выполнения приложений. Внимательно посмотрим
на эти основные концепции. В их число входят интуитивно ясные
понятия пользователя, терминала, процесса и файла. Каждое из этих
понятий в среде ОС UNIX означает именно то, что прежде всего
приходит в голову. Пользователь - зарегистрированное в среде UNIX
лицо, которому после надлежащей проверки разрешается работа в
системе. Терминал - основное орудие пользователя для работы с
системой в интерактивном режиме. Процесс - акт выполнения заранее
подготовленной программы в отдельном адресном пространстве.
Наконец, файл - универсальная абстракция ОС UNIX, означающая, в
частности, именованную область внешней памяти со структурой -
последовательностью байт, а иногда служащая для направления
ввода и/или вывода пользовательского процесса с/на физические
устройства ввода/вывода или для связи двух или более процессов.
Операционная система UNIX не идеальна. Можно найти примеры
десятков других ОС, которые сделаны более продуманными,
обеспечивают более мощные средства программирования и т.д. (В
качестве моих любимых примеров можно указать предшествовавшую
UNIX ОС Multics или хотя бы VAX VMS.) Однако можно совершенно
определенно сказать, что эти операционные системы существенно
более сложны в понятийном отношении.
Кроме того, благодаря правильному подбору базовых концепций и
отчасти счастливому случаю операционную систему UNIX удалось
сделать мобильной. Это означает то, что с использованием исходных
текстов операционной системы и компилятора языка Си,
генерирующего коды целевой аппаратной платформы, можно достаточно
легко и быстро получить работающий вариант операционной системы.
Скорее всего, именно это качество прежде всего принесло успех
UNIX.
Многие люди были просто счастливы, обнаружив, что при
использовании ОС UNIX они имеют более или менее единообразную
операционную среду на разных аппаратных платформах. Вспомните как
мы мучались раньше при переходе от БЭСМ-6 к ЕС ЭВМ, а потом к СМ
ЭВМ и т.д. Операционные системы этих машин были настолько
различны, что иногда приходилось тратить несколько месяцев для
вхождения в новую ОС (я помню, как были потрачены около 3-х
месяцев времени квалифицированных специалистов в области
операционных систем - ваш покорный слуга в их числе - на чтение
документации, освоение и генерацию ОС RSX-11 компании DEC).
Именно ОС UNIX дала нам новую жизнь. Примитивная операционная
система, ограниченные возможности, но обеспечение стабильности.
Мы (разработчики операционных систем) плевались вначале, ругались
с Российскими фанами UNIX и, конечно же, были правы. Но мы не
понимали в то время, что иногда приходится жертвовать фигуру в
пользу качества. Первые программы в среде ОС UNIX поражали своей
тривиальностью. Но как было интересно обнаружить, что эти
тривиальные программы действительно работают после повторной
компиляции совсем на других компьютерах.
Конечно, расцвет ОС UNIX в России стал возможен только после
окончательного краха Российской вычислительной техники. Это не та
ОС, которая снисходительна к отдельным недостаткам вычислительной
техники, в особенности к весьма уязвимым периферийным устройствам
(в свое время мне пришлось попробовать установить ОС Демос на ЭВМ
"Электроника-82, и должен заметить, что это принесло массу
головной боли и никакого удовольствия). После перехода на
использование качественной западной вычислительной техники мы
больше никогда не имели проблем с ОС UNIX. Более того, с каждым
годом использования этой ОС количество проблем уменьшается.
Операционная система UNIX дала жизнь концепции Открытых Систем.
Этот подход обеспечивает возможности разработки мобильных (легко
переносимых с одной аппаратной платформы на другую) приложений,
масштабируемости (возможности почти линейного наращивания
эффективности приложений при возрастании аппаратных
возможностей), интероперабельности (возможности совместного
использования независимо разработанных приложений). Хотя
проектировщики и разработчики ОС UNIX не ставили перед собой эту
задачу, счастливая звезда UNIX дала возможность этой ОС стать
практической основой Открытых Систем.
Но все ли так хорошо в жизни ОС UNIX? Конечно же, нет. Мое личное
мнение по этому поводу состоит в том, что UNIX, достигая в
последнее время возможностей наиболее развитых операционных
систем, в то же время приобретает их отрицательные качества -
перегруженность, чрезмерную сложность и т.д. В частности, в
последние годы в большинстве коммерческих версий ОС UNIX в
последние годы появился механизм легковесных процессов (threads).
С одной стороны, понятно, что такое решение было наиболее простым
для потенциального обеспечения использования возможностей
симметричных мультипроцессорных вычислительных систем (SMP).
Но с другой стороны, параллельное программирование с
использованием общей памяти возвращает нас к давно прошедшей
эпохе параллельного программирования с использованием общей
памяти и явных примитивов синхронизации. Для опытных
программистов очевидно, что этот стиль принесет много головной
боли и мучений и вряд ли обеспечит много выгод.
Посмотрим, что произойдет с UNIX в будущем... Мне было больно
слышать, как отрекался от своего детища Деннис Ритчи. "Это совсем
не та система, которую мы делали",- говорил он. С другой стороны,
мы видим сегодня замечательные примеры свободно распространяемых
вариантов ОС UNIX (FreeBSD, Linux), наблюдаем интересные опыты
более удачной структуризации системы (Mach, Chorus). Мне кажется,
что мы еще поживем...