Современной альтернативой применению мэйнфреймов IBM и ЕС ЭВМ может служить бесплатное программное обеспечение с открытым кодом, обеспечивающее эмуляцию мэйнфреймов разных поколений — от S/360 до S/390, а также zSeries — на различных компьютерах с разными операционными системами и в первую очередь на х86-совместимых системах (в том числе на персональных компьютерах) под управлением ОС Linux или Windows.

При этом не требуется никакой дополнительной специальной аппаратуры, а в эмулируемой среде возможна работа различных операционных систем, в том числе VM/370 и MVS 3.8, также бесплатно доступных в Internet. Это обеспечивает, в частности, работу унаследованных приложений — зачастую с большей производительностью, чем на прежних мэйнфреймах.

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

Краткий курс истории ЭВМ

Наша страна обладает уникальным наследием — культурным, научным и иным, — которое, как водится, она не использует, а разрушает. И все хорошее у нас исхитряются сделать одновременно плохим. Так и эпоха «мэйнфреймов» ЕС ЭВМ имела как серьезные положительные, так и отрицательные стороны. Можно сказать, что она началась в 70-е годы, закончилась в начале 90-х годов теперь уже прошлого века. Хотя ЕС ЭВМ и устаревшие, приобретаемые как «бывшие в употреблении» мэйнфреймы, на удивление активно использовались в России и в середине 90-х, и даже позднее.

Несколько лет назад в телепередаче, посвященной одному из центров противовоздушной обороны нашей страны, автор увидел на экране внешние устройства номенклатуры ЕС ЭВМ. Они к тому времени не выпускались уже много лет! Очевидно, они имели многократный ЗИП, т.е. набор механических компонентов, микросхем и ТЭЗов (для тех, кто помоложе, расшифруем — «типовой элемент замены», а проще говоря, плата с электроникой). Понятно и то, почему это имело место: нежелание использовать ни единого транзистора иностранного производства плюс отягощенность унаследованными приложениями.

В первую очередь такая техника сохранялась в «почтовых ящиках», военных организациях, а также на некоторых крупных предприятиях. В последнем случае часто (но не всегда) ЕС ЭВМ заменялись «бывшими в употреблении» мэйнфреймами IBM, на которые часто ставили устаревшие операционные системы для ЕС ЭВМ. Зато унаследованные приложения надежно работали.

Надо отметить, подобные унаследованные приложения встречаются не только в нашей стране. К примеру, в прошлом году на электронном списке рассылки, посвященном применению ОС MVS, работающей под эмулятором на ПК, автору встретилось письмо сотрудника одной западной коммерческой компании, собиравшейся упразднять свой мэйнфрейм. У них, оказывается, имеется важное унаследованное приложение, разработанное давным-давно, написанное еще на Фортране IV. И теперь они вопрошали, как бы им перенести все это хозяйство на ПК…

В начале 90-х годов IBM упустила шанс хоть частично поддержать тающие традиции применения ЕС ЭВМ (они могли бы эффективно применяться в рамках международной компьютерной сети European Academic and Research Network, европейском аналоге BITNET) путем их замены своей «бывшей в употреблении» техникой. В результате культура вычислительных центров коллективного пользования в условиях тотального перехода к ПК была в нашей стране почти полностью утеряна, а разработчики программного обеспечения ушли в другие сферы или уехали за рубеж.

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

Между тем уже много лет развивается альтернативный подход — эмуляция мэйнфреймов IBM. Первоначально для этого требовалось приобретение специальной аппаратуры — плат, которые могли бы устанавливаться в IBM RS/6000 или даже в ПК. Коммерческие решения подобного рода предлагает, например, российская компания «Гетнет».

