Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

VME ( Virtual Machine Environment ) - это операционная система для мэйнфреймов, разработанная британской компанией International Computers Limited (ICL, теперь входит в группу Fujitsu ). Первоначально разработанная в 1970-х годах (как VME / B , позже VME 2900 ) для управления мэйнфреймами ICL, а затем новыми 2900 Series , операционная система теперь известна как OpenVME, включающая подсистему Unix , и работает на мэйнфреймах ICL Series 39 и Trimetra [1]. , а также стандартные серверы x64 . [2]

Истоки [ править ]

Программа разработки системы New Range началась в результате слияния компаний International Computers and Tabulators (ICT) и English Electric Computers в 1968 году. Одним из фундаментальных решений было включение новой операционной системы. В рамках ICL был проведен ряд различных технико-экономических обоснований и проектных исследований, из которых наиболее заметны три:

  • VME / B (первоначально System B), предназначенная для крупных процессоров, таких как 2970/2980, и разработанная в Кидсгроуве , Стаффордшире и Вест-Гортоне , Манчестер.
  • VME / K (первоначально System T), предназначенная для систем среднего уровня, таких как 2960, и разработанная в Bracknell после того, как первоначальная конструкция этих небольших процессоров, System D, была отброшена. VME / K был разработан и представлен на рынке, но в конечном итоге был заменен на VME / B
  • VME / T, который на самом деле так и не был запущен, но заслуживает упоминания, поскольку был задуман для поддержки «отказоустойчивости» и предшествовал усилиям успешной американской стартап-компании Tandem Computers в этой области.

Главным архитектором VME / B был Брайан Варбойз , впоследствии ставший профессором программной инженерии в Манчестерском университете . В его дизайне можно увидеть ряд влияний, например, Multics и более раннюю операционную систему ICL George 3 ; однако он был по сути разработан с нуля.

Сравнения [ править ]

VME рассматривалась как основная конкуренция мэйнфрейму IBM System / 370 как коммерческая операционная система и приняла кодировку символов EBCDIC . [3]

В создании середины 1970-х годов, без каких - либо ограничений , чтобы быть совместимым с более ранними операционными системами, VME во многом более современным в своей архитектуре , чем современных Unix производных (Unix была разработана в 1960 - е годы) или Microsoft Windows (которая началась как операционная система для однопользовательских компьютеров, и до сих пор выдает то происхождение).

Номенклатура [ править ]

Когда New Range был впервые запущен в октябре 1974 года, его операционная система называлась «Система B». К тому времени, когда он был доставлен впервые, он стал «VME / B». [4]

VME / K был разработан независимо (по словам Кэмпбелл-Келли, «по прихоти Эда Мака»), и позже был доставлен с меньшими мэйнфреймами, такими как 2960.

После финансового кризиса 1980 года в ICL было введено новое руководство (Кристофер Лейдлоу в качестве председателя и Робб Уилмот в качестве управляющего директора). Первым решением нового руководства было отказаться от VME / K. [4] [5] Таким образом, в июле 1981 года был запущен "VME2900": хотя он был представлен клиентской базе как слияние VME / B и VME / K, на самом деле это была база VME / B с некоторыми выбранными функциями от VME. / К привита. Это дало возможность отказаться от некоторых устаревших функций, которые остались доступными для клиентов, которые в них нуждались, в виде опции «BONVME».

Суффикс «2900» был исключен в версии системы 213 (SV213), когда ICL запустила серию 39 в 1985 году в качестве преемника исходной серии 2900; а префикс «Открыть» был добавлен после SV294. VME стала способной размещать приложения, написанные изначально для Unix, через подсистему на основе UNIX System V Release 3 , называемую VME / X, адаптированную для работы под VME и с использованием кодировки символов ASCII . [6] [7] [8]

В 2007 году Fujitsu анонсировала версию VME, работающую как размещенную подсистему, названную superNova , в Microsoft Windows , или SUSE или Red Hat Enterprise Linux на оборудовании x86-64 . [2]

В 2012 году группа пользователей VME, AXiS, объявила, что через почти 40 лет она будет распущена из-за сокращения пользовательской базы. [9]

Архитектура [ править ]

VME структурирован как набор уровней, каждый из которых имеет доступ к ресурсам на разных уровнях абстракции. Виртуальные ресурсы, предоставляемые одним уровнем, создаются из виртуальных ресурсов, предлагаемых уровнем ниже. Доступ к ресурсам каждого уровня контролируется с помощью набора уровней доступа: чтобы процесс мог использовать ресурс на определенном уровне доступа, он должен иметь ключ доступа, предлагающий доступ к этому уровню. Концепция аналогична «кольцам защиты» в Multics . Архитектура допускает 16 уровней доступа, из которых 6 внешних зарезервированы для кода уровня пользователя.

