The user prepares a job (which consists of program, data and some control information), submits it to the computer operator and receives the output after the program is executed. The job is usually punched on cards and the output is usually printed. To speed up processing, jobs with similar needs can be batched together and run as a group. Thus, the operator sorts the programs with similar requirements into batches, runs each batch and sends the output to the programmer. Therefore in a batch operating system there is a lack of interaction between the user and the job while that job is executing.
The operating system is always in memory and its job is to transfer control automatically from one job to the next.
As the I/O devices are slower than the speed of the CPU (the difference may be three orders of magnitude or more), the CPU is often idle. For using the system more efficiently, cards can be read from the card reader onto the disk. The operating system records their location on disk in a table. When a job requests the printer, the output is copied into a system buffer and is written to the disk. When the job is completed, the output is printed. This form of processing is called spooling (simultaneous peripheral operation on line). Spooling is also used for processing data at remote sites. The CPU send the data via communication paths to a remote site and the processing is done with no CPU intervention. The CPU just needs to be notified when the processing is completed, so that it can spool the next batch of data.
Spooling overlaps the I/O of one job with the computation of other jobs. During the execution of one job, the spooler may be reading the input of another job while printing the output of a different job.