Однако появилась разработка (и при том не коммерческий продукт, а инструментарий категории Open Source), позволяющая эмулировать мэйнфреймы IBM в среде ОС Linux на обычном ПК без всякой дополнительной аппаратуры. Следовательно, ее можно использовать на х86-совместимых серверах (в том числе многопроцессорных), которые имеют вполне удовлетворительные для очень многих приложений ресурсы по сравнению с более старыми мэйнфреймами IBM; про ЕС ЭВМ и говорить нечего. Этот замечательный инструментарий называется Hercules.

Косвенно повышению интереса к Hercules могут способствовать появившиеся в Сети слухи о том, что в перспективе серверы zSeries, возможно, будут строиться на процессорах Power6, в архитектуру которых будет осуществляться двоичная трансляция кодов z/Architecture. В компьютерной истории (в том числе в истории мэйнфреймов разных фирм) есть примеры того, что происходит на следующих этапах.

Сила «Геркулеса»

Эмуляторами современный компьютерный мир не удивить. Однако Hercules отличается высоким качеством и широтой охвата различных архитектур многих поколений мэйнфреймов IBM.

Первая версия Hercules была создана в 1999 году. Ее главным разработчиком был Роджер Боулер, один из системных инженеров IBM OS/390. Как и во многих других проектах категории Open Source, над Hercules трудилось большое число разработчиков. Затем проект возглавил Джей Мэйнард. Среди других разработчиков необходимо отметить в первую очередь Яна Джейгера, которому принадлежат, в частности, расширения Hercules, рассчитанные на 64-разрядную z/Architecture.

Последняя версия, Hercules 3.03.1, появилась в декабре 2005 года (она доступна, например, на сайте www.hercules-390.org). Hercules инсталлируется на различные аппаратно-программные платформы, в том числе на Sun SPARC, Alpha 21x64, Intel/HP IA-64, PowerPC (на G5 с MacOC X).

Но большинство инсталляций осуществляется все-таки на платформе х86. Эмулятор может работать и в Windows (98/NT/2000/XP, для эксплуатации более старых версий Hercules требуется CygWin) и в MacOS X (версия от 10.3 и старше); изначально «родной» средой обитания Hercules является Linux. Имеются и графические надстройки, например, HercGUI 1.9.5 для Windows (www.softdevlabs.com/Hercules/hercgui-index.html).

При этом требования Hercules как к операционной системе, так и к ресурсам компьютера очень скромны. К примеру, более старая версия Hercules, поставляемая с дистрибутивом ОС Turnkey MVS, может работать с ядрами от Linux 2.2 и выше, так что подойдут даже совсем древние дистрибутивы типа RedHat 6.0. Собственно, необходима поддержка pthreads, а также gcc. В требованиях к последней версии Hercules указано ядро Linux 2.4 и gcc версии от 2.95 и старше.

Hercules не требует много оперативной памяти и эффективно задействует много процессоров сервера благодаря использованию pthreads [1]. Многонитевая структура позволяет осуществлять совмещение операций ввода/вывода и процессорной активности (теоретически Hercules следует считать приложением, активно использующим процессор). Многонитевая структура позволяет также естественным образом эмулировать многопроцессорные мэйнфреймы IBM, для чего можно задействовать Pentium 4 с возможностью HyperThreading, или современные двухъядерные х86-совместимые микропроцессоры, или вообще сервер SMP-архитектуры (последнее, естественно, дает в общем случае наибольшую производительность).

На www.hercules-390.org приводятся полезные для работы с Hercules оценки. Так, при использовании Intel Celeron/300 МГц достигается производительность процессора мэйнфрейма на уровне 1-2 MIPS. (Величина MIPS, Millions Instructions Per Second, для мэйнфреймов IBM имеет вполне конкретный смысл: она относится к вполне определенной смеси команд; ранее это была одна из так называемых «смесей Гибсона».) Напомним, что IBM 3033 (и аналогичная ЕС 1066, одна из наиболее мощных советских ЕС ЭВМ) обладали производительностью как раз этого порядка, поэтому, отвлекаясь от ввода/вывода, можно ожидать и сопоставимые с IBM 3033 времена реакции в операционных системах, работающих поверх Hercules.