Ортогонально уровням доступа операционная система делает ресурсы доступными для приложений в форме виртуальной машины. Виртуальная машина может запускать несколько процессов. На практике виртуальная машина VME ближе к концепции процесса в других операционных системах, тогда как процесс VME больше похож на поток. Для выделения ресурсов виртуальной машине используется модель стека: когда стек выталкивается, все ресурсы, выделенные на этом уровне стека, освобождаются. Таким образом, вызовы из приложения в операционную систему выполняются вызовом, который сохраняет тот же стек процессов, но с изменением уровня защиты; итоговая эффективность системных вызовов - одна из характеристик, делающих архитектуру конкурентоспособной.

Связь между виртуальными машинами осуществляется посредством событий (названных каналов связи) и областей общей памяти. Аппаратная архитектура также предоставляет семафорные инструкции INCT (приращение и проверка) и TDEC (проверка и декремент).

Файлы и другие постоянные объекты записываются в репозиторий, называемый Каталогом. В отличие от других операционных систем, иерархия именования файлов не зависит от расположения файла на конкретной ленте или томе диска. В те дни, когда было больше необходимости в автономном хранилище, это позволяло легко отслеживать файлы независимо от их местоположения и перемещать файлы между местоположениями без их переименования. Помимо файлов, Каталог отслеживает пользователей и группы пользователей, тома, устройства, сетевые подключения и многие другие ресурсы. Метаданные для файлов могут храниться в объекте, называемом описанием файла. Каталог был, вероятно, первым примером того, что позже назовут базой данных сущностей-отношений.

Прерывания обрабатываются путем создания нового кадра стека в стеке для соответствующего процесса, обработки прерывания с использованием этой новой среды и последующего извлечения стека для возврата к прерванному процессу.

Исключения времени выполнения, называемые непредвиденными обстоятельствами , фиксируются обработчиком ошибок объектной программы (OPEH), который может создавать отчет (эквивалентный трассировке стека ) либо интерактивно, либо записывать в журнал.

OMF [ править ]

Скомпилированный объектный код поддерживается в формате, называемом OMF (формат объектного модуля). В отличие от многих других операционных систем, этот формат также используется загрузчиком. Доступны различные компиляторы, а также утилиты, в частности, Collector, который связывает код в нескольких модулях OMF в один модуль для более эффективной загрузки во время выполнения, и Module Amender, который позволяет исправлять инструкции в OMF. модуль для исправления ошибок с использованием синтаксиса ассемблера.

SCL [ править ]

Командный язык для VME известен как SCL (язык управления системой).

Это гораздо более узнаваемый типизированный язык программирования высокого уровня, чем языки управления заданиями или оболочки, присутствующие в большинстве других операционных систем: его можно сравнить с языками сценариев, такими как JavaScript , хотя его поверхностный синтаксис унаследован от Algol 68 .

SCL предназначен для одновременного интерактивного использования построчно с консоли или из командного файла , а также для создания исполняемых сценариев или программ (когда язык компилируется в формат объектного модуля таким же образом, как и любое другое программирование VME. язык). Объявление процедуры в SCL также действует как определение простой формы или шаблона, позволяющего вызывать процедуру из интерактивного терминала, с полями, проверенными в соответствии с типами данных параметров базовой процедуры или с использованием значений параметров процедуры по умолчанию.

Встроенный словарь команд использует согласованное соглашение об именах с императивным глаголом, за которым следует существительное: например, DELETE_FILE или DISPLAY_LIBRARY_DETAILS. Команда может быть написана полностью или в сокращенной форме, которая объединяет стандартные сокращения для глагола и существительного: например, XF (X для УДАЛИТЬ, F для ФАЙЛА) или DLBD (D для DISPLAY, LB для LIBRARY, D для DETAILS) .

SCL имеет блочную структуру, при этом блоки начала / конца выполняют двойную и дополняющую роль определения лексической области объявления переменных и определения точек, в которых ресурсы, полученные от операционной системы, должны быть высвобождены. Переменные на языке (которые доступны из приложений в виде переменных среды ) могут иметь ряд простых типов, таких как строки, суперстроки (последовательности строк), логические и целые числа, а также используются для хранения ссылок на системные ресурсы. такие как файлы и сетевые подключения.

