OpenVMS — Вікіпедія

OpenVMS
OpenVMS V8.4-2L1
Розробник DEC, Compaq, HP, VSI
Родина ОС Сімейство ОС DEC
Вихідна модель Пропрієтарне ПЗ
Останній випуск V9.2 / 14 липня 2022; 20 місяців тому (2022-07-14)
Тип ядра Монолітне з модулями
Ліцензія Закрита
[1]

OpenVMS (англ. Open Virtual Memory System або просто VMS) — пропрієтарна серверна операційна система, розроблена в другій половині 1970-х років компанією Digital Equipment Corporation для серії комп'ютерів VAX. Пізніше портована на платформи DEC Alpha, Intel Itanium i x86-64. Застосовується для побудови відмовостійких систем високої готовності та mission-critical рішень.

З 2014 року система розробляється компанією VMS Software Inc., яка, зокрема, здійснила її портування на архітектуру x86.

Історія[ред. | ред. код]

OpenVMS від Compaq: командний рядок, текстовий редактор, довідка та відкриті папки

У квітні 1975 року DEC оголосила про початок проєкт по розробці апаратної платформи під назвою «Star», яка дозволила б розширити функціональність наявного PDP-11 для роботи з 32-бітовими адресами віртуальної пам'яті. Супутній проєкт по розробці програмного забезпечення, під назвою «Starlet», було розпочато в червні 1975 року. В рамках проєкту планувалося розробити для сімейства Star абсолютно нову ОС, засновану на RSX-11, операційну систему для PDP-11. Ці два проєкти з самого початку розроблялася у тісній співпраці один з одним. У проєкті Starlet під керівництвом Роджера Гоурда працювали інженери з розробки системних програм Девід Катлер, Дік Гастведт і технічний керівник проєкту Пітер Ліпман, кожен з яких відповідав за розробку окремих частин операційної системи. Результатом робіт по проєктах Star і Starlet стали комп'ютер VAX 11/780 і операційна система VAX-11/VMS. Ім'я Starlet збереглося в VMS в імені однієї з основних системних бібліотек, STARLET.OLB.

В 1980 році, з виходом версії 2.0, ім'я системи було змінено на VAX/VMS (водночас комп'ютер VAX-11 перейменували в просто VAX). З появою серії комп'ютерів MicroVAX у другій половині 1980-х років, була випущена MicroVMS, специфічно націлена на цю платформу, яка містила значно менший обсяг оперативної пам'яті та розмір жорсткого диска, ніж повноцінний VAX. Наприклад, MicroVAX 2000 мав жорсткий диск RD32 ємністю 40 Мб і всього 4 Мб пам'яті, а його процесор міг лише програмно емулювати деякі інструкції VAX з рухомою комою. До виходу VAX/VMS 5.0 поширювався комплект MicroVMS для версій VAX/VMS 4.0 … 4.7 (на магнітній стрічці типу TK50 і флоппі-дисках типу RX50).

У 1991 році система була перейменована в OpenVMS для позначення підтримки нею таких промислових стандартів як POSIX і сумісність з Unix, після чого почався процес портування системи на 64-розрядний RISC-процесор DEC Alpha. Вперше ім'ям OpenVMS була названа версія 5.5-2.

Платформи[ред. | ред. код]

DEC Alpha[ред. | ред. код]

Портування на платформу Alpha зажадало створення окремих гілок початкового коду для 32 і 64-розрядної архітектури. У 1992 році побачила світ перша версія OpenVMS для систем «Alpha AXP», названа OpenVMS/AXP V1.0. Рішення використовувати нумерацію починається з 1.x для ознайомчих версій OpenVMS/AXP стало причиною плутанини для деяких клієнтів і надалі вона перестала використовуватися.

1994-го року з виходом OpenVMS 6.1 було досягнуто рівність у можливостях і номерах версій між варіантами для VAX і Alpha. Нумерація наступних версій однакова для обох платформ.

Intel Itanium[ред. | ред. код]

У 2001 році компанія Compaq, незадовго до злиття з HP, оголосила про початок робіт з портування системи на 64-розрядну платформу Intel Itanium, що з'явилася приблизно у той же час. Портування здійснювалося на основі початкового коду і бібліотек версії OpenVMS для Alpha. Використання за основу коду OpenVMS для Alpha пояснювалося тим, що він коректно компілювався для 64-розрядного процесора, і, отже, був набагато більш підготовленим до портування, ніж початковий код оригінальної OpenVMS для VAX.