В случае применения Hercules для работы с более мощной средой OS/390 рекомендуется использовать персональный компьютер помощнее с процессором частотой не менее 1 ГГц. Так, система с двумя процессорами Pentium III способна эмулировать процессоры, давая производительность свыше 5 MIPS. Минимальная рекомендация для z/OS и Linux/390 — Pentium 4 с тактовой частотой от 2 ГГц, на котором достигается около 20 MIPS. Минимальная производительность процессора zSeries сегодня — около 80 MIPS, старшие же однопроцессорные модели имеют порядка 500 MIPS. Необходимо отметить также, что с точки зрения производительности для моделирования 64-разрядной архитектуры zArchitecture все-таки лучше использовать 64-разрядные, а не 32-разрядные микропроцессоры, особенно, если требуется применять свыше 2-3 Гбайт оперативной памяти. Впрочем, х86-64 в реализациях AMD и Intel и так скоро вытеснит IA-32/x86.

Приведенные оценки интересны для понимания уровня производительности процессоров мэйнфреймов. Можно еще добавить, что без эмуляции процессоры х86, естественно, работают еще быстрее. Так, тесты Linpack (n=100) давали для ЕС-1066 около 1 MFLOPS. Этот результат, полученный автором полтора десятилетия назад, был представлен в официальной таблице тестов Джека Донгарры; i486DX/33 имел чуть более высокую производительность.

Конечно, применение мэйнфреймов для интенсивных расчетов с плавающей запятой стало бессмысленным еще раньше; реальные задачи для мэйнфреймов связаны с вводом/выводом [2]. На упомянутых выше ПК с использованием Hercules достигается производительность ввода/вывода на уровне 50 excp в секунду (excp — это команда «выполнить канальную программу»); при использовании аппаратной поддержки RAID — свыше 500 excp в секунду. Представляется, что Hercules можно использовать, если нет очень высоких требований к производительности ввода/вывода и надежности.

Используемый Hercules механизм эмуляции процессоров достаточно очевиден: команды S/370, ESA/390 или z/Architecture (в зависимости от выбранного режима работы) эмулируются командами x86. В эмуляции устройств ввода/вывода задействованы устройства ПК. Так, жесткие диски (например, IBM 3390) моделируются файлами на дисках ПК.

Локальные терминалы IBM3270 (равно как и наши ЕС7920) моделируются на мониторе ПК с помощью эмуляторов (клиентских программ) tn3270. Таких программ довольно много, они встречаются и в составе известных дистрибутивов Linux. В качестве клиентов tn3270 могут применяться, например, x3270 (www.geocities.com/SiliconValley/Peaks/7814), Vista tn3270 для Windows (www.tombrennansoftware.com) и с3270 (работающий в текстовом режиме эмулятор, автор которого — Пол Маттес; версия 3.2 поставляется с дистрибутивом Turnkey MVS). Для с3270 в Linux нужно установить также пакет ncurses. Кроме tn3270 для работы с Hercules могут понадобиться средства netcat.

Накопители на магнитных лентах мейнфреймов можно использовать «напрямую». Если бобинные 9-дорожечные накопители или кассетные IBM3480 подсоединяются через SCSI-интефейс; Hercules трактует их как обычные ленты — IBM3420 или 3480 соответственно. Hercules умеет работать и с другими типами лент (например, с DAT 4) — через тот же SCSI-интерфейс. Кроме того, можно применять «виртуальные» ленты — файлы.

Устройства печати, ввода и вывода на перфокарты, если они кому вдруг понадобятся, моделируются в виде файлов. Для работы с адаптерами «канал-канал» и телекоммуникационным оборудованием применяются сокеты TCP. Последние могут также применяться и для моделирования устройства ввода с перфокарт (иногда такое виртуальное устройство оказывается удобным для работы); при этом обычно используется netcat. Это простенькая утилита, которая берет поток данных из stdin и передает его в заданный порт заданного хоста. Типовой формат вызова в простейшем случае выглядит так:

