Content deleted Content added
Stevebroshar (talk | contribs) Specifically call out JCL and Unix-based to make thing clearer and more sustainable |
Stevebroshar (talk | contribs) →Job control languages: Simplify |
||
(5 intermediate revisions by the same user not shown) | |||
Line 4:
|all job control topics |Job control (disambiguation)}}
{{More citations needed|date=August 2017}}
In [[computing]], '''job control''' refers to the automated control of
Job control, a.k.a. [[batch processing]] mostly proceeds without human intervention.<ref>{{cite web
Job control has developed from [[History of computing|the early days of computers]] where human [[Computer operator|operators]] were responsible for setting up, monitoring and controlling every job, to modern [[operating system]]s, which take on the bulk of the work of job control.▼
|url=http://publib.boulder.ibm.com/infocenter/zos/basics/index.jsp?topic=/com.ibm.zos.zmainframe/zconc_batchproc.htm▼
|title=Mainframe working after hours: Batch processing}}</ref> Job control is configured by [[programmer]]s who decide details including:
* When to run a job
* Which files and/or devices to use for input/output
* Whether a file is to be retained or deleted
* The maximum amount of storage that can be used
== History ==
▲Job control has developed from [[History of computing| the early days of computers]]
It became obvious to the early computer developers that their fast machines spent most of the time idle because the single program they were executing had to wait while a slow [[peripheral]] device completed an essential operation such as reading or writing data; in modern terms, programs were [[I/O-bound]], not [[compute-bound]]. [[Data buffer|Buffering]] only provided a partial solution; eventually an output buffer would occupy all available memory or an input buffer would be emptied by the program, and the system would be forced to wait for a relatively slow device to complete an operation.▼
▲
A more general solution is [[Computer multitasking|multitasking]]. More than one running program, or [[Process (computing)|process]], is present in the computer at any given time. If a process is unable to continue, its [[context (computing)|context]] can be stored and the computer can start or resume the execution of another process. At first quite unsophisticated and relying on special programming techniques, multitasking soon became automated, and was usually performed by a special process called the [[Scheduling (computing)|scheduler]], having the ability to interrupt and resume the execution of other processes. Typically a [[device driver|driver]] for a peripheral device suspends execution of the current process if the device is unable to complete an operation immediately, and the scheduler places the process on its [[job queue|queue]] of sleeping jobs. When the peripheral completed the operation the process is re-awakened. Similar suspension and resumption may also apply to [[inter-process communication]], where processes have to communicate with one another in an asynchronous manner but may sometimes have to wait for a reply.▼
▲A more general solution is [[Computer multitasking| multitasking]].
However, this scheduling has drawbacks. A process that seldom waits (i.e. does not use a peripheral) would hog the processor until it completed or was interrupted. Other processes would then be starved of processor resources and might become slow. This can be resolved via [[Preemption (computing)|preemptive]] multitasking, a.k.a. time slicing, in which each process is swapping out after it has had the processor for a period of time. Further, a process can be given a priority that allows it to be given more access to the process relative to lower priority processes.
▲|url=http://publib.boulder.ibm.com/infocenter/zos/basics/index.jsp?topic=/com.ibm.zos.zmainframe/zconc_batchproc.htm
==Language==
▲* under which conditions to skip a step.
===Batch===
Early computer [[resident monitor]]s and [[operating system]]s were relatively primitive and were not capable of sophisticated resource allocation. Typically such allocation decisions were made by the computer operator or the user who submitted a job. [[Batch processing]] was common, and interactive computer systems rare and expensive. Job control languages developed as primitive instructions, typically punched on cards at the head of a deck containing input data, requesting resources such as memory allocation, serial numbers or names of magnetic tape spools to be made available during execution, or assignment of filenames or devices to device numbers referenced by the job. A typical example of this kind of language, still in use on mainframes, is [[IBM]]'s [[Job Control Language]] (also known as JCL). Though the format of early JCLs was intended for [[punched card]] use, the format survived the transition to storage in computer files on disk.
|