Jump to content

Конвейеры CMS

(Перенаправлено из конвейера Хартмана )
Трубопроводы
Парадигма Программирование потоков данных
Разработано Джон П. Хартманн ( IBM )
Разработчик ИБМ
Впервые появился 1986
Стабильная версия
1.1.12/0012 / 2020-06-03
Платформа IBM z Системы
ТЫ з/ВМ 7.1
Веб-сайт http://vm.marist.edu/~pipeline
Под влиянием
Конвейер (Unix)

Конвейеры CMS — это функция операционной системы VM/CMS , которая позволяет пользователю создавать и использовать конвейер . Программы в конвейере работают с последовательным потоком записей. Программа записывает записи, которые читаются следующей программой в конвейере. Любую программу можно комбинировать с любой другой, поскольку чтение и запись осуществляются через аппаратно-независимый интерфейс.

CMS Pipelines предоставляет команду CMS, PIPE. Строка аргумента для PIPE команда — это спецификация конвейера. PIPE выбирает программы для запуска и объединяет их в конвейер для передачи данных.

Поскольку программы и утилиты CMS не предоставляют независимый от устройства интерфейс stdin и stdout , CMS Pipelines имеет встроенную библиотеку программ, которые можно вызывать в спецификации конвейера. Эти встроенные программы взаимодействуют с операционной системой и выполняют множество служебных функций.

Данные в CMS структурированы в виде логических записей, а не потока байтов. Для текстовых данных строка текста соответствует логической записи. В CMS Pipelines данные передаются между этапами в виде логических записей.

Пользователи CMS Pipelines вводят команды конвейера с терминала или в процедурах EXEC. Пользователи могут писать на REXX программы , которые можно использовать в дополнение к встроенным программам.

Простой пример, который читает файл с диска и отделяет записи, содержащие строку «Привет», от тех, которые ее не содержат. Выбранные записи изменяются путем добавления строки «World!» каждому из них; остальные записи переводятся в верхний регистр. Затем два потока объединяются, и записи записываются в новый выходной файл.

PIPE (end ?) 
         < input txt 
       | a: locate /Hello/ 
       | insert / World!/ after
       | i: faninany
       | > newfile txt a
       ? a:
       | xlate upper
       | i:

В этом примере < этап считывает входной файл с диска и передает записи на следующий этап конвейера. locate Этап разделяет входной поток на два выходных потока. Основной результат locate (записи, содержащие Hello) передает записи в insert этап. insert этап изменяет входные записи, указанные в его аргументах, и передает их на выход. Выход подключен к faninany который объединяет записи из всех входных потоков в один выходной поток. Вывод записывается в новый файл на диске.

Вторичный выход locate (отмечается вторым появлением a: label) содержит записи, не соответствующие критерию отбора. Эти записи переводятся в верхний регистр (с помощью xlate этап) и передается во вторичный входной поток faninany (отмечается вторым появлением i: этикетка).

Топология конвейера в этом примере состоит из двух соединенных конвейеров. Конечный персонаж (т. ? в этом примере) разделяет отдельные конвейеры в наборе конвейеров. Записи, считанные из входного файла, проходят через любой из двух маршрутов топологии конвейера. Поскольку ни один из маршрутов не содержит этапов, требующих буферизации записей, CMS Pipelines гарантирует, что записи поступят в faninany в том порядке, в котором они прошли locate.

Пример конвейера представлен в «портретной форме» с отдельными этапами на отдельных строках. Когда конвейер вводится как команда CMS, все этапы записываются в одной строке.

Концепция простого конвейера расширяется следующим образом:

  • Программа может определить конвейер подпрограмм для выполнения функции над всеми или частью входных данных.
  • Можно определить сеть пересекающихся трубопроводов. Программы могут находиться в нескольких конвейерах одновременно, что дает программе доступ к нескольким потокам данных.
  • Данные, передаваемые от одного этапа к другому, структурируются как записи. Это позволяет этапам работать с одной записью без необходимости произвольной буферизации данных для сканирования специальных символов, разделяющих отдельные строки.
  • Стадии обычно получают доступ к входной записи в режиме поиска и создают выходные записи перед использованием входной записи. Этот пошаговый подход не только позволяет избежать копирования данных из одного буфера в другой; это также позволяет прогнозировать поток записей в многопоточных конвейерах.
  • Программа может динамически переопределять топологию конвейера. Он может заменить себя другим конвейером, вставить сегмент конвейера до или после себя, или и то, и другое. Программа может использовать данные в конвейере для построения спецификаций конвейера.

CMS Pipelines предлагает несколько функций для повышения надежности программ:

  • Синтаксическая ошибка в общей структуре конвейера или в какой-либо одной программе приводит к подавлению всего конвейера.
  • Запуск программ в конвейере и распределение ресурсов координируется диспетчером CMS Pipelines . Отдельные программы могут участвовать в этой координации, чтобы гарантировать, что необратимые действия будут отложены до момента, когда все программы в конвейерах получат возможность проверить аргументы и будут готовы обработать данные. Когда конвейер завершается, диспетчер обеспечивает повторное высвобождение ресурсов.
  • Ошибки, возникающие во время потока данных в конвейере, могут быть обнаружены всеми участвующими программами. Например, в таких обстоятельствах файл на диске не может быть заменен.

Джон Хартманн из IBM в Дании начал разработку CMS Pipelines в 1980 году. [1] Этот продукт продавался IBM как отдельный продукт в 80-х годах и был интегрирован в VM/ESA в конце 1991 года. С каждым выпуском VM код CMS Pipelines также обновлялся, пока он не был функционально заморожен на уровне 1.1.10 в VM/ESA 2.3 в 1997 году. С тех пор последний уровень CMS Pipelines был доступен для загрузки с CMS. Домашняя страница Pipelines для пользователей, желающих изучить новую функцию.

Текущий уровень CMS Pipelines снова включен в выпуски z/VM , начиная с z/VM 6.4, доступного с 11 ноября 2016 г.

Реализация CMS Pipelines для TSO была выпущена в 1995 году как BatchPipeWorks в продукте BatchPipes/MVS . Современная реализация TSO была доступна в качестве предложения услуг от IBM в Дании до 2010 года.

Обе версии поддерживаются на основе единого исходного кода и обычно называются CMS/TSO Pipelines . Спецификация доступна в Авторской редакции. [2]

См. также

[ редактировать ]
  1. ^ VM и сообщество VM, Мелинда Вариан
  2. ^ Трубопроводы CMS/TSO Авторское издание Авторское издание
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f66e756a620ae85e59fd3c348673ef6f__1684494780
URL1:https://arc.ask3.ru/arc/aa/f6/6f/f66e756a620ae85e59fd3c348673ef6f.html
Заголовок, (Title) документа по адресу, URL1:
CMS Pipelines - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)