nc -w1 -vv имя_хоста номер_порта,

где в ключе -w задается таймаут соединения (1 секунда), -vv указывает на максимальный уровень подробности информации при работе nc. Обычно на вход nc подается файл, содержащий пакетные задания на языке JCL.

Альтернативой netcat может служить hercsub, написанный Малкомом Биетти сценарий на языке perl, предназначенный для решения тех же задач.

Еще немного деталей

Hercules можно скачать как в форме tar-архива с исходным текстом, так и в виде rpm-пакетов, как двоичных (i686), так и «исходных» (src). Загрузочные модули Hercules по умолчанию инсталлируются в каталоге /usr/bin, динамически подключаемые библиотеки — в /usr/lib/hercules, а конфигурационные параметры — в /etc/hercules. В /usr/share/hercules имеется компактная документация.

При запуске Hercules можно указать имя конфигурационного файла (по умолчанию hercules.cnf) и имя файла для протокола работы:

hercules [-f имя_файла] [>имя_файла_протокола].

Если в качестве клиента tn3270 применяется c3270, то далее для загрузки ОС или независимых от ОС (автономных) загружаемых программ следует выполнить команду

c3270 имя_хоста:номер_порта.

В качестве номера порта в Hercules обычно используется «естественный» 3270. При этом соединение будет осуществляться с первым устройством типа 3270 из числа указанных в конфигурационном файле. Если в нем имеются простые консоли типа IBM1052 или 3215, то к ним можно подсоединиться обычным telnet-клиентом, например:

telnet имя_хоста 1052.

После запуска Hercules и подсоединения терминала/консоли появляется управляющая панель, в нижней (информационной) строке которой представлено, в частности, содержание текущего слова состояния процессора, а в предпоследней строке имеется поле для ввода команд Hercules. Данная панель представляет собой, если угодно, некий аналог инженерной консоли мэйнфреймов IBM или дисплея, подсоединенного к сервисному процессору ЕС ЭВМ.

С помощью команд Hercules можно отобразить состояние регистров, прочитать/изменить содержимое оперативной памяти, просмотреть список устройств из конфигурации «виртуального» мэйнфрейма, динамически добавить или удалить устройство и т.п. И, главное, выполнить команду начальной загрузки ipl xxxx, где, как обычно, xxxx задает шестнадцатеричный адрес внешнего устройства, включающий поля номера процессора (первая шестнадцатеричная цифра), номера канала (вторая цифра) и номера устройства (напомним, IPL — это Initial Program Load, т.е. то, для чего сейчас чаще используется термин boot).

Одним словом, с этого момента вы чувствуете себя почти как дома (простите, как на работе — дома мэйнфреймы раньше не водились). Если же захочется посмотреть, что при этом происходит в ОС Linux, вы увидите ряд процессов, в том числе запущенные httpd-демоны.

В конфигурационном файле Hercules задаются, в частности, серийный номер и модель процессора (из команды STIDP); размер оперативной памяти; число процессоров мэйнфрейма и режим работы (S/370, ESA/390 или ESAME — для z/Architecture); номер порта, который будет прослушивать httpd; номер порта, к которому подсоединяются консольные клиенты (CNSLPORT); а также список всех внешних устройств, включающий адреса и типы устройств вместе с дополнительной информацией о способе их эмулирования. Общий формат этой части конфигурационного файла выглядит следующим образом:

адреса_устройств тип_устройства аргументы.

Здесь адреса_устройств могут задавать отдельный адрес (например, 001F) или диапазон адресов (например, 0140-0145). Тип_устройства -0 это обычный тип внешнего устройства IBM (3380 для IBM3380, 3420 для ленточного накопителя IBM3420 и т.д.). А вот поле «аргументы» зависит от типа устройства и вида его эмуляции.

