Другие журналы
|
научное издание МГТУ им. Н.Э. БауманаНАУКА и ОБРАЗОВАНИЕИздатель ФГБОУ ВПО "МГТУ им. Н.Э. Баумана". Эл № ФС 77 - 48211. ISSN 1994-0408![]()
История и перспективы современных больших вычислительных машин (Mainframes) часть 3
#5 май 2006 История и перспективы современных больших вычислительных машин (Mainframes)
Языковая среда z/OS, средства разработки, языки программирования в операционной системе z/OS и программные продукты, работающие в среде mainframe
Программные продукты для z/OS Операционная система z/OS обычно содержит дополнительное программное обеспечение, которое требуется для создания «рабочей» среды: • менеджеры безопасности • менеджеры баз данных • компиляторы (дальше они будут рассмотрены подробнее) • утилиты • фирменные продукты
Middleware для z/OS Программное обеспечение промежуточного слоя Middleware – это, обычно, программное обеспечение между ОС и конечным пользователем или программой конечного пользователя. Программное обеспечение промежуточного слоя Middleware – это, как правило, подсистемы, которые обеспечивают функции, не предоставляемые ОС, которых нет в ОС. Эти подсистемы обеспечивают возможность хранения, перемещения данных, восстановления, управление транзакциями, обеспечивают взаимодействие с различными платформами и элементами. Типичное z/OS middleware включает: • Базы данных • Веб-серверы • Управление очередями и функциями маршрутизации • Менеджеры транзакций • Виртуальные машины Java • Функции обработки XML
В операционной системе z/OS реализована поддержка большого числа языков программирования. Среди них: Java, COBOL, PL/1, C++ и др. Каждый из этих языков ориентирован на определенную задачу, например Java идеально подходит для разработки Интернет-приложений – серверных и клиентских приложений, COBOL - для банковских и бизнес приложений, C++ идеален для системного программирования и написания приложений, критичных к ресурсам.
Языковая среда z/OS (z/OS Language Environment)
Операционная система z/OS XL C/C++ использует среду исполнения C/C++ и библиотеку сервисов времени исполнения, доступных в языковой среде z/OS. Языковая среда состоит из 4-х языко-зависимых библиотек времени исполнения, а также из базовых процедур и основных сервисов, как показано на рисунке 3.1.
Рисунок 3.1. Библиотеки в языковой среде z/OS
Языковая среда z/OS предоставляет следующие возможности: · базовые сервисы для многих приложений, такие как: интернационализация, завершение приложений, выделение памяти, межъязыковое взаимодействие и перехват условий; · настройки времени выполнения, которые позволяют облегчить диагностику и оптимизацию приложения; · доступ к сервисам операционной системы; системные сервисы z/OS UNIX доступны программисту через привязки z/OS XL C/C++; · доступ к специфичным для языка библиотекам функций.
Средства разработки программных продуктов Традиционно, все средства разработки разделяются на: · компиляторы; · отладчики; · профайлеры. Далее в статье будет детально рассмотрен каждый из этих пунктов, с учетом специфики z/OS на примере средств разработки на С++ под операционную систему z/OS, а именно, пойдет речь о компиляторе z/OS XL C/C++ Compiler.
Компилятор z/OS XL C/C++ Compiler Основными особенностями компилятора z/OS XL C/C++ Compiler являются следующие:
· Поддержка системных сервисов UNIX, включая иерархическую файловую систему для хранения исходных текстов и выходных файлов; · Поддержку библиотек динамической компоновки (DLL). Поддержка DLL также возможна при использовании z/OS UNIX; · Поддержка полной программной реентерабельности, то есть, одна и та же программа может быть запущена несколькими пользователями одновременно; · Межъязыковые вызовы между программами на C/C++ и ассемблером, COBOL, PL/I или FORTRAN; · Поддержка длинных имен. Таким образом, внешние имена могут быть в смешанном регистре и длиной до 1024 знаков; · Широкие возможности оптимизации; · Поддержка национальных языков, позволяющаю динамически переключаться между английскими и национальными сообщениями.
Также стоит отметить, что этот компилятор поддерживает международный стандарт языка программирования С++ ISO/IEC 14882:1998. Также планируется добавление поддержки стандарта C++ ISO/IEC 14882:2003(E).
Компиляция программы Для компиляции программы необходимо назначить входные и выходные данные.
Входные данные разделяются на главные и второстепенные. К главным данным относятся исходные тексты программы. Главные входные данные могут быть: · последовательный набор данных; · член распределенного набора данных; · все члены распределенного набора данных; · файл иерархической файловой системы · все файлы в каталоге иерархической файловой системы; К второстепенным входным данным относятся включаемые файлы.
Выходными данными могут являться: · объектные модули; · файлы листингов; · вывод препроцессора · файл событий · вывод шаблонов; · реестр шаблонов;
Как и входные данные, выходными данными могут быть также: · последовательный набор данных; · член распределенного набора данных; · все члены распределенного набора данных; · файл иерархической файловой системы · все файлы в каталоге иерархической файловой системы;
Возможности оптимизации программного продукта на этапе компиляции
Компилятор обладает серьезными возможностями оптимизации, такими как:
· встраивание (inlining) функций; · исключение локальных выражений, объединение нескольких инструкций в одну; · исключение простых или дублирующихся выражений; · перемещение кода, или вынос вычислений за пределы цикла (если такое возможно); · замена менее эффективных инструкций более эффективными; · планирование инструкций – компилятор меняет порядок инструкций на более эффективный; · удаление неиспользуемых переменных; · удаление неиспользуемого кода.
Также компилятор выполняет как внутрипроцедурный, так и межпроцедурный анализ. Внутрипроцедурный анализ позволяет оптимизировать каждую функцию в единице трансляции, используя информацию, доступную только в данной единице трансляции. Межпроцедурный анализ позволяет производить оптимизацию всей программы, миную границы единиц трансляции.
Отладчики
На настоящий момент наиболее популярными отладчиками являются WebSphere Developer Debugger for zSeries и Debug Tools for z/OS. По сути, WebSphere Developer Debugger отладчиком на самом деле не является, а просто интегрируется с Debug Tools for z/OS, предоставляя графический интерфейс и некоторые другие сервисы. В данном разделе речь пойдет именно о Debug Tools for z/OS.
Отладчик Debug Tools работает в следующих средах: · DB2 · CICS · TSO · JES batch · Системные сервисы UNIX в режиме удаленной отладки или в полноэкранном режиме через терминал VTAM. · IMS Debug Tools могут работать в одном из двух возможных режимов - интерактивной или пакетной отладки. В режиме пакетной отладки возможна отладка приложения с использованием специального командного файла, написанного на языке скриптов JCL. Этот отладчик позволяет отлаживать приложения, написанные на разных языках программирования в одной сессии, динамически определяя момент смены языка и переходя в другой модуль. Следует отметить, что модули, написанные на ассемблере в данном режиме не поддерживаются.
Есть возможность динамической установки точек останова программы, то есть, отладчик Debug Tools позволяет устанавливать точки останова в приложении, отслеживать изменение переменных и следить за выполнением условий во время работы программы. Кроме того, позволяет отследить выполнение программы по шагам, позволяет протоколировать работу программы, используя отладчик как утилиту тестирования.
Профайлеры
Профайлер - это программа, предназначенная для комплексного анализа исходной программы с целью нахождения наиболее критичных участков кода (например, занимающих больше всего системных ресурсов). Впоследствии эти данные используются для оптимизации программного продукта. Под z/OS доступен программный продукт «Perfomance Analyzer», входящий в пакет Productivity Tools и выполняющий следующие функции профайлера:
· Диагностика аварийных завершений программы, то есть, во время трассировки функций доступна история вызовов, что позволяет точно определить место аварийного завершения программы; · Трассировка многопоточных программ, при этом возможен вывод информации трассировки для каждого отдельного потока.
Результаты работы профайлера «Perfomance Analyzer» могут быть представлены в виде следующих данных: · диаграмма вложенных вызовов, когда исполнение программы показывается в виде серии вызовов функций и возвратов; · динамический граф вызовов в виде двумерного графического представления процесса выполнения программы, показывающего иерархию вызовов; · статистический текстовый отчет о системных ресурсах, потраченных каждой функцией. · временная диаграмма, показывающая вызовы функции в хронологической последовательности.
Как видим, операционная система z/OS обладает современными компиляторами и мощными средствами отладки и профилирования, что позволяет разрабатывать приложения разного уровня сложности и для разного класса задач.
Использованная литература
1. XL C/C++ Programming Guide, SC09-4765-06 2. XL C/C++ User’s Guide, SC09-4767-04
Тематические рубрики: Поделиться:
|
|
||||||||||||||||||||||||||||||||
|