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