Spooling

Last updated
Magnetic recording tape wound onto a spool may have contributed to the origin of the term Largetape.jpg
Magnetic recording tape wound onto a spool may have contributed to the origin of the term

In computing, spooling is a specialized form of multi-programming for the purpose of copying data between different devices. In contemporary systems, [lower-alpha 1] it is usually used for mediating between a computer application and a slow peripheral, such as a printer. Spooling allows programs to "hand off" work to be done by the peripheral and then proceed to other tasks, or to not begin until input has been transcribed. A dedicated program, the spooler, maintains an orderly sequence of jobs for the peripheral and feeds it data at its own rate. Conversely, for slow input peripherals, such as a card reader, a spooler can maintain a sequence of computational jobs waiting for data, starting each job when all of the relevant input is available; see batch processing. The spool itself refers to the sequence of jobs, or the storage area where they are held. In many cases, the spooler is able to drive devices at their full rated speed with minimal impact on other processing.

Contents

Spooling is a combination of buffering and queueing.

Nowadays, the most common use of spooling is printing: documents formatted for printing are stored in a queue at the speed of the computer, then retrieved and printed at the speed of the printer. Multiple processes can write documents to the spool without waiting, and can then perform other tasks, while the "spooler" process operates the printer. [1]

For example, when a large organization prepares payroll cheques, the computation takes only a few minutes or even seconds, but the printing process might take hours. If the payroll program printed cheques directly, it would be unable to proceed to other computations until all the cheques were printed. Similarly, before spooling was added to PC operating systems, word processors were unable to do anything else, including interact with the user, while printing.

Spooler or print management software often includes a variety of related features, such as allowing priorities to be assigned to print jobs, notifying users when their documents have been printed, distributing print jobs among several printers, selecting appropriate paper for each document, etc.

A print server applies spooling techniques to allow many computers to share the same printer or group of printers.

Sample banner page generated by TSS/370 Example Banner Page.png
Sample banner page generated by TSS/370

Print spoolers [lower-alpha 2] can be configured to add a banner page, also called a burst page, job sheet, or printer separator, to the beginning and end of each document and job. These separate documents from each other, identify each document (e.g. with its title) and often also state who printed it (e.g. by username or job name). Banner pages are valuable in office environments where many people share a small number of printers. They are also valuable when a single job can produce multiple documents. Depending on the configuration, banner pages might be generated on each client computer, on a centralized print server, or by the printer itself.

On printers using fanfold continuous forms a leading banner page would often be printed twice, so that one copy would always be face-up when the jobs were separated. The page might include lines printed over the fold, which would be visible along the edge of a stack of printed output, allowing the operator to easily separate the jobs. Some systems would also print a banner page at the end of each job, assuring users that they had collected all of their printout.

Other applications

Spooling is also used to mediate access to punched card readers and punches, magnetic tape drives, and other slow, sequential I/O devices. It allows the application to run at the speed of the CPU while operating peripheral devices at their full rated speed.

A batch processing system uses spooling to maintain a queue of ready-to-run tasks, which can be started as soon as the system has the resources to process them.

Some store and forward messaging systems, such as uucp, used "spool" to refer to their inbound and outbound message queues, and this terminology is still found in the documentation for email and Usenet software.

History

Peripheral devices have always been much slower than core processing units. This was an especially severe problem for early mainframes. For example, a job which read punched cards or generated printed output directly was forced to run at the speed of the slow mechanical devices. The first spooling programs, such as IBM's "SPOOL System" (7070-IO-076) copied data from punched cards to magnetic tape, and from tape back to punched cards and printers. Hard disks, which offered faster I/O speeds and support for random access, started to replace the use of magnetic tape for spooling in the middle 1960s, and by the 1970s had largely replaced it altogether.

Because the unit record equipment on IBM mainframes of the early 1960s was slow, it was common for larger systems to use a small offline computer such as an IBM 1401 instead of spooling.

