Средства разработки и управления приложениями
В состав z/OS входят все необходимые средства, с помощью которых можно создавать, модифицировать, хранить и распространять новое прикладное программное обеспечение на различных языках программирования, включая HL Assembler и языки высокого уровня (High Level Languages), такие как С, С++, COBOL, PL/1, Fortran, Ada, Java и др. Помимо базовых средств разработки, включающих набор компиляторов, редакторы связей и средства загрузки программ, в z/OS реализована универсальная языковая среда Language Environment, содержатся многочисленные библиотеки программ и классов, представлен менеджер сопровождения разработки программного обеспечения (ISPF/SCLM). Кроме того, выпускается целый ряд продуктов, таких как IBM Visual Age, IBM Application Development Tool, которые поставляются вне z/OS и служат для автоматизации и повышения эффективности процесса разработки приложений.
Базовые средства создания программ
На рис. 5.59 представлены классическая последовательность этапов и базовые средства разработки программного обеспечения в операционной системе z/OS [ 5.27 ] .
Исходный модуль, содержащий текст программы на одном из поддерживаемых языков программирования, может быть создан средствами TSO/ISPF/UNIX shell или подготовлен, а затем импортирован с рабочей станции. Для размещения исходного модуля может быть использован последовательный или библиотечный (PDS, PDSE) набор данных или файл z/OS UNIX. Компиляция исходного текста программы осуществляется встроенным языковым компилятором или ассемблером. z/OS включает как новые 64-разрядные компиляторы для таких языков, как, например, С/С++ и Cobol, так и множество старых версий. Компиляторы, которые могут запускаться как в пакетном, так и в интерактивном режиме, формируют объектный модуль, содержащий откомпилированный код и необходимые вспомогательные таблицы. Объектные модули обычно размещаются в наборе данных (библиотеке объектных модулей) или файле UNIX для последующего связывания с другими объектными модулями, размещенными в системных или пользовательских библиотеках. Компиляторы языков С/С++ и Cobol, а также HL Assembler дают возможность получить объектные модули расширенных форматов XOBJ или GOFF (Generalized Object File Format), допускающих использование длинных внешних имен (до 32767 байт).
Процедура редактирования связей (link edit) объединяет все необходимые объектные модули в единый загрузочный модуль, готовый к выполнению. Для хранения загрузочных модулей создаются специальные PDS- или PDSE-библиотеки, использующие формат записей RECFM=U. Ранее отмечалось, что в конфигурации z/OS обычно предусматривается несколько системных библиотек загрузочных модулей ( SYS1.LINKLIB и др.), описываемых в разделе LNKLST реестра SYS1.PARMLIB.
z/OS включает два редактора связей: стандартный Linkage Editor и усовершенствованный Program Management Binder (или просто Binder1Происходит от англ. bind - связывать. ). Стандартный редактор связей служит для построения загрузочных модулей "старого" формата, ориентированных на размещение в PDS-библиотеках и поддерживающих только 24- и 31-разрядные режимы адресации с ограничением общего объема кода в 16 MB. Binder обеспечивает возможность связывания объектных и загрузочных модулей в загрузочные модули нового формата - программные объекты (program object). Программные объекты включают все возможности стандартных загрузочных модулей и, кроме того, поддерживают режим 64-разрядной адресации и объектные модули расширенного формата, а также допускают увеличение объема кода до 1 GB. Программные объекты могут размещаться только в библиотечных наборах данных типа PDSE или в файлах HFS UNIX. Отметим, что Binder позволяет также создавать стандартные загрузочные модули, размещаемые в PDS, а с помощью утилиты IEBCOPY можно производить преобразование загрузочных модулей в программные объекты и обратно.
На этапе редактирования связей программный объект можно настроить определенным образом с помощью специальных параметров (опций), среди которых следует выделить следующие:
- AMODE - устанавливает используемый режим адресации (24, 31 или 64 бит);
- RMODE - устанавливает область размещения в адресном пространстве (ниже границы 16 MB или произвольно);
- REUS - устанавливает режим повторного использования (реентерабельный, используемый последовательно, обновляемый).
Редактор связей и Binder позволяют создавать динамические загрузочные модули (программные объекты), которые во время выполнения могут обращаться к внешним модулям с помощью макровызовов LOAD, LINK, XCTL, ATTACH.
Готовая к выполнению программа (загрузочный модуль или программный объект) запускается на выполнение универсальной программой загрузчиком (Program Management Loader). Загрузчик производит размещение программы в виртуальном адресном пространстве и подготавливает ее к выполнению, осуществляя настройку адресных констант. Обычно сразу же после загрузки программа получает управление, то есть начинает выполняться под управлением ОС.
Как видно из рис. 5.59, существует возможность выполнять загрузку программ, минуя стадию сохранения загрузочного модуля (программного объекта) в библиотеке. Для этой цели может использоваться Binder или же специальный пакетный загрузчик (Batch Loader), который на основе объектного модуля строит загрузочный модуль "старого" формата и размещает его в виртуальной памяти.