Можно «дизассемблировать» программу SCL из OMF обратно в исходный код SCL с помощью команды READ_SCL (или RSCL). Однако результат не всегда идеален и часто будет содержать ошибки, которые остановят повторную компиляцию без вмешательства пользователя.

Простой пример кода можно увидеть на сайте 99 бутылок пива . [10]

Более реалистичный пример, в котором SCL используется для компиляции программы, написанной на S3 , показан ниже. Этот пример взят из архива реализаций Kermit Колумбийского университета . [11]

НАЧИНАТЬ В ЛЮБОЕ ВРЕМЯ РЕЗУЛЬТАТ GT 0 + _ ТОГДА + _ SEND_RESULT_MESSAGE (RES = RESULT, ACT = "ВЫЙТИ ()") FI  INT KMT_SRC, KMT_OMF, KMT_REL  ASSIGN_LIBRARY (NAM = KERMIT.SOURCE, LNA = KMT_SRC) ASSIGN_LIBRARY (NAM = KERMIT.OMF, LNA = KMT_OMF) ASSIGN_LIBRARY (NAM = KERMIT.REL, LNA = KMT_REL)  НАЧИНАТЬ УДАЛИТЬ_ФАЙЛ (НАМ = * KMT_OMF.KMT_DATA_MODULE (101)) УДАЛИТЬ_ФАЙЛ (НАМ = * KMT_OMF.KMT_DH_MODULE (101)) УДАЛИТЬ_ФАЙЛ (НАМ = * KMT_OMF.KMT_EH_MODULE (101)) УДАЛИТЬ_ФАЙЛ (НАМ = * KMT_OMF.KMT_FH_MODULE (101)) УДАЛИТЬ_ФАЙЛ (НАМ = * KMT_OMF.KMT_HELP_MTM (101)) УДАЛИТЬ_ФАЙЛ (НАМ = * KMT_OMF.KMT_MAIN_MODULE (101)) УДАЛИТЬ_ФАЙЛ (НАМ = * KMT_OMF.KMT_PH_MODULE (101)) УДАЛИТЬ_ФАЙЛ (НАМ = * KMT_OMF.KMT_PP_MODULE (101)) УДАЛИТЬ_ФАЙЛ (НАМ = * KMT_OMF.KMT_SP_MODULE (101)) УДАЛИТЬ_ФАЙЛ (НАМ = * KMT_OMF.KMT_SP_MTM (101)) УДАЛИТЬ_ФАЙЛ (НАМ = * KMT_OMF.KMT_UI_MODULE (101))  УДАЛИТЬ_ФАЙЛ (НАМ = * KMT_REL.KERMIT (101)) УДАЛИТЬ_ФАЙЛ (НАМ = * KMT_REL.KERMIT_MODULE (101)) КОНЕЦ  S3_COMPILE_DEFAULTS (LIS = OBJECT & XREF, DIS = ОШИБКИ)  S3_COMPILE (INP = * KMT_SRC.KMT_DATA_MODULE (101), OMF = * KMT_OMF.KMT_DATA_MODULE (101))  S3_COMPILE (INP = * KMT_SRC.KMT_DH_MODULE (101), OMF = * KMT_OMF.KMT_DH_MODULE (101))  S3_COMPILE (INP = * KMT_SRC.KMT_EH_MODULE (101), OMF = * KMT_OMF.KMT_EH_MODULE (101))  S3_COMPILE (INP = * KMT_SRC.KMT_FH_MODULE (101), OMF = * KMT_OMF.KMT_FH_MODULE (101))  NEW_MESSAGE_TEXT_MODULE (CON = * KMT_SRC.KMT_HELP_MTM (101), OMF = * KMT_OMF.KMT_HELP_MTM (101))  S3_COMPILE (INP = * KMT_SRC.KMT_MAIN_MODULE (101), OMF = * KMT_OMF.KMT_MAIN_MODULE (101))  S3_COMPILE (INP = * KMT_SRC.KMT_PH_MODULE (101), OMF = * KMT_OMF.KMT_PH_MODULE (101))  S3_COMPILE (INP = * KMT_SRC.KMT_PP_MODULE (101), OMF = * KMT_OMF.KMT_PP_MODULE (101))  S3_COMPILE (INP = * KMT_SRC.KMT_SP_MODULE (101), OMF = * KMT_OMF.KMT_SP_MODULE (101))  NEW_MESSAGE_TEXT_MODULE (CON = * KMT_SRC.KMT_SP_MTM (101), OMF = * KMT_OMF.KMT_SP_MTM (101))  S3_COMPILE (INP = * KMT_SRC.KMT_UI_MODULE (101), OMF = * KMT_OMF.KMT_UI_MODULE (101))  СОБИРАТЬ ()---- ВХОД (* KMT_OMF.KMT_DATA_MODULE (101) & * KMT_OMF.KMT_DH_MODULE (101) & * KMT_OMF.KMT_EH_MODULE (101) & * KMT_OMF.KMT_FH_MODULE (101) & * KMT_OMF.KMT_HELP_MTM (101) & * KMT_OMF.KMT_MAIN_MODULE (101) & * KMT_OMF.KMT_PH_MODULE (101) & * KMT_OMF.KMT_PP_MODULE (101) & * KMT_OMF.KMT_SP_MODULE (101) & * KMT_OMF.KMT_SP_MTM (101) и * KMT_OMF.KMT_UI_MODULE (101)) NEWMODULE (* KMT_REL.KERMIT_MODULE (101)) ПОДДЕРЖАТЬ СОХРАНИТЬ (KERMIT_THE_FROG) ПЕРЕЧЕНЬ МОДУЛЕЙ ВЫПОЛНЯТЬ++++ COMPILE_SCL (INP = * KMT_SRC.KERMIT (101), OUT = * KMT_REL.KERMIT (101), COD = NOTIFWARNINGS, OPT = FIL) КОНЕЦ