The term "spool" may originate with the Simultaneous Peripheral Operations On-Line [2] [3] (SPOOL) software; [4] this derivation is uncertain, however. Simultaneous peripheral operations on-line may be a backronym. [5] [ verification needed ] Another explanation is that it refers to "spools" or reels of magnetic tape, although “spool” is an uncommon usage.

List of spooling systems

Notes

  1. In the past it was used to, e.g., copy a deck of cards unrelated to a computer application.
  2. Punch spoolers also supported banner cards.

Related Research Articles

<span class="mw-page-title-main">IBM System/360</span> IBM mainframe computer family (1964–1977)

The IBM System/360 (S/360) is a family of mainframe computer systems that was announced by IBM on April 7, 1964, and delivered between 1965 and 1978. It was the first family of computers designed to cover both commercial and scientific applications and a complete range of applications from small to large. The design distinguished between architecture and implementation, allowing IBM to release a suite of compatible designs at different prices. All but the only partially compatible Model 44 and the most expensive systems use microcode to implement the instruction set, featuring 8-bit byte addressing and fixed point binary, fixed point decimal and hexadecimal floating-point calculations.

Computerized batch processing is a method of running software programs called jobs in batches automatically. While users are required to submit the jobs, no other interaction by the user is required to process the batch. Batches may automatically be run at scheduled times as well as being run contingent on the availability of computer resources.

Job Control Language (JCL) is a name for scripting languages used on IBM mainframe operating systems to instruct the system on how to run a batch job or start a subsystem. The purpose of JCL is to say which programs to run, using which files or devices for input or output, and at times to also indicate under what conditions to skip a step. Parameters in the JCL can also provide accounting information for tracking the resources used by a job as well as which machine the job should run on.

<span class="mw-page-title-main">IBM 1403</span> High speed line printer, introduced in 1959 and used into the 1970s

The IBM 1403 line printer was introduced as part of the IBM 1401 computer in 1959 and had an especially long life in the IBM product line.

This article discusses support programs included in or available for OS/360 and successors. IBM categorizes some of these programs as utilities and others as service aids; the boundaries are not always consistent or obvious. Many, but not all, of these programs match the types in utility software.

The Job Entry Subsystem (JES) is a component of IBM's MVS mainframe operating systems that is responsible for managing batch workloads. In modern times, there are two distinct implementations of the Job Entry System called JES2 and JES3. They are designed to provide efficient execution of batch jobs.

Remote job entry, or Remote Batch, is the procedure for sending requests for non-interactive data processing tasks (jobs) to mainframe computers from remote workstations, and by extension the process of receiving the output from such jobs at a remote workstation.

<span class="mw-page-title-main">IBM 7070</span> Decimal computer introduced by IBM in 1958

IBM 7070 is a decimal-architecture intermediate data-processing system that was introduced by IBM in 1958. It was part of the IBM 700/7000 series, and was based on discrete transistors rather than the vacuum tubes of the 1950s. It was the company's first transistorized stored-program computer.

A computer operator is a role in IT which oversees the running of computer systems, ensuring that the machines, and computers are running properly. The job of a computer operator as defined by the United States Bureau of Labor Statistics is to "monitor and control ... and respond to ... enter commands ... set controls on computer and peripheral devices. This Excludes Data Entry."

<span class="mw-page-title-main">IBM 2540</span>

The IBM 2540 is a punched-card computer peripheral manufactured by IBM Corporation for use of System/360 and later computer systems. The 2540 was designed by IBM's Data Processing Division in Rochester, Minnesota, and was introduced in 1965. The 2540 can read punched-cards at 1000 cards per minute (CPM) and punch at 300 CPM. The 2540 is based on the design of the older, slightly slower, 1402.

The Houston Automatic Spooling Priority Program, commonly known as HASP, is an extension of the IBM OS/360 operating system and its successors providing extended support for "job management, data management, task management, and remote job entry."