Для SCSI-лент в поле аргументов может задаваться соответствующее Linux-устройство из каталога /dev, и ввод/вывод будет осуществляться блоками переменной длины в EBCDIC-кодировке. Возможно использование виртуальных лент — файлов на CD-ROM в так называемом TDF-формате. Наконец, возможна работа с файлами — виртуальными магнитными лентами в формате AWSTAPE. В этом формате удобно производить обмен данными между мэйнфреймами и ПК, и о нем мы поговорим позже. Имеется также аналог AWSTAPE, предполагающий возможность сжатия информации; этот формат именуется HET. Для того чтобы Hercules мог распознать данный формат, имя файла должно иметь расширение .het.

Для локальных консолей и устройств 3270 поле аргументов отсутствует; для работы с ними применяется клиент tn3270 или telnet соответственно. Для устройства ввода с перфокарт и вывода на перфокарты, как и для большинства устройств, в этом поле можно указать просто имя соответствующего файла. Кроме того, здесь можно указать тип кодировки (EBCDIC или ASCII). Для виртуального устройства ввода с перфокарт вместо файла можно указать признак использования TCP-сокетов (ключевое слово sockdev), имя хоста и номер порта (например, 3505) для соединения (например, с использованием netcat).

Для принтеров, как и для жестких дисков, здесь может указываться просто имя файла. Большинство типов жестких дисков номенклатуры IBM составляют устройства с архитектурой «счетчик-ключ-данные» (CKD), в противоположность основной на сегодня архитектуры с фиксированным размером блоков (FBA). Файлы, моделирующие CKD-устройства, содержат 512-байтный заголовок, за которым следуют образы дорожек фиксированной длины. Образ каждой дорожки состоит из целого числа 512-байтных блоков, так что последний блок в общем случае частично не используется.

Такие файлы называются ckd-файлами, и для них возможна работа в режиме со сжатием (используется zlib или bzip2). В последнем случае употребляется термин «cckd-файлы». Это не только экономит дисковое пространство (оно сокращается до 20-30% исходного объема), но и может ускорять работу, поскольку уменьшается объем операций ввода/вывода. Кроме того, возможно применение концепции так называемых «теневых» (shadow) файлов, предложенной Малкомом Биетти в 2000 году.

В этом случае CKD-устройство моделируется несколькими файлами, один из которых называют базовым, а другие (их может быть от 0 до 8) — теневыми. В любой момент времени все файлы, кроме одного, открыты только для чтения, и лишь один, называемый текущим, открыт для чтения и записи. Базовый файл может быть ckd- или ссkd-типа. Теневой файл содержит все изменения, происшедшие с CKD-устройством, с момента его создания и до создания следующего теневого файла. Фактически речь идет о файлах, содержащих «моментальные снимки» СKD-устройства в момент создания очередного теневого файла. Подобный подход сегодня хорошо известен, например, по файловым системам, используемым в устройствах хранения компании NetApp.

Утилиты Hercules

Помимо собственно эмулятора, в дистрибутив Hercules входит несколько утилит, вызываемых из командной строки Linux, и загружаемые под Hercules автономные программы. Прежде всего, обычно нужно задать виртуальные диски, с которыми будет работать операционная система. Файлы с образами дисков могут поставляться в составе дистрибутива соответствующей ОС; если это не так, их необходимо подготовить самостоятельно. В последнем случае пользователь должен сначала создать образ пустого диска, для чего применяется утилита dasdinit:

dasdinit [ключи] имя_файла имя_тома [размер].

Здесь имя_файла указывает создаваемый в Linux образ диска, тип которого задается параметром тип_устройства (например, 3380 для IBM3380). Модель устройства задается только для жестких дисков, имеющих разные модели (например, 1 для IBM3330-1 емкостью 100 Мбайт или 2 — для IBM3330-2 емкостью 200 Мбайт). имя_тома — это идентификатор длиной до шести символов, задающий название (серийный номер) дискового тома.

