В вычислительной технике спулинг — это специализированная форма многопрограммного обеспечения для копирования данных между различными устройствами. В современных системах [a] он обычно используется для посредничества между компьютерным приложением и медленным периферийным устройством , например принтером . Спулинг позволяет программам «передавать» работу периферийному устройству, а затем переходить к другим задачам или не начинать работу, пока ввод не будет транскрибирован. Специальная программа, спулер , поддерживает упорядоченную последовательность заданий для периферийного устройства и подает ему данные с собственной скоростью. И наоборот, для медленных периферийных устройств ввода , например, для считывателя карт , спулер может поддерживать последовательность вычислительных заданий, ожидающих данных, запуская каждое задание, когда все соответствующие входные данные доступны; см. пакетную обработку . Сам спулер относится к последовательности заданий или области хранения, где они хранятся. Во многих случаях спулер способен управлять устройствами на их полной номинальной скорости с минимальным влиянием на другую обработку.
Буферизация представляет собой комбинацию буферизации и организации очереди .
В настоящее время наиболее распространенным применением спулинга является печать: документы, отформатированные для печати, сохраняются в очереди со скоростью компьютера, затем извлекаются и печатаются со скоростью принтера. Несколько процессов могут записывать документы в спул без ожидания, а затем выполнять другие задачи, в то время как процесс «спулера» управляет принтером. [1]
Например, когда крупная организация готовит чеки на зарплату, вычисления занимают всего несколько минут или даже секунд, но процесс печати может занять часы. Если бы программа расчета зарплаты печатала чеки напрямую, она не смогла бы перейти к другим вычислениям, пока все чеки не были бы напечатаны. Аналогично, до того, как спулинг был добавлен в операционные системы ПК , текстовые процессоры не могли делать ничего другого, включая взаимодействие с пользователем, во время печати.
Программное обеспечение для управления очередью печати или печати часто включает в себя ряд сопутствующих функций, таких как назначение приоритетов заданиям на печать, уведомление пользователей о завершении печати их документов, распределение заданий на печать между несколькими принтерами, выбор подходящей бумаги для каждого документа и т. д.
Сервер печати применяет методы спулинга, позволяющие нескольким компьютерам совместно использовать один и тот же принтер или группу принтеров.
Диспетчеры печати [b] можно настроить для добавления страницы баннера , также называемой страницей разрыва , листом задания или разделителем принтера , в начало и конец каждого документа и задания. Они отделяют документы друг от друга, идентифицируют каждый документ (например, по его названию ) и часто также указывают, кто его напечатал (например, по имени пользователя или названию задания ). Страницы баннеров ценны в офисных средах, где много людей совместно используют небольшое количество принтеров. Они также ценны, когда одно задание может создавать несколько документов. В зависимости от конфигурации страницы баннеров могут создаваться на каждом клиентском компьютере, на централизованном сервере печати или самим принтером.
На принтерах, использующих фальцованные непрерывные формы, ведущая страница баннера часто печаталась дважды, так что одна копия всегда была лицевой стороной вверх при разделении заданий. Страница могла включать линии, напечатанные поверх сгиба, которые были бы видны по краю стопки отпечатанных документов, позволяя оператору легко разделять задания. Некоторые системы также печатали страницу баннера в конце каждого задания, гарантируя пользователям, что они собрали все свои распечатки.
Буферизация также используется для посредничества в доступе к считывателям перфокарт и перфораторам, магнитным ленточным накопителям и другим медленным последовательным устройствам ввода-вывода. Она позволяет приложению работать на скорости ЦП, одновременно эксплуатируя периферийные устройства на их полной номинальной скорости.
Система пакетной обработки использует буферизацию для поддержания очереди готовых к выполнению задач, которые могут быть запущены, как только у системы появятся ресурсы для их обработки.
Некоторые системы хранения и пересылки сообщений, такие как uucp , использовали термин «spool» для обозначения своих входящих и исходящих очередей сообщений, и эта терминология до сих пор встречается в документации по электронной почте и программному обеспечению Usenet .
Периферийные устройства всегда были намного медленнее основных процессоров. Это было особенно серьезной проблемой для ранних мэйнфреймов . Например, задание, которое считывало перфокарты или генерировало печатный вывод напрямую, было вынуждено выполняться со скоростью медленных механических устройств. Первые программы спулинга, такие как IBM's "SPOOL System" (7070-IO-076), копировали данные с перфокарт на магнитную ленту и с ленты обратно на перфокарты и принтеры. Жесткие диски , которые предлагали более высокую скорость ввода-вывода и поддержку произвольного доступа , начали заменять использование магнитной ленты для спулинга в середине 1960-х годов, а к 1970-м годам в значительной степени заменили ее полностью.
Поскольку оборудование для единичной записи на мэйнфреймах IBM начала 1960-х годов было медленным, для более крупных систем было обычным делом использовать вместо спулинга небольшой автономный компьютер, такой как IBM 1401 .
Термин «spool» может происходить от программного обеспечения Simultaneous Peripheral Operations On-Line [2] [3] (SPOOL); [4] однако, это происхождение неясно. Синхронные периферийные операции on-line могут быть бэкронимом . [5] [ требуется проверка ] Другое объяснение заключается в том, что он относится к «шпулям» или катушкам магнитной ленты, хотя «spool» — нечастое использование.