OpenVMS — не просто одна из операционных систем общего назначения. Не особенно распространенная, она отличается поразительным долголетием. Появившись в семидесятые годы, OpenVMS пережила множество тогдашних ОС и сыграла важную роль в появлении Windows NT, на которой основаны все современные версии Windows. Жива она и сейчас.
Немного истории
Шестидесятые — семидесятые годы прошлого века. Корпорации Microsoft еще не существует, Intel только-только делает первые шаги на рынке микропроцессоров, но эра мини-ЭВМ уже началась — с появления компьютера DEC PDP-8. Нас он интересует лишь как предшественник более поздней серии, PDP-11.
Расцвет PDP-11 пришелся на середину семидесятых. Одной из множества ОС, разработанных для компьютеров этой серии, была RSX-11 — многопользовательская и многозадачная система, спроектированная с учетом разделения прав доступа, в том числе на уровне файловой системы. Однако у RSX было два огромных недостатка: во-первых, количество оперативной памяти, доступной одному приложению, было ограничено (от 64 до 256 Кб в зависимости от версии системы и модификации машины), во-вторых, не было виртуальной памяти. Тем не менее система использовала возможности PDP-11 по максимуму.

В какой-то момент возможности железа стали подходить к пределу, и инженеры DEC решили, что пора создавать новую платформу с большей разрядностью. Так родились два проекта: 36-разрядный Unicorn, основанный на PDP-10, и Star, который также называли «расширенным PDP-11». Линейка PDP-11 была популярнее, чем PDP-10, к тому же Star разрабатывался гораздо быстрее Unicorn, так что последний проект был закрыт. Выжившая разработка превратилась в так называемую VAX Blue Book — спецификацию новой 32-разрядной архитектуры. Интересно, что VAX, которую мы знаем сейчас, представляет собой лишь малую часть из того, что было задумано тогда; по экономическим соображениям остальное реализовано не было.

Параллельно создавалась и операционная система для новой архитектуры — изначально она носила наименование Starlet, но потом ее назвали VMS, Virtual Memory System (VAX, к слову, расшифровывается как Virtual Address eXtension). На тот момент она теоретически поддерживала до 64 Мб ОЗУ. Одной из целей разработки VMS была совместимость с RSX-11M, причем, как и в случае с RSX-11M, в разработке принимал участие не кто иной, как Дейв Катлер, — в команде VMS он был ведущим разработчиком, как и позже и в команде NT.

Первая публичная версия VMS вышла в 1978 году. Ядро было написано с нуля, а приложения попросту портированы с RSX-11M и запускались в режиме совместимости с PDP-11. С самого начала в VMS была поддержка DECnet — собственного сетевого протокола DEC, в настоящее время практически нигде не используемого.
Шло время, на VAX-код портировали все больше утилит с PDP-11. В 1984 году одновременно с MicroVAX появился и MicroVMS. Старший же брат, VMS достиг версии 4.0 и обзавелся поддержкой кластеров, длинных имен файлов и ACL. Также появилась рантайм-библиотека языка C. В версии 4.4 (1986 год) добавили поддержку Volume Shadowing — некий аналог программного RAID 1 (сам термин RAID появился годом позже).
В том же 1986 году в недрах DEC созрел план создать свой процессор архитектуры RISC. Изначально проект, названный PRISM, предназначался для запуска ULTRIX — варианта BSD, созданного в DEC. Однако с появлением архитектуры MIPS проект заморозили, но группе, отвечавшей за CMOS-вариант Prism, было разрешено довести дело до конца. Итогом стал 45-мегагерцевый процессор, что по тем временам было фантастикой. Несмотря на то что Prism не вышел за стены DEC, он нашел свое перерождение в процессоре Alpha. Фактически Alpha представлял собой тот же Prism, переработанный с учетом поддержки VMS. У данной архитектуры было несколько основных целей:
- Во-первых, она должна быть долгоживущей. Отсюда вытекает и ее масштабируемость.
- Во-вторых, должна предоставлять максимум производительности как коммерческим, так и техническим приложениям.
- В-третьих, должна быть возможность запускать не только VMS, но и иные ОС.
В 1991 году вышла версия VMS для Alpha. Архитектура была 64-разрядной, что позволяло разработчикам быть более-менее уверенными в ее актуальности в последующие двадцать лет. Как показало время, на нее можно было портировать ОС — спустя два года вышла первая версия Windows NT, одной из поддерживаемых архитектур которого и была Alpha.
VMS тоже развивался. Двумя годами ранее, в 1989-м, он обзавелся GUI — DECwindows. Еще на год раньше появилась поддержка SMP. А начиная с версии 5.5 (1991, тогда же, когда возникла платформа Alpha) перед названием появился префикс Open, что ознаменовало поддержку POSIX и некоторых других открытых стандартов.
В 1998 году фирма DEC была поглощена компанией Compaq. Примерно тогда же в OpenVMS появилась новая файловая система, ODS-5, которая поддерживала еще более длинные имена файлов и спецсимволы в них, и технология Galaxy (нечто наподобие виртуализации). В 2002-м, после очередного поглощения (Compaq перешел к HP), OpenVMS был портирован на платформу IA-64.
Архитектура
OpenVMS, в отличие от большинства современных ОС, использует не два, а четыре кольца защиты. Два из них — привычные kernel mode и user mode. Два других — это режимы Executive и Supervisor. Первый нужен для исполнения подсистемы RMS (что-то типа VFS в Linux), отдельных подсистем защиты и загрузчика образов. Из этого режима есть доступ для чтения ко всем данным ядра. Однако набор привилегированных инструкций ограничен, так что вероятность уронить систему из этого режима низка. Режим Supervisor — еще менее привилегированный. В нем работает интерпретатор DCL, и только из него разрешено выполнять вызов загрузчика образов.