В качестве ключей можно задать -0/-z/-bz2 — при отсутствии сжатия или применении zlib/bzip2 соответственно. Указав в качестве ключа -a, можно затребовать создание образа CKD-диска с использованием альтернативных цилиндров (на них располагаются запасные дорожки, которые используются вместо основных дорожек в случае выхода их из строя). Параметр «размер» указывает число цилиндров для CKD-дисков или число 512-байтных блоков для FBA-дисков; этот параметр может использоваться вместо параметра, задающего модель. На 32-разрядных ПК для CKD-дисков типа 3390 с емкостью больше 2 Гбайт dasdinit создаст несколько файлов с префиксами _1, _2 и т.д.

Для форматирования созданного пустого диска применяются стандартные для мэйнфреймов автономные утилиты ICKDSF или IBCDASDI, загружаемые под Hercules.

Теперь остается решить задачу переноса файлов с мэйнфреймов на эти диски. Возможным путем ее решения является преобразование последовательных файлов мэйнфрейма, например, расположенных на магнитных лентах, в формат AWSTAPE, что позволяет использовать эти файлы в качестве виртуальных магнитных лент в Hercules. Для их переноса на жесткие диски в составе Hercules имеется другая утилита, dasdload. Кроме того, можно просто сделать на мэйнфрейме дамп всего диска на ленту, например, с помощью утилиты IEHDASDR, затем преобразовать дамп в формат AWSTAPE, перенести на ПК соответствующий файл и загрузить под Hercules стандартную автономную утилиту IBCDMPRS для восстановления диска из дампа.

Для преобразования в формат AWSTAPE для мэйнфреймов имеется специальная программа tapeconv, доступная в исходных кодах. Что касается собственно физической передачи файлов с мэйнфрейма на ПК, то мы полагаем эту задачу решенной: для этого можно применять, например, TCP/IP. Для ЕС ЭВМ, не имевших подобных возможностей, в свое время в нашей стране была разработана куча соответствующих «самоделок».

В отличие от лобового решения через дамп диска, утилита dasdload позволяет осуществлять гораздо более тонкие манипуляции по загрузке файлов на виртуальные диски Hercules. Ее вызов в Linux выглядит следующим образом:

dasdload [ключи] имя_управляющего_файла имя_файла msglevel,

где имя_управляющего_файла указывает на Linux-файл, в котором описано, какие файлы и как загружать на образ диска, заданного параметром имя_файла, а msglevel — это целое число от 0 до 5, управляющее уровнем детализации сообщений, выдаваемых при загрузке файлов на диск. Попутно dasdload создает и сам файл образа диска (имя_файла), т.е. выполняет и функции утилиты dasdinit, поэтому ключи dasdload просто совпадают с задаваемыми для dasdinit.

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

Первая строка управляющего файла имеет следующий формат:

имя_тома тип_устройства[-модель] [число_цилиндров[ipltext]],

где число_цилиндров задает размер жесткого диска в дисковых цилиндрах (если опустить этот параметр, или указать 0 или *, будет использоваться стандартный размер), ipltext может задавать имя файла с текстом IPL-программы в обычном «перфокарточном» формате, используемом IBCDASDI/ICKDSF.

Для формата строк, описывающих загружаемые наборы данных, можно использовать обычные английские обозначения, с которыми знакомы все работавшие на мэйнфреймах:

dsname method units pri sec dir dsorg recfm lrecl blksize keylen.

Здесь dsname — имя набора данных, method указывает на метод его загрузки; при этом доступны следующие варианты:

  • XMIT filename — набор данных загружается из выгруженного PDS-файла, созданного командой TSO XMIT;
  • SEQ filename — последовательный набор данных загружается из двоичного файла с dsorg=PS или DA и recfm=F или FB;
  • EMPTY — создается пустой набор данных;
  • DIP — создается журнал машинных ошибок LOGREC;
  • CVOL — создается каталог SYSCTLG, содержащий минимум записей, нужных для IPL-программы операционной системы OS/360;
  • VTOC — задается размер и расположение оглавления тома; если это предложение опущено, том создается с минимальным числом дорожек и располагается после последнего набора данных на диске.