На відміну від портування з VAX на Alpha, коли у код версії 5.4 для VAX було внесено безліч змін і результат сильно відрізнявся від оригіналу, версії для Alpha та Itanium засновані на спільній кодовій базі й використовують однаковий інструментарій.

Версії:

  • OpenVMS/I64 V8.0 — перша ознайомча версія, випущена в червні 2003 року.
  • OpenVMS V8.2 — перша промислова версія для Itanium, випущена в січні 2005 року. Також доступна для платформи Alpha.
  • OpenVMS/I64 V8.2-1, додана підтримка систем HP Integrity Superdome та Cell-based-систем, випущена у вересні 2005 року. Доступна тільки для Itanium-платформ.
  • OpenVMS V8.3, випущена у вересні 2006 року як для Alpha, так і для Itanium.
  • OpenVMS V8.3-1h1, випущена в жовтні 2007 року тільки для Itanium. Додана підтримка чипсет в серії sx2000.
  • OpenVMS V8.4, випущена в червні 2010 року як для Alpha, так і для Itanium.

x86[ред. | ред. код]

Наприкінці 1980-х DEC в рамках проєкту Emerald велися роботи з портування OpenVMS на архітектуру x86, але проєкт був закритий з фінансових міркувань. Незгідний з рішенням менеджменту керівник розробки Девід Катлер (David Cutler) перейшов в Microsoft, де зайнявся розробкою Windows NT. Існує думка, що в основі Windows NT лежать концепції та системні рішення, засновані на досягненнях OpenVMS.

Аматорський проєкт FreeVMS мав на меті створення клону OpenVMS для платформи x86 під ліцензією GPL. Станом на 2019 рік проєкт неактивний.

Функціональність[ред. | ред. код]

OpenVMS є багатокористувацькою, багатозадачною ОС з підтримкою віртуальної пам'яті. Вона призначена для роботи в режимі реального часу, розподілу часу, пакетної обробки та обробки транзакцій. Завдяки можливості створення кластерів з декількох комп'ютерів (до 96 в одному кластері) OpenVMS дозволяє створювати високомасштабні системи. OpenVMS допускає використання віконного інтерфейсу DECWindows, сумісного з X Window System.

Системні функції[ред. | ред. код]

Багатозадачність в OpenVMS спирається на потоки (kernel threads). Потік складається з індивідуального адресного простору, регістрів, що утворюють його контекст, і коду — виконуваного образу. Контекст ідентифікує потік і описує його поточний стан, а виконуваний образ складається з системних і призначених для користувача програм (відкомпільованих і зібраних). Кожен процес може містити до 16 потоків (kernel threads), які є об'єктом керування планувальника. Кількість призначених для користувача (user level threads) потоків виконання обмежена лише ресурсами конкретної системи. Максимальне число підтримуваних паралельних процесів у OpenVMS — 16 384 на кожен вузол. Процесорний час розподіляється між потоками згідно з пріоритетами, яких налічується 64. Пріоритети від 0 до 15 призначаються процесам з поділом часу (time-sharing) або некритичним до часу виконання, діапазон від 16 до 63 призначений для процесів реального часу. Процеси реального часу отримують квант (quantum) процесорного часу відразу, як тільки він потрібен (згідно з пріоритетом та статусом процесу), а звичайні процеси отримують обчислювальні ресурси лише тоді, коли ними не користуються процеси реального часу. У OpenVMS процесу можна призначити пріоритет вище, ніж у процесів ядра системи. Є також механізм (pixscan), який запобігає блокування[що?] управління системою високопріоритетними процесами, тобто, наприклад, процес з пріоритетом в межах 4 гарантовано отримає квант процесорного часу, хоча й зі значною затримкою.

У OpenVMS використовуються файлові системи Files-11 (ODS-1, ODS-2, ODS-5), ISO 9660, FAT, NFS, SMB і Spiralog.

З мови командного рядка і файловій системі OpenVMS є спадкоємицею RSX-11 і RT-11.

Мережеві функції[ред. | ред. код]

