CMS Pipelines реализует концепцию конвейера в операционной системе VM / CMS . Программы в конвейере работают с последовательным потоком записей. Программа записывает записи, которые читает следующая программа в конвейере. Любую программу можно комбинировать с любой другой, потому что чтение и запись выполняются через интерфейс, не зависящий от устройства.
Парадигма | Программирование потока данных |
---|---|
Разработано | Джон П. Хартманн ( IBM ) |
Разработчик | IBM |
Впервые появился | 1986 г. |
Стабильный выпуск | 1.1.12 / 0012 / 2020-06-03 |
Платформа | IBM z Systems |
Операционные системы | z / VM 7.1 |
Веб-сайт | http://vm.marist.edu/~pipeline |
Под влиянием | |
Конвейер (Unix) |
Обзор
CMS Трубопроводы предоставляет команду CMS, PIPE
. Строка аргумента PIPE
команды - это спецификация конвейера. PIPE выбирает программы для запуска и связывает их в конвейер для прокачки данных.
Поскольку программы и утилиты CMS не предоставляют независимый от устройства интерфейс stdin и stdout , CMS Pipelines имеет встроенную библиотеку программ, которую можно вызывать в спецификации конвейера. Эти встроенные программы взаимодействуют с операционной системой и выполняют множество служебных функций.
Данные на CMS структурированы в виде логических записей, а не потока байтов. Для текстовых данных строка текста соответствует логической записи. В CMS Pipelines данные передаются между этапами в виде логических записей.
Пользователи CMS Pipelines выдают команды конвейера из терминала или в процедурах EXEC. Пользователи могут писать программы на REXX, которые можно использовать в дополнение к встроенным программам.
Пример
Простой пример, который читает файл с диска, отделяет записи, содержащие строку «Hello», от тех, которые этого не делают. Выбранные записи изменяются путем добавления строки «World!» каждому из них; остальные записи переводятся в верхний регистр. Затем два потока объединяются, и записи записываются в новый выходной файл.
ТРУБА (конец?) <входной текст | а: найдите / Привет / | вставить / Мир! / после | я: faninany | > новый файл txt a ? а: | xlate верхний | я:
В этом примере <
этап считывает входной дисковый файл и передает записи следующему этапу конвейера. locate
Этап отделяет входной поток на два выходных потоков. Основной вывод locate
(записи, содержащие Hello) передает записи в insert
рабочую область. insert
Этап изменяет входные записи , как указано в его аргументах , и передает их на выход. Выход подключен к тому, faninany
что объединяет записи из всех входных потоков, чтобы сформировать единый выходной поток. Вывод записывается в новый дисковый файл.
Вторичный вывод locate
(отмеченный вторым появлением a:
метки) содержит записи, не соответствующие критерию выбора. Эти записи переводятся в верхний регистр ( 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 трубопроводы входят в г / VM выпускает снова , так как г / VM 6.4 доступен с 11 ноября 2016 года.
Реализация CMS Pipelines для TSO была выпущена в 1995 году как BatchPipeWorks в продукте BatchPipes / MVS . Современная реализация TSO была доступна в качестве предложения услуг от IBM в Дании до 2010 года.
Обе версии поддерживаются из единой базы исходного кода и обычно называются конвейерами CMS / TSO . Спецификация доступна в авторской редакции. [2]
Смотрите также
Рекомендации
- ^ VM и сообщество VM, Мелинда Вариан
- ^ CMS / TSO Pipelines Авторская редакция Авторская редакция