Команды, проиллюстрированные в этом фрагменте, включают WHENEVER (объявляет политику обработки ошибок), ASSIGN_LIBRARY (связывает локальное имя для каталога файлов), DELETE_FILE (делает постоянный файл временным, а затем он удаляется в конце блока), S3_COMPILE (компилирует программа, написанная на S3: эта команда нарушает обычное соглашение между глаголом и существительным), NEW_MESSAGE_TEXT_MODULE (создает модуль, содержащий параметризованные сообщения об ошибках, подходящие для локализации) и COMPILE_SCL, который компилирует программу SCL в объектный код.

Команда COLLECT объединяет различные модули объектного кода в один модуль и управляется собственным локальным командным файлом, который встроен в SCL между разделителями «----» и «++++». Подкоманды INPUT и NEWMODULE определяют имена модулей ввода и вывода; SUPPRESS и RETAIN определяют внешнюю видимость именованных процедур в собранном модуле; и LISTMODULE запрашивает отчет с описанием модуля вывода.

Обратите внимание, что "." используется для разделения частей иерархического имени файла. Звездочка в начале обозначает локальное имя библиотеки, привязанное с помощью команды ASSIGN_LIBRARY. Число в скобках после имени файла - это номер поколения. Операционная система связывает номер поколения с каждым файлом, и запросы файла получают последнее поколение, если не указано иное. Создание нового файла по умолчанию приведет к созданию следующего поколения и оставит без изменений предыдущее поколение; эта программа, однако, сознательно выбрала создание поколения 101, чтобы идентифицировать общедоступный выпуск.

Варианты повышенной безопасности [ править ]

В результате активного участия ICL в предоставлении компьютерных услуг государственному сектору Великобритании, в частности тех, к которым предъявляются особые требования безопасности, такие как OPCON CCIS , компания первой вышла на рынок безопасных систем .

VME составляла основу деятельности ICL на арене безопасных систем. У нее было то преимущество, что как последняя крупномасштабная операционная система, когда-либо разработанная и созданная с нуля, ее базовая архитектура включала в себя многие примитивы, необходимые для разработки защищенной системы, в частности, регистры контроля доступа с аппаратной поддержкой (ACR) для ограничения к привилегиям, которые могут быть получены любым процессом (включая пользователей).

Это привело к тому, что Центральное агентство по вычислениям и телекоммуникациям ( CCTA ) правительства Великобритании в середине 1980-х годов финансировало проект Spaceman для ICL Defense Technology Center (DTC) с целью разработки варианта VME с повышенной безопасностью. ICL запустила его как пару дополнительных продуктов, при этом коммерческий выпуск назывался High Security Option (HSO), а выпуск для государственного сектора, включающий технологии государственного шифрования (GFE), назывался Government Security Option (GSO).

HSO и GSO были формально протестированы в соответствии со схемой оценки CESG UK (Security), одной из предшественниц ITSEC и Common Criteria , и таким образом стали первой основной операционной системой, прошедшей формальную сертификацию.