The IBM 2780 and the IBM 3780 are devices developed by IBM for performing remote job entry (RJE) and other batch functions over telephone lines; they communicate with the mainframe via Binary Synchronous Communications and replaced older terminals using synchronous transmit-receive (STR). In addition, IBM has developed workstation programs for the 1130, 360/20, 2922, System/360 other than 360/20, System/370 and System/3.

BESYS was an early computing environment originally implemented as a batch processing operating system in 1957 at Bell Labs for the IBM 704 computer.

<span class="mw-page-title-main">Punched card input/output</span> Computer peripheral device

A computer punched card reader or just computer card reader is a computer input device used to read computer programs in either source or executable form and data from punched cards. A computer card punch is a computer output device that punches holes in cards. Sometimes computer punch card readers were combined with computer card punches and, later, other devices to form multifunction machines.

Input/Output Control System (IOCS) is any of several packages on early IBM entry-level and mainframe computers that provided low level access to records on peripheral equipment. IOCS provides functionality similar to 1960s packages from other vendors, e.g., File Control Processor (FCP) in RCA 3301 Realcom Operating System, GEFRC in GECOS, and to the later Record Management Services (RMS) in DEC VAX/VMS

<span class="mw-page-title-main">IBM System/360 Model 20</span> Low-end IBM computer model from 1960s

The IBM System/360 Model 20 is the smallest member of the IBM System/360 family announced in November 1964. The Model 20 supports only a subset of the System/360 instruction set, with binary numbers limited to 16 bits and no floating point. In later years it would have been classified as a 16-bit minicomputer rather than a mainframe, but the term "minicomputer" was not current, and in any case IBM wanted to emphasize the compatibility of the Model 20 rather than its differences from the rest of the System/360 line. It does, however, have the full System/360 decimal instruction set, that allows for addition, subtraction, product, and dividend of up to 31 decimal digits.

Attached Support Processor (ASP) was an implementation of loosely coupled multiprocessing for IBM's OS/360 operating system. IBM later changed the name to Asymmetrical multiProcessor but retained the acronym ASP.

Job Entry Subsystem (JES), aka Job Entry Subsystem 1 (JES1), was released by IBM as an integral part of OS/VS1 as an enhancement to the basic functions that users of VS1's predecessor, MFT, had.

IBM 2245 Kanji Printer was the line printer of the IBM Kanji System, announced in 1971, that allowed printing of Japanese text on IBM System/360 and System/370 mainframe computers. Later, it would also support printing of Korean and Traditional Chinese text.

References

  1. Lundin, Leigh; Stoneman, Don (1977). The Spooler User Guide (2 ed.). Harrisonburg: DataCorp of Virginia.
  2. IBM 7070 SPOOL System, 7070 Data Processing System Bulletins (Second ed.), IBM, J28-6047-1
  3. Donovan, John J. (1972). Systems Programming. p. 405. ISBN   0-07-085175-1.
  4. James L. Peterson; Abraham Silberschatz (July 1984). "1.4.3 Spooling". Operating System Concepts. Addison-Wesley. p. 18. ISBN   0-201-06097-3.
  5. Tanenbaum, Andrew S. Modern Operating Systems. 3rd Ed. Pearson Education, Inc., 2008. ISBN   978-0-13-600663-3
  6. IBM System/360 and System/370 Asymmetric Multiprocessing System: General Information Manual, Program Number 360A-CX-15X, IBM, GH20-1173
  7. The HASP System, February 26, 1971 HASP II (360D-05.1-014) V3M1, Version 3 Modification Level 1, IBM, February 26, 1971
  8. z/OS V1R9.0 JES2 Introduction, IBM, SA22-7535-06
  9. JES3 Overview (First ed.), IBM, December 1980, SC23-0040-0
  10. DOS/VS POWER/VS Installation and Operations (PDF) (Second ed.), IBM, September 1974, GC33-5403-1
  11. Virtual Storage Extended / Priority Output Writers, Execution Processors and Input Readers; VSE/POWER - 5686-CF9-03
  12. CP-V Software: Concepts and Facilities Manual (PDF). Honeywell. 1976. p. 2-7. Retrieved December 6, 2023.