Смысл последующих параметров вполне понятен всем, кто знаком с JCL: units — это единицы измерения требуемой длины файла; pri и sec — соответственно первичное и вторичное количество цилиндров/дорожек; dir — число блоков оглавления PDS, и т.д.

Автору «посчастливилось» испытать, как ведут себя эмулированные файлами жесткие диски при сбоях, когда во время работы домашнего ПК c Linux при загруженной под Hercules операционной системе MVS отключилось электропитание. Команда fsck отработала «чисто», при работе с жестким диском MVS были вызваны аналогичные программы Hercules, однако в результате в оглавлении тома VTOC все-таки оказались ошибки, препятствующие нормальной работе. Вручную корректировать VTOC не хотелось; здесь бы пригодилась отечественная разработка CORVTOC, которой у автора не нашлось. В результате быстрее оказалось восстановить заново весь том.

Кроме указанных утилит, Hercules содержит еще ряд, в том числе, dasdls (дает список наборов данных на томе), dasdcat (отображает список разделов PDS и содержимое текстовых разделов), dasdpdsu (разгрузка разделов PDS) и др.

Но наибольший интерес представляет независимая разработка, загружаемая под Hercules программа ZZSA. Это автономная утилита с удобным экранным интерфейсом, разработанная Яном Джейгером (см. www.cbttape.org/~jjaeger). Она позволяет редактировать данные на жестком диске и оказывается полезна, например, в случае возникновения проблем в ОС, если эти проблемы можно устранить путем редактирования системных наборов данных. ZZSA позволяет просматривать список устройств, получать оглавление тома и список разделов PDS, просмотреть и изменить последовательный файл или раздел PDS, а также отобразить или изменить произвольную запись на жестком диске.

Доступные операционные системы

Большинство возможностей использования Hercules обусловлено наличием свободно доступных версий операционных систем для мэйнфреймов IBM. Среди них можно указать на OS/360 версии 21.8 (PCP, MFT и MVT, доступны на сайте open360.copyleft.de), DOS/360, TOS/360, TSS/370 (www.ibiblio.org/jmaynard), DOS/VS 3.4 (www.conmicro.cx/hercules/dosrel34.zip), VM/370 R6 (www.cbttape.org/vm6.htm).

Однако основным плюсом Hercules (по крайней мере, для нашей страны), является свободно доступная версия MVS-3.8j (включающий ее дистрибутив, Turnkey MVS, можно загрузить с www.ibiblio.org/jmaynard/turnkey-mvs-3.zip). Эта версия применялась пользователями IBM в начале 80-х годов. На ЕС ЭВМ была доступна и более современная версия МВС-2.1, аналог MVS/SP, однако в большинстве вычислительных центров использовались даже более старые, чем MVS-3.8, версии ОС. В любом случае MVS 3.8 имеет очень много общего с современными S/390 и даже z/OS, что позволяет, в частности, разрабатывать для последних программы в среде Turnkey MVS.

Надо сказать, что и сегодня, четверть века спустя, MVS 3.8 по ряду параметров лучше, чем Unix/Linux. Скажем, в некоторых многопроцессорных RISC-серверах однократный сбой всего одного из процессоров способен привести к перезагрузке операционной системы. Автору не раз доводилось видеть обработку машинных ошибок в MVS. Например, на ЕС 1045, имеющей всего один процессор, при его сбое (отказ одного из ТЭЗов) загорался красный сигнал машинной ошибки. Этот сигнал прерывания сбрасывали, и компьютер с MVS продолжал успешно работать!

