In
computing
Computing is any goal-oriented activity requiring, benefiting from, or creating computer, computing machinery. It includes the study and experimentation of algorithmic processes, and the development of both computer hardware, hardware and softw ...
, a job is a unit of work or unit of execution (that performs said work). A component of a job (as a unit of work) is called a ''
task'' or a ''step'' (if sequential, as in a
job stream). As a unit of execution, a job may be concretely identified with a single
process
A process is a series or set of activities that interact to produce a result; it may occur once-only or be recurrent or periodic.
Things called a process include:
Business and management
* Business process, activities that produce a specific s ...
, which may in turn have subprocesses (
child process
A child process (CP) in computing is a process created by another process (the parent process). This technique pertains to multitasking operating systems, and is sometimes called a subprocess or traditionally a subtask.
There are two major proce ...
es; the process corresponding to the job being the
parent process
In computing, a parent process is a process that has created one or more child processes.
Unix-like systems
In Unix-like operating systems, every process except (the swapper) is created when another process executes the fork() system call. T ...
) which perform the tasks or steps that comprise the work of the job; or with a
process group; or with an abstract reference to a process or process group, as in
Unix job control.
Jobs can be started interactively, such as from a
command line
A command-line interface (CLI) is a means of interacting with software via command (computing), commands each formatted as a line of text. Command-line interfaces emerged in the mid-1960s, on computer terminals, as an interactive and more user ...
, or scheduled for non-interactive execution by a
job scheduler
A job scheduler is a computer application for controlling unattended background program execution of jobs. This is commonly called batch scheduling, as execution of non-interactive jobs is often called batch processing, though traditional ''job ...
, and then controlled via automatic or manual
job control. Jobs that have finite input can complete, successfully or unsuccessfully, or fail to complete and eventually be terminated. By contrast, online processing such as by
servers has open-ended input (they service requests as long as they run), and thus never complete, only stopping when terminated (sometimes called "canceled"): a server's job is never done.
History
The term "job" has a traditional meaning as "piece of work", from
Middle English
Middle English (abbreviated to ME) is a form of the English language that was spoken after the Norman Conquest of 1066, until the late 15th century. The English language underwent distinct variations and developments following the Old English pe ...
"jobbe of work", and is used as such in manufacturing, in the phrase "
job production", meaning "custom production", where it is contrasted with
batch production
Batch production is a method of manufacturing in which products are made as specified groups or amounts, within a time frame. A batch can go through a series of steps in a large manufacturing process to make the final desired product. Batch produ ...
(many items at once, one step at a time) and
flow production (many items at once, all steps at the same time, by item). Note that these distinctions have become blurred in computing, where the oxymoronic term "
batch job" is found, and used either for a one-off job or for a round of "
batch processing
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 ...
" (same processing step applied to many items at once, originally
punch card
A punched card (also punch card or punched-card) is a stiff paper-based medium used to store digital information via the presence or absence of holes in predefined positions. Developed over the 18th to 20th centuries, punched cards were wide ...
s).
In this sense of "job", a programmable computer performs "jobs", as each one can be different from the last. The term "job" is also common in
operations research
Operations research () (U.S. Air Force Specialty Code: Operations Analysis), often shortened to the initialism OR, is a branch of applied mathematics that deals with the development and application of analytical methods to improve management and ...
, predating its use in computing, in such uses as
job shop scheduling (see, for example and references thereof from throughout the 1950s, including several "''System Research Department Reports''" from IBM Research Center). This analogy is applied to computer systems, where the
system resource
In computing, a system resource, or simply resource, is any physical or virtual component of limited availability that is accessible to a computer. All connected devices and internal system components are resources. Virtual system resources in ...
s are analogous to machines in a
job shop, and the goal of scheduling is to minimize the total time from beginning to end (
makespan). The term "job" for computing work dates to the mid 1950s, as in this use from 1955:
'
The term continued in occasional use, such as for the
IBM 709
The IBM 709 is a computer system that was announced by IBM in January 1957 and first installed during August 1958. The 709 was an improved version of its predecessor, the IBM 704, and was the third of the IBM 700/7000 series of scientific compute ...
(1958), and in wider use by early 1960s, such as for the
IBM 7090
The IBM 7090 is a second-generation Transistor computer, transistorized version of the earlier IBM 709 vacuum tube mainframe computer that was designed for "large-scale scientific and technological applications". The 7090 is the fourth member o ...
, with widespread use from the
Job Control Language
Job Control Language (JCL) is a scripting language used on IBM mainframe operating systems to instruct the system on how to run a batch processing, batch job or start a subsystem. The purpose of JCL is to say which programs to run, using which fi ...
of
OS/360
OS/360, officially known as IBM System/360 Operating System, is a discontinued batch processing operating system developed by IBM for their then-new System/360 mainframe computer, announced in 1964; it was influenced by the earlier IBSYS/IBJOB a ...
(announced 1964). A standard early use of "job" is for compiling a program from source code, as this is a one-off task. The compiled program can then be run on batches of data.
See also
*
Job queue
In system software, a job queue ( batch queue, input queue), is a data structure maintained by job scheduler software containing jobs to run.
Users submit their programs that they want executed, "jobs", to the queue for batch processing.
The ...
*
Job scheduler
A job scheduler is a computer application for controlling unattended background program execution of jobs. This is commonly called batch scheduling, as execution of non-interactive jobs is often called batch processing, though traditional ''job ...
*
Remote job entry
Further reading
*
References
{{Reflist
Computing terminology
Job scheduling