Файловая система ведет свое начало от Files-11. Одна из интересных особенностей этого семейства ФС — версии файлов. При открытии файла на запись создается новая версия, и работа происходит именно с ней.
Отдельно стоит рассказать и о безопасности. В OpenVMS вся модель безопасности построена вокруг привилегий, полностью аналогичных по назначению Capabilities в Linux (точнее, POSIX 1e). Всего их около сорока, и некоторая их часть критична — так, установка (или получение) привилегии READALL позволит коду читать все файлы, невзирая на разрешения, а привилегия SYSPRV позволит добавлять, удалять и модифицировать записи в файле SYSUAF.DAT — базе данных пользователей.
OpenVMS считается одной из самых защищенных систем общего назначения. Но причина, возможно, в ее относительно малой распространенности. Потенциально система подвержена тем же атакам, что и *nix-подобные ОС, возможно, даже и в большей степени — из-за большего количества унаследованного кода.
Стоит также упомянуть и о (не)дружелюбности к пользователю. Как и в nix-системах, существует два вида пользовательского интерфейса — командная строка и GUI. Синтаксис командной строки очень похож на синтаксис DOS, скорее всего из-за того, что последний как раз пошел от PDP. Для пользователей nix-систем он будет очень непривычен, но у него есть и свои преимущества — к примеру, язык ближе к английскому, нежели язык оболочек *nix. Кроме того, отдельные команды можно сокращать.
В качестве GUI сейчас используется CDE/Motif (в старые времена была своя проприетарная графическая оболочка), и от него явственно исходит дух восьмидесятых. По современным меркам интерфейс выглядит ужасно, однако свою задачу он выполняет. В этой среде нет ни поддержки ООП, ни новомодных графических эффектов, зато благодаря использованию X11 ее можно использовать по сети, правда не без шаманства.

Заключение. Будущее OpenVMS
Об OpenVMS можно написать очень много: внимания заслуживает и кластеризация (одна из ключевых отличительных черт системы), и поддержка аж трех семейств сетевых протоколов (TCP/IP Services for OpenVMS, Multinet и TCPware), но еще интереснее поговорить про будущее.
При иных обстоятельствах, возможно, современный рынок ОС был бы поделен не между двумя системами, а между тремя. Этому, однако, помешали три вещи — лицензионная и ценовая политика DEC, слишком тесная привязка к не самой распространенной архитектуре и нежелание DEC признавать протоколы TCP/IP. В итоге сейчас OpenVMS используется только крупными корпорациями, да и то, скорее всего, из-за того, что перевод бизнес-процессов на иную платформу выйдет дороже.
В июне 2013 года HP объявила о постепенном прекращении поддержки OpenVMS. На этом история системы могла бы и закончиться, если бы не компания Nemonix Enginering, которая в свое время отпочковалась от VMS Software и зарабатывает на поддержке. У Nemonix грандиозные планы — к 2017 году в числе прочего обещают порт на x64. Посмотрим, что из этого выйдет.
INFO
Предоставляются и некоммерческие лицензии на OpenVMS — для запуска как на реальном железе, так и на эмуляторах. Их необходимо продлевать каждый год.