Job control (computing)

Last updated

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.

Contents

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

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

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

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:

Job control languages

Batch

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 (JCLs) 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 JCL

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

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.

JCL, 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

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

See also

Related Research Articles

Computer multitasking Concurrent execution of multiple processes

In computing, multitasking is the concurrent execution of multiple tasks over a certain period of time. New tasks can interrupt already started ones before they finish, instead of waiting for them to end. As a result, a computer executes segments of multiple tasks in an interleaved manner, while the tasks share common processing resources such as central processing units (CPUs) and main memory. Multitasking automatically interrupts the running program, saving its state and loading the saved state of another program and transferring control to it. This "context switch" may be initiated at fixed time intervals, or the running program may be coded to signal to the supervisory software when it can be interrupted.

MVS

Multiple Virtual Storage, more commonly called MVS, was the most commonly used operating system on the System/370 and System/390 IBM mainframe computers. IBM developed MVS, along with OS/VS1 and SVS, as a successor to OS/360. It is unrelated to IBM's other mainframe operating system lines, e.g., VSE, VM, TPF.

Operating system Software that manages computer hardware resources

An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.

Computerized batch processing is the running of "jobs that can run without end user interaction, or can be scheduled to run as resources permit."

Computer operating systems (OSes) provide a set of functions needed and used by most application programs on a computer, and the links needed to control and synchronize computer hardware. On the first computers, with no operating system, every program needed the full hardware specification to run correctly and perform standard tasks, and its own drivers for peripheral devices like printers and punched paper card readers. The growing complexity of hardware and application programs eventually made operating systems a necessity for everyday use.

RT-11 is a discontinued small, low-end, single-user real-time operating system for the Digital Equipment Corporation PDP-11 family of 16-bit computers. RT-11, which stands for Real-Time, was first implemented in 1970 and was widely used for real-time systems, process control, and data acquisition across the full line of PDP-11 computers. It was also used for low-cost general-use computing.

Time Sharing Option (TSO) is an interactive time-sharing environment for IBM mainframe operating systems, including OS/360 MVT, OS/VS2 (SVS), MVS, OS/390, and z/OS.

Job Control Language (JCL) is a name for scripting languages used on IBM mainframe operating systems to instruct the system on how to run a batch job or start a subsystem.

Spooling

In computing, spooling is a specialized form of multi-programming for the purpose of copying data between different devices. In contemporary systems, it is usually used for mediating between a computer application and a slow peripheral, such as a printer. Spooling allows programs to "hand off" work to be done by the peripheral and then proceed to other tasks, or to not begin until input has been transcribed. A dedicated program, the spooler, maintains an orderly sequence of jobs for the peripheral and feeds it data at its own rate. Conversely, for slow input peripherals, such as a card reader, a spooler can maintain a sequence of computational jobs waiting for data, starting each job when all of the relevant input is available; see batch processing. The spool itself refers to the sequence of jobs, or the storage area where they are held. In many cases, the spooler is able to drive devices at their full rated speed with minimal impact on other processing.

The Cray Operating System (COS) succeeded Chippewa Operating System and is Cray Research's now discontinued proprietary operating system for its Cray-1 (1976) and Cray X-MP supercomputers, and those platforms' main OS until replaced by UNICOS in the late 1980s. COS was delivered with Cray Assembly Language (CAL), Cray FORTRAN (CFT), and Pascal.

Scientific Data Systems (SDS), was an American computer company founded in September 1961 by Max Palevsky and Robert Beck, veterans of Packard Bell Corporation and Bendix, along with eleven other computer scientists. SDS was an early adopter of integrated circuits in computer design and the first to employ silicon transistors. The company concentrated on larger scientific workload focused machines and sold many machines to NASA during the Space Race. Most machines were both fast and relatively low priced. The company was sold to Xerox in 1969, but dwindling sales due to the oil crisis of 1973–74 caused Xerox to close the division in 1975 at a loss of hundreds of millions of dollars. During the Xerox years the company was officially Xerox Data Systems (XDS), whose machines were the Xerox 500 series.

