The term "batch processing" originates in the traditional classification of
methods of production as
job production (one-off production),
batch production (production of a "batch" of multiple items at once, one stage at a time), and
flow production (mass production, all stages in process at once).
Early history Early computers were capable of running only one program at a time. Each user had sole control of the machine for a scheduled period of time. They would arrive at the computer with program and data, often on
punched paper cards and magnetic or paper tape, and would load their program, run and debug it, and carry off their output when done. As computers became faster the setup and takedown time became a larger percentage of available computer time. Programs called
monitors, the forerunners of
operating systems, were developed which could process a series, or "batch", of programs, often from
magnetic tape prepared
offline. The monitor would be loaded into the computer and run the first job of the batch. At the end of the job it would regain control and load and run the next until the batch was complete. Often the output of the batch would be written to magnetic tape and printed or punched offline. Examples of monitors were IBM's
Fortran Monitor System, SOS (Share Operating System), and finally
IBSYS for IBM's
709x systems in 1960.
Third-generation systems capable of
multiprogramming began to appear in the 1960s. Instead of running one batch job at a time, these systems can have multiple batch programs running at the same time in order to keep the system as busy as possible. One or more programs might be awaiting input, one actively running on the CPU, and others generating output. Instead of offline input and output, programs called
spoolers read jobs from cards, disk, or remote terminals and place them in a
job queue to be run. In order to prevent
deadlocks the
job scheduler needs to know each job's resource requirements—memory, magnetic tapes, mountable
disks, etc., so various scripting languages were developed to supply this information in a structured way. Probably the most well-known is IBM's
Job Control Language (JCL). Job schedulers select jobs to run according to a variety of criteria, including priority, memory size, etc.
Remote batch is a procedure for submitting batch jobs from remote terminals, often equipped with a
punch card reader and a
line printer. Sometimes
asymmetric multiprocessing is used to spool batch input and output for one or more large computers using an attached smaller and less-expensive system, as in the IBM System/360
Attached Support Processor.
Later history NOS batch file to get the file STARTRK and output it to the card punch The first general-purpose time-sharing system,
Compatible Time-Sharing System (CTSS), was compatible with batch processing. This facilitated transitioning from batch processing to
interactive computing. From the late 1960s onwards, interactive computing such as via text-based
computer terminal interfaces (as in
Unix shells or
read-eval-print loops), and later
graphical user interfaces became common. Non-interactive computation, both one-off jobs such as compilation, and processing of multiple items in batches, became retrospectively referred to as
batch processing, and the term
batch job (in early use often "batch
of jobs") became common. Early use is particularly found at the
University of Michigan, around the
Michigan Terminal System (MTS). Although timesharing did exist, its use was not robust enough for corporate data processing; none of this was related to the earlier
unit record equipment, which was human-operated.
Ongoing Non-interactive computation remains widespread in computing, both for general data processing and for system "housekeeping" tasks (using
system software). A high-level program (executing multiple programs, with some additional "glue" logic) is today most often called a
script, and written in
scripting languages, particularly
shell scripts for system tasks; in
IBM PC DOS and
MS-DOS this is instead known as a
batch file. That includes
UNIX-based computers,
Microsoft Windows,
macOS (whose foundation is the
BSD Unix kernel), and even
smartphones. A running script, particularly one executed from an interactive
login session, is often known as a
job, but that term is used very ambiguously. "There is no direct counterpart to z/OS batch processing in PC or UNIX systems. Batch jobs are typically executed at a scheduled time or on an as-needed basis. Perhaps the closest comparison is with processes run by an
at or
cron command in UNIX, although the differences are significant." == Modern systems ==