У OpenVMS існують різні реалізації мережевих стеків загального призначення:

  • DECnet, для роботи в мережах, що використовують власні мережні протоколи розроблені Digital; частинами DECNet є DEC LAT (Local Area Transport), DEC MOP (Maintenance Operation Protocol). В даний під назвою DECNet існують DECNet IV (Phase IV) і DECNet OSI (раніше носив назви DECNet Plus, DECNet Phase V).
  • DECnet OSI, реалізація підтримки архітектури мереж OSI (Open Standard Interconnection) від Digital.
  • X.25, для побудови мереж X.25.
  • DEC SS7, реалізація від Digital стека протоколів CCSS7 (Common Channel Signaling System 7, Спільноканальна сигналізація 7).
  • TCPIP, реалізація стека протоколів TCP/IP від Digital (раніше мала назву UCX — Digital Ultrix Connection).
  • TCPware-TCP, реалізація стека протоколів TCP/IP від компанії Software Process LLC.
  • MultiNet, альтернативна реалізація стека протоколів TCP/IP від компанії Process Software LLC.
  • CMU-IP, вільно розповсюджувана версія стека протоколів TCP/IP, розроблена в Університеті Карнегі — Меллона.

Унікальні, передові функції[ред. | ред. код]

У OpenVMS вперше[джерело?] стали комерційно доступні наступні технології:

  • Вбудована підтримка мереж (спочатку DECnet IV і пізніше TCP/IP) і DECnet V (стек протоколів OSI).
  • Симетрична, асиметрична і NUMA-багатопроцесорність.
  • Розподілена файлова система DFS.
  • RMS (Record Management Service), що реалізує доступ до файлів за методами ISAM (Indexed-Sequential Access Method) для реалізації програм, що вимагають функціональність бази даних.
  • Підтримка різних мов програмування і реалізація інтерфейсу, який дозволяє зв'язувати об'єктні модулі, отримані шляхом компіляції програм на різних мовах високого рівня).
  • Розширювана мова командної оболонки DCL.
  • Розподіл апаратних засобів процесорів для підтримки багатопотоковості.
  • Сертифікація системи за рівнем C2 (аж до B1) Orange Book.
  • Реалізація розподіленого менеджера блокувань (DLM, Distributed Lock Manager).
  • Кластери (cluster) — об'єднання декількох систем у єдиний комплекс, що розділяє ресурси (shared resources), з розподілом навантаження (load balancing). Варто зауважити, що дослідницька компанія Gartner Group Inc. привласнила кластеру VMS звання «Король кластерів» (King of Clusters).

Безпека[ред. | ред. код]

Засоби захисту інформації, такі як розмежування прав користувачів у багатокористувацьких системах, закладені в OpenVMS з моменту створення. У версіях для VAX передбачено чотири режими роботи процесора, що забезпечують різні рівні доступу (після реєстрації користувача в системі процесор переходить у відповідний режим для виконання його завдань). Не володіючи належними повноваженнями, фізично неможливо запустити, наприклад, програму-зломщик.[джерело?]

OpenVMS має розвинені засоби контролю за паролями:

  • перевірка стандартних характеристик (термін дії пароля, довжина, раніше використовуваний пароль);
  • генерація випадкових паролів;
  • перевірка на наявність в паролі загальновживаних слів;
  • використання другого пароля;
  • можливість завдання специфічних вимог до вмісту пароля.

Контролюється доступ до всіх системних об'єктів: томів, пристроїв, файлів, черг і т. д. Кожному класу об'єктів можна за замовчуванням призначити рівень захисту при його створенні. Файл отримує рівень захисту або від своєї попередньої версії, або від автора процесу, або за допомогою спеціального ACL (Access control list). За бажанням файл може бути видалений повністю (erase-on-delete) без можливості його відновлення. Також OpenVMS забезпечує аудит (тобто, реєстрацію подій від монітора безпеки) реєстрації або виходу з системи, спроби підбору пароля (Intrusion Detection), будь-яких типів операцій із заданими об'єктами (або класами об'єктів), будь-яких змін параметрів системи, будь-яких змін, що стосуються політики захисту інформації, оперативне інформування системного адміністратора, операторського штату.