The Job Entry Subsystem (JES) is a component of IBM's mainframe operating systems that is responsible for managing batch workloads. In modern times, there are two distinct implementations of the Job Entry System called JES2 and JES3. They are designed to provide efficient execution of batch jobs.

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 batch are distinguished and contrasted; see that page for details. Other synonyms include batch system, distributed resource management system (DRMS), distributed resource manager (DRM), and, commonly today, workload automation (WLA). The data structure of jobs to run is known as the job queue.

The System Display and Search Facility (SDSF) component of IBM's mainframe operating system, z/OS, is an interactive user interface that allows users and administrators to view and control various aspects of the mainframe's operation and system resources. Some of the information displayed in SDSF includes Batch job output, Unix processes, scheduling environments, and status of external devices such as printers and network lines. SDSF is primarily used to access the batch and system log files and dumps.

A computer operator is a role in IT which oversees the running of computer systems, ensuring that the machines, and computers are running properly. The job of a computer operator as defined by the United States Bureau of Labor Statistics is to "monitor and control ... and respond to ... enter commands ... set controls on computer and peripheral devices. This Excludes Data Entry."

The Houston Automatic Spooling Priority Program, commonly known as HASP, is an extension of the IBM OS/360 operating system and its successors providing extended support for "job management, data management, task management, and remote job entry."

SDS Sigma series

The SDS Sigma series is a series of third generation computers that were introduced by Scientific Data Systems of the United States in 1966. The first machines in the series are the 16-bit Sigma 2 and the 32-bit Sigma 7; the Sigma 7 was the first 32-bit computer released by SDS. At the time the only competition for the Sigma 7 was the IBM 360.

In a non-interactive computer system, particularly IBM mainframes, a job stream, jobstream, or simply job is the sequence of job control language statements (JCL) and data that comprise a single "unit of work for an operating system". The term job traditionally means a one-off piece of work, and is contrasted with a batch, but non-interactive computation has come to be called "batch processing", and thus a unit of batch processing is often called a job, or by the oxymoronic term batch job; see job for details. Performing a job consists of executing one or more programs. Each program execution, called a job step, jobstep, or step, is usually related in some way to the others in the job. Steps in a job are executed sequentially, possibly depending on the results of previous steps, particularly in batch processing.

The Universal Time-Sharing System (UTS) is a discontinued operating system for the XDS Sigma series of computers, succeeding Batch Processing Monitor (BPM)/Batch Time-Sharing Monitor (BTM). UTS was announced in 1966, but because of delays did not actually ship until 1971. It was designed to provide multi-programming services for online (interactive) user programs in addition to batch-mode production jobs, symbiont (spooled) I/O, and critical real-time processes. System Daemons, called "ghost jobs" were used to run monitor code in user space. The final release, D00, shipped in January, 1973. It was succeeded by the CP-V operating system, which combined UTS with the heavily batch-oriented Xerox Operating System (XOS).

The Xerox 500 series was a line of computers from Xerox Data Systems (XDS) introduced in the early 1970s as backward-compatible upgrades for the Sigma series machines.

References

  1. "Mainframe working after hours: Batch processing".
  2. 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
  3. what Xerox Data Systems and its SDS purchase called its exclamation mark "Operating systems list".
  4. the SLASH SLASH of its JCL, called SLANT SLANT by some. T he 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 a people-oriented lesson. Let this be added to his citations.
  5. 1 2 3 Xerox Real-Time Batch Monitor (RBM), Sigma 2/3 Computers, User's Guide (PDF). Xerox Corporation. Retrieved 2017-02-16.
  6. a family: Scientific Data Systems SDS Sigma 2 & 3, renamed/combined as Xerox's acquired Xerox Data Systems, Xerox 530.
  7. The SDS Sigma 5, 6 & 7 became the Xerox 560
  8. XOs SIGMR 5/7 REAL-TIME BATCH MONITOR (RBM-2) (PDF). Retrieved 2017-02-16.