Серия 39 [ править ]

В линейке Series 39 представлена ​​узловая архитектура, новая реализация распределенной разделяемой памяти, которую можно рассматривать как гибрид многопроцессорной системы и кластерной архитектуры. Каждая машина состоит из ряда узлов, и каждый узел содержит свой собственный процессор кода заказа (ЦП) и основную память. Виртуальные машины обычно располагаются (в любое время) на одном узле, но могут работать на любом узле и перемещаться с одного узла на другой. Диски и другие периферийные устройства используются узлами совместно. Узлы соединяются с помощью высокоскоростной оптической шины, которая используется для обеспечения приложений виртуальной общей памятью. Сегменты памяти, помеченные как общие (общедоступные или глобальные), реплицируются на каждый узел, а обновления транслируются по межузловой сети. Процессы, использующие сегменты неразделенной памяти (узловые или локальные), выполняются полностью изолированно от других узлов и процессов.

Процесс разработки [ править ]

Первоначально VME был написан почти полностью на S3 , специально разработанном языке системного программирования, основанном на Algol 68R (однако VME / K был написан в основном на языке ассемблера SFL). Хотя используется язык высокого уровня , операционная система не предназначена для независимости от базовой аппаратной архитектуры: напротив, программная и аппаратная архитектура тесно интегрированы.

С начала 1990 - х годов, некоторые совершенно новые подсистемы VME были написаны частично или полностью на языке программирования Си .

С самого начала VME разрабатывался с помощью системы репозиториев программной инженерии, известной как CADES , первоначально разработанной и управляемой Дэвидом Пирсоном (ученым-компьютерщиком) и созданной для этой цели с использованием базовой базы данных IDMS . CADES - это не просто система контроля версий для модулей кода: она управляет всеми аспектами жизненного цикла программного обеспечения от сбора требований, методологии проектирования и спецификации до обслуживания на месте. КАДЕСиспользовался при разработке модуля VME для хранения отдельных определений структур данных (режимов), констант (литералов), процедурных интерфейсов и основных алгоритмов. Могут существовать несколько версий («жизней») каждого из этих компонентов. Алгоритмы были написаны на языке разработки систем (SDL), который затем был преобразован в исходный код S3 [12] препроцессором. Могут быть созданы несколько версий одних и тех же модулей.

Инструменты разработки приложений [ править ]

Инструменты разработки приложений, предлагаемые с VME, делятся на две категории:

  • языки программирования третьего поколения
  • набор инструментов QuickBuild четвертого поколения .

Набор инструментов в VME необычайно однороден, и большинство клиентов используют один и тот же базовый набор языков и инструментов. В результате инструменты также очень хорошо интегрированы. Сторонние инструменты произвели относительно небольшое впечатление.

В течение многих лет подавляющее большинство пользователей VME писали приложения на COBOL , обычно используя базу данных IDMS и монитор обработки транзакций TPMS . Другие языки программирования включали Fortran , Pascal , ALGOL 68RS , Coral 66 и RPG2 , но они обслуживали интересы меньшинств. Позже, в середине 1980-х, компиляторы для C стали доступны как внутри подсистемы Unix, так и за ее пределами, в основном для обеспечения переноса программного обеспечения, такого как системы реляционных баз данных. Интересно, что PL / I Компилятор подмножества был написан EEC для помощи в переносе программ с IBM на оборудование ICL.

Компиляторы, разработанные в ICL, имеют общую архитектуру, а в некоторых случаях используют общие компоненты, такие как генераторы кода. Многие компиляторы использовали модуль ALICE [внутренняя общая среда языка ассемблера] и создали раннюю форму предварительно скомпилированного кода (P-Code), названную ROSE, благодаря чему скомпилированные библиотеки формата объектных модулей (OMF) загружались на любую машину в этом диапазоне. .

Языки системного программирования: S3 и SFL [ править ]

Основным языком, используемым для разработки как самой операционной системы VME, так и другого системного программного обеспечения, такого как компиляторы и мониторы обработки транзакций, является S3 . Это язык высокого уровня, во многом основанный на Алголе 68 , но с типами данных, функциями и операторами низкого уровня, тесно согласованными с архитектурой серии 2900.