В составе Turnkey MVS отсутствуют некоторые лицензионные компоненты, такие, как RACF или CICS. С другой стороны, в Turnkey MVS имеется ряд расширений, например, команды XMIT370/RECV370 (совместимые с известной командой TRANSMIT из TSO/E), или заплата для решения проблемы 2000 года в сортировке. Включена, в частности, поддержка жестких дисков IBM 3375, 3380 и 3390. Последние модификации осуществил Фолкер Бандтке. Он является главным ответственным за подготовку дистрибутива Turnkey MVS, который, кроме готовой к использованию версии IBM MVS 3.8 и компонентов ее дистрибутива, необходимой при генерации собственной пользовательской версии MVS, включает еще много программных разработок, выполненных вне IBM.

В Turnkey MVS имеется и TSO, что позволяет сразу начать работу в диалоговом режиме. Кроме стандартного заведенного пользователя ibmuser, уже подключены еще четыре пользователя, от herc01 до herc04. Поскольку в MVS 3.8 нет прекрасного программного продукта ISPF, с которым работали обычно все TSO-пользователи отечественной МВС-2.1, нужно воспользоваться другой разработкой — RPF (Rob?s Programming Facility), выполненной Робом Принсом. Этот командный процессор выполнен в стиле ISPF и имеет, кроме всего прочего, интерфейсы к известным в нашей стране программным продуктам Librarian и ROSCOE.

Ряд программ, входящих в Turnkey MVS, пользователям ЕС ЭВМ не известен. Так, в готовой версии Turnkey MVS применяются средства автоматизации работы оператора, которые, например, дают автоматические ответы (команды REPLY) на некоторые запросы MVS к оператору. На мэйнфреймах некоторые компоненты современных «самоуправляемых систем» появились уже много лет назад.

Большое количество свободно доступных программных продуктов, сделанных вне IBM, распространялось на магнитных лентах (www.cbttape.org) и применялось членами SHARE, организации пользователей мэйнфреймов IBM. Богатая коллекция таких программ включена в Turnkey MVS; примером является уже упомянутая ZZSA.

Turnkey MVS продолжает развиваться вне IBM. Стоить упомянуть, в частности, проекты поддержки в этой операционной системе стека TCP/IP (www.prycroft6.com.au/vs2sw) и компилятора gcc (www.spftools.com/downloads/gccmvs.htm).

Штука посильнее «Фауста» Гете

Hercules вместе с имеющимися операционными системами может служить для самых разных целей. Это и задачи ИТ-образования, и тренинг операторов и программистов, и собственно разработка программного обеспечения. Конечно, для двух последних областей применения возможности, например, Hercules + Turnkey MVS ограничены по сравнению, скажем, с z/OS. Однако в качестве операционной системы, работающей под Hercules, может выступить любая система для мэйнфреймов, в том числе и z/OS — была бы лицензия. IBM сделала великое дело, открыв коды MVS 3.8j, хотя можно встретить и критику корпорации — за то, что она не поступила аналогичным образом с более свежими версиями MVS.

Наконец, возможно применение Hercules для работы унаследованных приложений. Многие старые приложения даже для ЕС ЭВМ смогут работать в Turnkey MVS. Главное, что нужно при этом иметь — это русифицированный клиент tn3270.

И последнее. Как справедливо отмечено в [1], люди никогда не забывают первую любовь. Когда автор, два десятилетия проработавший в качестве системного программиста на ЕС ЭВМ, а затем на мэйнфреймах IBM, увидел на экране домашнего ПК знаменитое сообщение IEA101A SPECIFY SYSTEM PARAMETERS FOR RELEASE 03.8. VS2, возникло такое острое чувство ностальгии… Опытных системных программистов ЕС ЭВМ это может привлекать как игрушка гораздо более «крутая», чем любой Quake.

Литература
  1. Moshe Bar, Byte, Aug. 1st, 2000, http://www.byte.com/documents/s=429/ byte20000801s0002/
  2. Кузьминский, Z-архитектура. «Открытые системы», № 10, 2001.