Компьютеризированная пакетная обработка — это метод автоматического запуска программ, называемых заданиями в пакетах. Хотя пользователи должны отправлять задания, для обработки пакета не требуется никакого другого взаимодействия с пользователем. Пакеты могут автоматически запускаться в запланированное время, а также запускаться в зависимости от доступности компьютерных ресурсов.
Термин «серийная обработка» берет свое начало в традиционной классификации методов производства, таких как единичное производство (производство единичных изделий), серийное производство (производство «партии» нескольких изделий одновременно, на одном этапе за раз) и поточное производство (массовое производство, все этапы которого выполняются одновременно).
Ранние компьютеры могли запускать только одну программу за раз. Каждый пользователь имел единоличный контроль над машиной в течение запланированного периода времени. Они приходили к компьютеру с программой и данными, часто на перфокартах и магнитной или бумажной ленте, и загружали свою программу, запускали и отлаживали ее, а затем переносили свой вывод, когда он был готов.
По мере того, как компьютеры становились быстрее, время настройки и демонтажа стало составлять большую часть доступного компьютерного времени. Программы, называемые мониторами , предшественники операционных систем , были разработаны, которые могли обрабатывать серию или «пакет» программ, часто с магнитной ленты, подготовленной в автономном режиме. Монитор загружался в компьютер и запускал первое задание пакета. В конце задания он восстанавливал управление, загружал и запускал следующее, пока пакет не был завершен. Часто вывод пакета записывался на магнитную ленту и печатался или перфорировался в автономном режиме. Примерами мониторов были Fortran Monitor System от IBM , SOS (Share Operating System) и, наконец, IBSYS для систем IBM 709x в 1960 году. [1] [2]
Компьютеры третьего поколения [ необходимо разъяснение ] [3], способные к многопрограммированию, начали появляться в 1960-х годах. Вместо того, чтобы запускать одно пакетное задание за раз, эти системы могут иметь несколько пакетных программ, работающих одновременно, чтобы поддерживать максимальную загрузку системы. Одна или несколько программ могут ожидать ввода, одна активно работать на ЦП, а другие генерировать вывод. Вместо автономного ввода и вывода программы, называемые спулерами, считывают задания с карт, дисков или удаленных терминалов и помещают их в очередь заданий для выполнения. Чтобы предотвратить тупиковые ситуации, планировщик заданий должен знать требования к ресурсам каждого задания — память, магнитные ленты, монтируемые диски и т. д., поэтому были разработаны различные языки сценариев для предоставления этой информации в структурированном виде. Вероятно, наиболее известным является язык управления заданиями (JCL) компании IBM. Планировщики заданий выбирают задания для выполнения в соответствии с различными критериями, включая приоритет, размер памяти и т. д. Удаленная пакетная обработка — это процедура отправки пакетных заданий с удаленных терминалов, часто оборудованных считывателем перфокарт и строчным принтером . [4] Иногда асимметричная многопроцессорная обработка используется для буферизации пакетного ввода и вывода для одного или нескольких больших компьютеров с использованием подключенной меньшей и менее дорогой системы, как в IBM System/360 Attached Support Processor . [a]
Первая универсальная система разделения времени, Compatible Time-Sharing System (CTSS), была совместима с пакетной обработкой. Это облегчило переход от пакетной обработки к интерактивным вычислениям . [5]
С конца 1960-х годов интерактивные вычисления, такие как через текстовые интерфейсы компьютерных терминалов (как в оболочках Unix или циклах чтения-вычисления-печати ), а позднее и графические пользовательские интерфейсы стали обычным явлением. Неинтерактивные вычисления, как одноразовые задания, такие как компиляция, так и обработка нескольких элементов в пакетах, стали ретроспективно называться пакетной обработкой , и термин пакетное задание (в раннем использовании часто «партия заданий ») стал обычным явлением. Раннее использование особенно часто встречается в Мичиганском университете , вокруг Мичиганской терминальной системы (MTS). [6]
Хотя разделение времени существовало, его использование было недостаточно надежным для корпоративной обработки данных; ничто из этого не было связано с более ранним оборудованием для учета единиц , которым управлял человек.
Неинтерактивные вычисления остаются широко распространенными в вычислительной технике, как для общей обработки данных, так и для задач «управления» системой (используя системное программное обеспечение ). Высокоуровневая программа (выполняющая несколько программ с некоторой дополнительной «связующей» логикой) сегодня чаще всего называется скриптом и пишется на языках сценариев , в частности, скриптах оболочки для системных задач; в IBM PC DOS и MS-DOS это называется пакетным файлом . Сюда входят компьютеры на базе UNIX , Microsoft Windows , macOS (основой которого является ядро BSD Unix) и даже смартфоны . Выполняемый скрипт, особенно выполняемый из интерактивного сеанса входа в систему , часто называют заданием , но этот термин используется весьма неоднозначно.
«Прямого аналога пакетной обработки z/OS в системах ПК или UNIX нет. Пакетные задания обычно выполняются по расписанию или по мере необходимости. Возможно, наиболее близким сравнением будет с процессами, запускаемыми командой at или cron в UNIX, хотя различия существенны». [7]
Пакетные приложения по-прежнему имеют решающее значение для большинства организаций, в значительной степени потому, что многие общие бизнес-процессы поддаются пакетной обработке. Хотя онлайн-системы также могут функционировать, когда ручное вмешательство нежелательно, они, как правило, не оптимизированы для выполнения объемных, повторяющихся задач. Поэтому даже новые системы обычно содержат одно или несколько пакетных приложений для обновления информации в конце дня, создания отчетов, печати документов и других неинтерактивных задач, которые должны надежно выполняться в определенные бизнес-сроки.
Некоторые приложения поддаются потоковой обработке, а именно те, которым нужны данные только из одного входа за раз (не итоги, например): начните следующий шаг для каждого входа, как только он завершит предыдущий шаг. В этом случае потоковая обработка снижает задержку для отдельных входов, позволяя им быть завершенными, не дожидаясь завершения всего пакета. Однако многим приложениям требуются данные из всех записей, в частности, вычисления, такие как итоги. В этом случае весь пакет должен быть завершен, прежде чем будет получен пригодный для использования результат: частичные результаты непригодны для использования.
Современные пакетные приложения используют современные пакетные фреймворки, такие как Jem The Bee, Spring Batch [8] или реализации JSR 352 [9], написанные для Java , и другие фреймворки для других языков программирования, чтобы обеспечить отказоустойчивость и масштабируемость, необходимые для обработки больших объемов. Чтобы обеспечить высокоскоростную обработку, пакетные приложения часто интегрируются с решениями для сетевых вычислений для разделения пакетного задания на большое количество процессоров, хотя при этом возникают значительные проблемы программирования. Пакетная обработка больших объемов предъявляет особенно высокие требования к архитектурам систем и приложений. Архитектуры, которые характеризуются высокой производительностью ввода-вывода и вертикальной масштабируемостью , включая современные мэйнфреймы , как правило, обеспечивают лучшую пакетную производительность, чем альтернативы.
Скриптовые языки стали популярными по мере их развития вместе с пакетной обработкой. [10]
Пакетное окно — это «период менее интенсивной онлайн-активности» [11] , когда компьютерная система способна выполнять пакетные задания без помех со стороны интерактивных онлайн-систем.
Задания банка , выполняемые в конце рабочего дня (EOD), требуют концепции переключения , при которой транзакции и данные отсекаются для пакетной активности определенного дня («депозиты после 15:00 будут обработаны на следующий день»).
Поскольку требования к времени безотказной работы онлайн-систем возросли для поддержки глобализации , Интернета и других бизнес-нужд, окно пакетной обработки сократилось [12] [13] , и все больше внимания уделялось методам, которые требовали бы, чтобы онлайн-данные были доступны в течение максимального периода времени.
Размер партии относится к числу рабочих единиц, которые должны быть обработаны в рамках одной пакетной операции. Вот несколько примеров:
Операционная система или платформа IBM mainframe z/OS , возможно, имеет наиболее усовершенствованный и развитый набор возможностей пакетной обработки благодаря своему происхождению, долгой истории и продолжающейся эволюции. Сегодня такие системы обычно поддерживают сотни или даже тысячи одновременных онлайн- и пакетных задач в одном образе операционной системы . Технологии, которые помогают параллельной пакетной и онлайн-обработке, включают Job Control Language (JCL), языки сценариев, такие как REXX , Job Entry Subsystem ( JES2 и JES3 ), Workload Manager (WLM), Automatic Restart Manager (ARM), Resource Recovery Services (RRS), IBM Db2 data sharing, Parallel Sysplex , уникальные оптимизации производительности, такие как HiperDispatch , архитектура канала ввода-вывода и несколько других.
Программы Unix cron
, at
, и batch
(сегодня batch
это вариант at
) позволяют осуществлять сложное планирование заданий. В Windows есть планировщик заданий . Большинство высокопроизводительных вычислительных кластеров используют пакетную обработку для максимального использования кластера. [15]
IBSYS была операционной системой для 7090, которая произошла от SOS (SHARE Operating System)
CTSS была названа "совместимой" в том смысле, что
FMS
могла работать в B-core как "фоновый" пользователь, почти так же эффективно, как на голой машине, а также потому, что программы, скомпилированные для FMS batch, могли быть загружены и выполнены в "фоновой" среде разделения времени (с некоторыми ограничениями). ... Эта функция позволила Вычислительному центру постепенно перейти от пакетной обработки к разделению времени
JSR 352, открытая стандартная спецификация для пакетной обработки Java. ... Используемые языки программирования со временем развивались на основе того, что было доступно
многопользовательская, общая и интеллектуальная система пакетной обработки улучшает масштабирование..... Большинство кластеров
HPC
работают на Linux