Job control (computing): Difference between revisions
mNo edit summary |
removed extra whitespaces and a rotted link, replaced with new external link, added a hyperlink, rephrased a bit |
||
(23 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
{{ |
{{About|Job control in non-IBM (mainframe) computing|IBM, Unix or non-computing |Job control (disambiguation){{!}}Job control}} |
||
{{ |
{{More citations needed|date=August 2017}} |
||
In [[computing]] '''job control''' refers to the control of multiple tasks or [[Job ( |
In [[computing]], '''job control''' refers to the control of multiple tasks or [[Job (computing)|jobs]] on a [[Computer|computer system]], ensuring that they each have access to adequate resources to perform correctly, that competition for limited resources does not cause a [[Deadlock (computer science)|deadlock]] where two or more jobs are unable to complete, resolving such situations where they do occur, and terminating jobs that, for any reason, are not performing as expected. |
||
Job control has developed from 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. |
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. |
||
Even with a highly sophisticated scheduling system, some human intervention is desirable. |
Even with a highly sophisticated scheduling system, some human intervention is desirable. Modern systems permit their users to stop and resume jobs, to execute them in the foreground (with the ability to interact with the user) or in the background. [[Job control (Unix)|Unix-like systems follow this pattern]]. |
||
==History== |
== History == |
||
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. |
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]]. |
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. |
||
However this low-level scheduling has its drawbacks. |
However this low-level scheduling has its drawbacks. A process that seldom needs to interact with peripherals or other processes would simply hog processor resource until it completed or was halted by manual intervention. The result, particularly for interactive systems running tasks that frequently interact with the outside world, is that the system is sluggish and slow to react in a timely manner. This problem is resolved by allocating a "timeslice" to each process, a period of uninterrupted execution after which the scheduler automatically puts it on the sleep queue. Process could be given different priorities, and the scheduler could then allocate varying shares of available execution time to each process on the basis of the assigned priorities. |
||
This system of [[Preemption (computing)|pre-emptive]] multitasking forms the basis of most modern job control systems. |
This system of [[Preemption (computing)|pre-emptive]] multitasking forms the basis of most modern job control systems. |
||
=={{anchor}}Batch processing== |
|||
{{main article|Batch processing}} |
|||
While batch processing can run around the clock, with or without computer operators,<ref>{{cite web |
|||
|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> since the computer is much faster than a person, most decision-making occurs before the job even begins to run, and requires planning by the "programmer." |
|||
=== Batch-oriented features === |
|||
Although a computer operator may be present, batch processing is intended to mostly operate without human intervention. Therefore, many details must be included in the submitted instructions: |
|||
* which programs to run; |
|||
* which files and/or devices to use for input/output;<ref>and many more details, such as whether the file is to be retained or deleted, the maximum of disk space to which it can grow, the name of a tape to be pre-mounted</ref> |
|||
* 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. |
||
====BANG and other non-IBM JCLs==== |
|||
Non-IBM mainframe [[batch processing|batch]] systems had some form of job control language, whether called that or not; their syntax was completely different from IBM versions, but they usually provided similar capabilities. [[Interactive computing|Interactive]] systems include "[[command language]]s"—command files (such as PCDOS ".bat" files) can be run non-interactively, but these usually do not provide as robust an environment for running unattended jobs as JCL. On some computer systems the job control language and the interactive command language may be different. For example, [[Time Sharing Option|TSO]] on z/OS systems uses [[CLIST]] or [[Rexx]] as command languages along with JCL for batch work. On other systems these may be the same. |
|||
The Non-IBM JCL of what at one time was known as ''the BUNCH'' (Burroughs, Univac/Unisys, NCR, Control Data, Honeywell), except for [[Unisys]], are part of the BANG<ref>what Xerox Data Systems and its SDS purchase called its ''exclamation mark'' {{cite web |title=Operating systems list |url=https://sites.google.com/site/thanhphong37vn/interview-questions-guide/operating-system/operating-systems-list}}</ref><ref>the SLASH SLASH of its JCL, called ''SLANT SLANT'' by some. The remainder of this footnote is a reminder, dedicated to the first person from whom I heard SLANT SLANT, the late senior computer operator and retired Military Officer who taught many people-oriented lessons. Let this be added to his citations.</ref> that has been quieted. |
|||
===Interactive=== |
|||
⚫ | As time sharing systems developed, interactive job control emerged. An end-user in a time sharing system could submit a job interactively from his remote [[computer terminal|terminal]] ([[remote job entry]]), communicate with the operators to warn them of special requirements, and query the system as to its progress. He could assign a priority to the job, and terminate (kill) it if desired. He could also, naturally, run a job in the foreground, where he would be able to communicate directly with the executing program. During interactive execution he could interrupt the job and let it continue in the background or kill it. This development of [[interactive computing]] in a multitasking environment led to the development of the modern [[shell (computing)|shell]]. |
||
=== File systems and device independence === |
|||
The ability to not have to specify part or all of the information about a file or device to be used by a given program is called ''device independence''. |
|||
==Real-time computing== |
==Real-time computing== |
||
{{main article|Real-time computing}} |
{{main article|Real-time computing}} |
||
⚫ | Pre-emptive multitasking with job control assures that a system operates in a timely manner ''most of the time''. In some environments (for instance, operating expensive or dangerous machinery), a strong design constraint of the system is the delivery of timely results in all circumstances. In such circumstances, job control is more complex and the role of scheduling is more important. |
||
Since real-time systems do event-driven scheduling for all real-time operations, "the sequence of these real-time operations is not under the immediate control of a computer operator or programmer."<ref name=X23>{{cite book |
|||
⚫ | Pre-emptive multitasking with job control assures that a system operates in a timely manner ''most of the time''. |
||
|url=http://www.bitsavers.org/pdf/sds/sigma/16-bit/rbm/901785A_Real-Time_Batch_Monitor_Users_Guide_Jan72.pdf |
|||
|title=Xerox Real-Time Batch Monitor (RBM), Sigma 2/3 Computers, User's Guide |
|||
|publisher=Xerox Corporation |accessdate=2017-02-16}}</ref> |
|||
However, a system may have the ability to interleave real-time and other, less time-critical tasks, where the dividing line might for example be response required within one tenth of a second.<ref name=X23/>{{rp|p.1}} In the case of the Xerox RBM (Real-time/Batch Monitor) systems,<ref>a family: Scientific Data Systems SDS Sigma 2 & 3, renamed/combined as Xerox's acquired Xerox Data Systems, Xerox 530.</ref><ref>The SDS Sigma 5, 6 & 7 became the Xerox 560</ref><ref>{{cite book |
|||
⚫ | |||
|url=https://computerarchive.org/files/mirror/www.bitsavers.org/pdf/sds/sigma/rbm/901581A_Sigma5_RBM-2_Nov69.pdf |
|||
⚫ | Early computer [[resident monitor]]s and [[operating system]]s were relatively primitive and were not capable of sophisticated resource allocation. |
||
|title=XOs SIGMR 5/7 REAL-TIME BATCH MONITOR (RBM-2)|accessdate=2017-02-16}}</ref> for example, two other capabilities existed:<ref name=X23/>{{rp|p.2}} |
|||
* computer operator commands ("unsolicited key-in"); |
|||
* background job streams ([[#Batch processing|batch jobs]]). |
|||
== External links == |
|||
⚫ | As time sharing systems developed, interactive job control emerged. |
||
⚫ | |||
==See also== |
== See also == |
||
* [[Command language]] |
* [[Command language]] |
||
* [[Job Control Language]] |
* [[Job Control Language]] |
||
* [[Job control (Unix)]] |
* [[Job control (Unix)]] |
||
== |
== References == |
||
{{reflist}} |
|||
⚫ | |||
[[Category:Computing terminology]] |
[[Category:Computing terminology]] |
Latest revision as of 23:54, 29 September 2024
This article needs additional citations for verification. (August 2017) |
In computing, job control refers to the control of multiple tasks or jobs on a computer system, ensuring that they each have access to adequate resources to perform correctly, that competition for limited resources does not cause a deadlock where two or more jobs are unable to complete, resolving such situations where they do occur, and terminating jobs that, for any reason, are not performing as expected.
Job control has developed from the early days of computers where human operators were responsible for setting up, monitoring and controlling every job, to modern operating systems, which take on the bulk of the work of job control.
Even with a highly sophisticated scheduling system, some human intervention is desirable. Modern systems permit their users to stop and resume jobs, to execute them in the foreground (with the ability to interact with the user) or in the background. Unix-like systems follow this pattern.
History
[edit]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. 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 multitasking. More than one running program, or process, is present in the computer at any given time. If a process is unable to continue, its 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 scheduler, having the ability to interrupt and resume the execution of other processes. Typically a 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 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.
However this low-level scheduling has its drawbacks. A process that seldom needs to interact with peripherals or other processes would simply hog processor resource until it completed or was halted by manual intervention. The result, particularly for interactive systems running tasks that frequently interact with the outside world, is that the system is sluggish and slow to react in a timely manner. This problem is resolved by allocating a "timeslice" to each process, a period of uninterrupted execution after which the scheduler automatically puts it on the sleep queue. Process could be given different priorities, and the scheduler could then allocate varying shares of available execution time to each process on the basis of the assigned priorities.
This system of pre-emptive multitasking forms the basis of most modern job control systems.
Batch processing
[edit]While batch processing can run around the clock, with or without computer operators,[1] since the computer is much faster than a person, most decision-making occurs before the job even begins to run, and requires planning by the "programmer."
Batch-oriented features
[edit]Although a computer operator may be present, batch processing is intended to mostly operate without human intervention. Therefore, many details must be included in the submitted instructions:
- which programs to run;
- which files and/or devices to use for input/output;[2]
- under which conditions to skip a step.
Job control languages
[edit]Batch
[edit]Early computer resident monitors and operating systems 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.
BANG and other non-IBM JCLs
[edit]Non-IBM mainframe batch systems had some form of job control language, whether called that or not; their syntax was completely different from IBM versions, but they usually provided similar capabilities. Interactive systems include "command languages"—command files (such as PCDOS ".bat" files) can be run non-interactively, but these usually do not provide as robust an environment for running unattended jobs as JCL. On some computer systems the job control language and the interactive command language may be different. For example, TSO on z/OS systems uses CLIST or Rexx as command languages along with JCL for batch work. On other systems these may be the same.
The Non-IBM JCL of what at one time was known as the BUNCH (Burroughs, Univac/Unisys, NCR, Control Data, Honeywell), except for Unisys, are part of the BANG[3][4] that has been quieted.
Interactive
[edit]As time sharing systems developed, interactive job control emerged. An end-user in a time sharing system could submit a job interactively from his remote terminal (remote job entry), communicate with the operators to warn them of special requirements, and query the system as to its progress. He could assign a priority to the job, and terminate (kill) it if desired. He could also, naturally, run a job in the foreground, where he would be able to communicate directly with the executing program. During interactive execution he could interrupt the job and let it continue in the background or kill it. This development of interactive computing in a multitasking environment led to the development of the modern shell.
File systems and device independence
[edit]The ability to not have to specify part or all of the information about a file or device to be used by a given program is called device independence.
Real-time computing
[edit]Pre-emptive multitasking with job control assures that a system operates in a timely manner most of the time. In some environments (for instance, operating expensive or dangerous machinery), a strong design constraint of the system is the delivery of timely results in all circumstances. In such circumstances, job control is more complex and the role of scheduling is more important.
Since real-time systems do event-driven scheduling for all real-time operations, "the sequence of these real-time operations is not under the immediate control of a computer operator or programmer."[5]
However, a system may have the ability to interleave real-time and other, less time-critical tasks, where the dividing line might for example be response required within one tenth of a second.[5]: p.1 In the case of the Xerox RBM (Real-time/Batch Monitor) systems,[6][7][8] for example, two other capabilities existed:[5]: p.2
- computer operator commands ("unsolicited key-in");
- background job streams (batch jobs).
External links
[edit]See also
[edit]References
[edit]- ^ "Mainframe working after hours: Batch processing".
- ^ and many more details, such as whether the file is to be retained or deleted, the maximum of disk space to which it can grow, the name of a tape to be pre-mounted
- ^ what Xerox Data Systems and its SDS purchase called its exclamation mark "Operating systems list".
- ^ the SLASH SLASH of its JCL, called SLANT SLANT by some. The remainder of this footnote is a reminder, dedicated to the first person from whom I heard SLANT SLANT, the late senior computer operator and retired Military Officer who taught many people-oriented lessons. Let this be added to his citations.
- ^ a b c Xerox Real-Time Batch Monitor (RBM), Sigma 2/3 Computers, User's Guide (PDF). Xerox Corporation. Retrieved 2017-02-16.
- ^ a family: Scientific Data Systems SDS Sigma 2 & 3, renamed/combined as Xerox's acquired Xerox Data Systems, Xerox 530.
- ^ The SDS Sigma 5, 6 & 7 became the Xerox 560
- ^ XOs SIGMR 5/7 REAL-TIME BATCH MONITOR (RBM-2) (PDF). Retrieved 2017-02-16.