Ассемблере SFL ( S ystem F соборование л anguage) также доступен. Это было использовано для разработки VME / K, разработчики которой не были уверены, что язык высокого уровня может обеспечить адекватную производительность, а также для системы баз данных IDMS из-за того, что она возникла как сторонний продукт. Первоначально SFL назывался M acro A ssembler P rogramming L anguag E(MAPLE), но поскольку архитектура 2900 позиционировалась как состоящая из машин высокого уровня, название было изменено по запросу ICL Marketing. Он был разработан как часть инструментария для System D, который впоследствии был отменен. Родственные семейства ассемблеров для других архитектур (CALM-xx, работающие под VME, PALM-xx, разработанные на Pascal и работающие на различных хостах) были разработаны для внутреннего использования.

Ни S3, ни SFL никогда не рекламировались как коммерческие инструменты разработки приложений для конечных пользователей, поскольку они обычно не поставлялись как стандартная часть операционной системы и не продавались в явном виде как самостоятельные продукты. Тем не менее, как SFL, так и S3 были доступны как опции для пользовательских организаций и третьих лиц, у которых была особая потребность в них.

QuickBuild [ править ]

Среда разработки приложений QuickBuild на VME оказалась очень успешной, несмотря на то, что приложения в значительной степени привязаны к среде VME. В основе этой среды лежит система словарей данных (DDS, также называемая OpenDDS), ранняя и очень успешная попытка создать всеобъемлющий репозиторий, поддерживающий все другие инструменты, с полной поддержкой жизненного цикла разработки. Помимо схем баз данных и описаний файлов и записей, словарь отслеживает такие объекты, как отчеты и запросы, дизайн экранов и код 4GL; он также поддерживает множество моделей на уровне сбора требований, таких как модели сущностей и отношений и модели процессов.

QuickBuild 4GL поставляется в двух формах:

  • ApplicationMaster для создания онлайн-приложений TP
  • ReportMaster для пакетной отчетности.

Оба являются декларативными языками высокого уровня, использующими структурное программирование Джексона в качестве парадигмы проектирования. ApplicationMaster необычен в своем подходе к разработке приложений, поскольку он фокусируется на пользовательском сеансе, как если бы он выполнялся в едином диалоговом процессе, полностью скрывая сложность поддержания состояния при взаимодействии с пользователем. Поскольку 4GL и другие инструменты, такие как конструктор экранов, работают только со словарем DDS, который также содержит схемы базы данных, существует значительное повторное использование метаданных, которое редко достигается с другими 4GL.

Ссылки [ править ]

  1. ^ «Сегодня, завтра, ВМЭ» (PDF) . Fujitsu . Архивировано из оригинального (PDF) 22 февраля 2012 года.
  2. ^ a b Введение в архитектуру superNOVA (PDF) (Отчет). Fujitsu. Январь 2007. Архивировано из оригинального (PDF) 28 сентября 2007 года.
  3. ^ Барри Дж. Грэм (2002). «Стоимость Fujitsu OpenVME по сравнению со стоимостью мэйнфрейма IBM» (PDF) . Услуги Fujitsu . Проверено 28 января 2014 .
  4. ^ a b Кембелл-Келли, Мартин (1989). ICL: история бизнеса и техники . Кларендон Пресс. ISBN 0-19-853918-5.
  5. ^ Рыцарь, Майкл (2008). "Маяк 1963-7: система, опережающая свое время?" . Компьютерное воскресение (43).
  6. Дэйв Бейли (powerpoint) (30 ноября 2000 г.). «Постоянное развитие OpenVME» . ICL . Проверено 28 января 2014 .
  7. ^ "Open VME ICL оказывается подмножеством Unix под VME; приложения идут" . Обзор компьютерного бизнеса . 10 февраля 1992 . Проверено 28 января 2014 .
  8. ^ Коутс, П. (1993). «VME-X: открытие VME» (PDF) . Технический журнал ICL . ICL. ISSN 0142-1557 . Проверено 7 ноября 2015 года .  
  9. ^ Cloutt, Гарольд (2012). «Группа пользователей ICL будет распущена после почти 40 лет верного служения сообществу VME» . AXiS . Проверено 11 июля 2018 .
  10. ^ Пример кода SCL на сайте 99 бутылок пива
  11. ^ "Архив исходного кода программного обеспечения Kermit" . Проект Кермита Колумбийского университета. 22 августа 2011 . Проверено 1 марта 2013 года .
  12. ^ Хуан Ф Рамиль. «Продолжение оценки усилий для развития на примере конкретного случая» (PDF) .

Источники [ править ]

  • Архитектура OpenVME . Ник Холт. Публикация ICL 55480001. Без даты (вероятно, около 1995 г.)

Внешние ссылки [ править ]

  • VME - В будущее , Fujitsu UK.