Всі версії OpenVMS відповідають вимогам класу C2 «Критеріїв визначення безпеки комп'ютерних систем», «Orange Book» та сертифіковані Міністерством оборони США. Спеціальна версія системи, SEVMS (SecureVMS), має підвищений рівень захисту і сертифікується по класу B1.

На міжнародному фестивалі хакерів DEFCON 9 (Лас-Вегас, 2001 рік) світове хакерська спільнота визнала OpenVMS невразливою для злому[1]. Уразливість в finger (переповнення при обробці .plan, finger там запускається з правами SYSTEM, що дозволяє на VAX довільно змінити обліковий запис і отримати всі права) і помилка при перевищенні довжини рядка команди (511 символів, працює на Alpha і дозволяє запускати довільний код у процесах з привілеями SYSTEM, FIS_IO, OPER тощо) були оперативно виправлені і є проблемами прямолінійного перенесення системних UNIX-утиліт без належного перероблення під стандарти безпеки OpenVMS.

Ліцензії та поширення[ред. | ред. код]

Пропрієтарна, поширювалася головним чином з серверами. У 1997 році відкрито програма підтримки ентузіастів, які використовують OpenVMS. За цією програмою надаються коди ліцензій для некомерційного використання ентузіастами.

HP, купила Compaq (яка раніше купила Digital) — пропонує програму для освітніх установ.

Галузі застосування[ред. | ред. код]

Застосовується для побудови відмовостійких систем високої готовності та mission-critical застосувань. Під управлінням OpenVMS (на платформі VAX) працює лінія випуску процесорів на фабриці Intel в Ізраїлі.

Серед російських замовників OpenVMS переважають оборонні структури та банки, телекомунікаційні компанії, підприємства безперервного циклу (АЕС). В банках кластери під управлінням OpenVMS використовуються як сервери баз даних (як правило, Oracle). В одному з регіональних відділень Ощадбанку РФ під OpenVMS працює додаток, що забезпечує всю роботу банка.[2][3][4] До 2005 року OpenVMS широко застосовувалася для роботи з міжнародною системою міжбанківських транзакцій SWIFT — SWIFT ST400. Це було пов'язано як з прагненням найбільш надійно здійснювати транзакції, так і з тим, що SWIFT спочатку розроблялася під OpenVMS.

Під управлінням OpenVMS працює 14 лінія паризького метрополітена[5] та управління залізничним рухом у Індії[6].

У школі № 1 міста Воронеж система з AlphaServer під управлінням OpenVMS і 30 терміналів використовується c 1997 року для навчання школярів інформатики та програмування.[7]

У першому в Росії оператора стільникового зв'язку компанії «Дельта Телеком» кластер під управлінням OpenVMS, що включає DEC Alpha і HP Integrity, є «серцем» для бізнес-процесів.[8]

Примітки[ред. | ред. код]

  1. DEFCON 16 — Speakers for DEFCON 16. Архів оригіналу за 3 вересня 2014. Процитовано 26 липня 2014.
  2. .html АБС Софія ВМС[недоступне посилання з червня 2019]
  3. Вісник Волго-Вятського Банку РБ РФ (PDF). Архів оригіналу (PDF) за 24 серпня 2006. Процитовано 26 липня 2014.
  4. Постачання HP AlphaServer/OpenVMS/OracleRDB у Волго-Вятський Банк СБ РФ. Архів оригіналу за 27 вересня 2007. Процитовано 26 липня 2014.
  5. Ada in the Paris Metro System. Архів оригіналу за 14 лютого 2007. Процитовано 26 липня 2014.
  6. Архівована копія (PDF). Архів оригіналу (PDF) за 3 березня 2016. Процитовано 26 липня 2014.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  7. ШКОЛА N1 — Воронеж. Архів оригіналу за 4 серпня 2017. Процитовано 26 липня 2014.
  8. StarLet Team Site, Довідково-інформаційний сайт для OpenVMS-професіоналів. Архів оригіналу за 4 березня 2016. Процитовано 18 травня 2019.

Література[ред. | ред. код]

  • David Miller. Getting Started with OpenVMS System Management. — Digital Press, 2003. — 193 p. — ISBN 1-55558-281-8
  • Lawrence L., Jr. Baldwin, Steve Hoffman, David Miller. OpenVMS System Management Guide. — ISBN 1-55558-243-5

Посилання[ред. | ред. код]