Input/Output Supervisor

Last updated

The Input/Output Supervisor (IOS) [1] is that portion of the control program in the IBM mainframe OS/360 operating system and successors which issues the privileged I/O instructions and supervises the resulting I/O interruptions for any program which requests I/O device operations until the normal or abnormal conclusion of those operations.

Contents

Purposes

IOS has two purposes:

Program sections

To facilitate the handling of the I/O requests and interrupts, IOS is divided into two primary program sections (CSECTs):

These primary sections are resident in main storage and provide control program support for the normal execution of channel programs.

The secondary program sections (also CSECTs), termed Error Recovery Procedures (ERPs), are, with but one exception, located on external storage, and are brought into main storage for recovery from the abnormal execution of channel programs. In the early instances of the OS, these sections were brought into the Input/Output Supervisor's "transient area", not unlike the OS/360 Control Program's Supervisor Call "transient areas". In post-MVT instances of the OS, these sections are located in the pageable linkpack area (PLPA) and are demand-paged.

The sole exception is, of course, the ERP for direct-access storage devices, which must always remain resident in order to recover from possible I/O errors on the IPL volume and on other volumes which contain datasets which may be concatenated with certain system datasets.

Multiprogramming

IOS is designed around a multi-programming concept whereby operations on different I/O channels, control units and devices may be managed concurrently and apparently simultaneously. This concurrency and apparent simultaneity is present even in the most basic version of the OS, PCP, which otherwise supports only one user task, as the underlying hardware architecture has but one set of I/O instructions and but one I/O interruption, for accessing the devices and for accessing the resulting device status, respectively, available to support all attached I/O devices, hence all I/O device operations must be synchronously multiplexed in to the half-dozen privileged I/O instructions and asynchronously de-multiplexed out from the single I/O interrupt by IOS [NB 1] yet this entire process, from start to finish, is made to appear to be synchronous to the application. Essentially, IOS is a hypervising operating system built on top of the OS itself, and entirely within it, not as a separable function. A very specialized hypervisor, to be sure, as the hypervisation is restricted to the several I/O instructions and the one I/O interruption.

Multiprocessing

In MVS/370 and later instances of the OS, IOS is also designed around a multi-processing concept whereby all available processors, as many as two in MVS/370 and as many as sixteen in later instances of the OS (twelve were supported by IBM; sixteen were supported by Amdahl), are effectively and efficiently utilized. And, to best utilize this multi-processing capability, IOS's multi-programming implementation was partitioned into smaller executable units, in particular those which may be executed under the control of an SRB.

Initiation/Completion

IOS is not invoked directly by the programmer. Rather, IOS is invoked through "branch entries" to start I/O requests and through "interrupt handlers" to complete I/O requests.

Notes

  1. Historically, this multiplexing/de-multiplexing was aided by a specialized control block, private to IOS and its components, the so-called "twelve star" (abbreviated, 12*) in pre-MVT incarnations of OS/360 and the so-called "sixteen star" (abbreviated, 16*) in MVT, but still called a "twelve star" in most cases. "Sixteen stars" remained in the EXCP processor of MVS/370 for compatibility purposes, but these private control blocks became less significant as more of IOS's function was off-loaded to the I/O channels themselves in post-MVS/370 incarnations of the hardware and software.

Related Research Articles

<span class="mw-page-title-main">MVS</span> Operating system for IBM mainframes

Multiple Virtual Storage, more commonly called MVS, is the most commonly used operating system on the System/370, System/390 and IBM Z 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.

<span class="mw-page-title-main">IBM System/360</span> IBM mainframe computer family (1964–1977)

The IBM System/360 (S/360) is a family of mainframe computer systems that was announced by IBM on April 7, 1964, and delivered between 1965 and 1978. It was the first family of computers designed to cover both commercial and scientific applications and a complete range of applications from small to large. The design distinguished between architecture and implementation, allowing IBM to release a suite of compatible designs at different prices. All but the only partially compatible Model 44 and the most expensive systems use microcode to implement the instruction set, featuring 8-bit byte addressing and binary, decimal and hexadecimal floating-point calculations.

<span class="mw-page-title-main">IBM System/370</span> Family of mainframe computers 1970–1990

The IBM System/370 (S/370) is a model range of IBM mainframe computers announced on June 30, 1970, as the successors to the System/360 family. The series mostly maintains backward compatibility with the S/360, allowing an easy migration path for customers; this, plus improved performance, were the dominant themes of the product announcement. In September 1990, the System/370 line was replaced with the System/390.

The Job Entry Subsystem (JES) is a component of IBM's MVS 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.

In computing, channel I/O is a high-performance input/output (I/O) architecture that is implemented in various forms on a number of computer architectures, especially on mainframe computers. In the past, channels were generally implemented with custom devices, variously named channel, I/O processor, I/O controller, I/O synchronizer, or DMA controller.

The Task Control Block (TCB) contains the state of a task in, e.g., OS/360 and successors on IBM System/360 architecture and successors.

<span class="mw-page-title-main">OS/VS1</span> IBM operating system

Operating System/Virtual Storage 1, or OS/VS1, is a discontinued IBM mainframe computer operating system designed to be run on IBM System/370 hardware. It was the successor to the Multiprogramming with a Fixed number of Tasks (MFT) option of System/360's operating system OS/360. OS/VS1, in comparison to its predecessor, supported virtual memory. OS/VS1 was generally available during the 1970s and 1980s, and it is no longer supported by IBM.

In IBM mainframe operating systems OS/360 and its successors, a Unit Control Block (UCB) is a memory structure, or a control block, that describes any single input/output peripheral device (unit), or an exposure (alias), to the operating system. Certain data within the UCB also instructs the Input/Output Supervisor (IOS) to use certain closed subroutines in addition to normal IOS processing for additional physical device control.

An access method is a function of a mainframe operating system that enables access to data on disk, tape or other external devices. Access methods were present in several mainframe operating systems since the late 1950s, under a variety of names; the name access method was introduced in 1963 in the IBM OS/360 operating system. Access methods provide an application programming interface (API) for programmers to transfer data to or from device, and could be compared to device drivers in non-mainframe operating systems, but typically provide a greater level of functionality.

A Supervisor Call instruction (SVC) is a hardware instruction used by the System/360 family of IBM mainframe computers up to contemporary zSeries, the Amdahl 470V/5, 470V/6, 470V/7, 470V/8, 580, 5880, 5990M, and 5990A, and others; Univac 90/60, 90/70 and 90/80, and possibly others; the Fujitsu M180 (UP) and M200 (MP), and others; and is also used in the Hercules open source mainframe emulation software. It causes an interrupt to request a service from the operating system. The system routine providing the service is called an SVC routine. SVC is a system call.

In IBM mainframe operating systems, Execute Channel Program (EXCP) is a macro generating a system call, implemented as a Supervisor Call instruction, for low-level device access, where the programmer is responsible for providing a channel program—a list of device-specific commands (CCWs)—to be executed by I/O channels, control units and devices. EXCP for OS/360 and successors is more specifically described in the OS System Programmer's Guide.; EXCP for DOS/360 and successors is more specifically described in DOS Supervisor and I/O Macros. This article mostly reflects OS/360 through z/OS; some details are different for TOS/360 and DOS/360 through z/VSE.

<span class="mw-page-title-main">OS/360 and successors</span> Operating system for IBM S/360 and later mainframes

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 and Input/Output Control System (IOCS) packages for the IBM 7090/7094 and even more so by the PR155 Operating System for the IBM 1410/7010 processors. It was one of the earliest operating systems to require the computer hardware to include at least one direct access storage device.

The Input/Output Configuration Program is a program on IBM mainframes.

<span class="mw-page-title-main">System Generation (OS)</span> Process for configuring some IBM operating systems

System Generation (SysGen) is a two-stage process for installing or updating OS/360, OS/VS1, OS/VS2 (SVS), OS/VS2 (MVS) and chargeable systems derived from them. There are similar processes for, e.g., DOS/360, which this article does not cover. Also, some of the details have changed between releases of OS/360 and many details do not carry over to later systems.

<span class="mw-page-title-main">OS/VS2 (SVS)</span>

Single Virtual Storage (SVS) refers to Release 1 of Operating System/Virtual Storage 2 (OS/VS2); it is the successor system to the MVT option of Operating System/360. OS/VS2 (SVS) was a stopgap measure pending the availability of MVS, although IBM provided support and enhancements to SVS long after shipping MVS.

The IBM System/360 architecture is the model independent architecture for the entire S/360 line of mainframe computers, including but not limited to the instruction set architecture. The elements of the architecture are documented in the IBM System/360 Principles of Operation and the IBM System/360 I/O Interface Channel to Control Unit Original Equipment Manufacturers' Information manuals.

The IBM Administrative Terminal System (ATS/360) provided text- and data-management tools for working with documents to users of IBM System/360 systems.

In MVS/370 and successor versions of IBM mainframe operating systems, Start Input/Output (STARTIO) is a macro instruction and a "branch entry" for low-level device access, where the programmer is responsible for providing a list of device-specific CCWs, that is, a channel program, to be executed by I/O channels, control units and devices and a number of "exits", several of which may be immediate returns to the Input/Output Supervisor (IOS). Invokers of STARTIO must be in supervisor mode and key 0. STARTIO interfaces directly with the IOS component of MVS.

In IBM mainframe operating systems, Execute Channel Program in Real Storage (EXCPVR) is a macro generating a system call, implemented as a Supervisor Call instruction, for low-level device access, where the programmer is responsible for providing a list of device-specific CCWs, that is, a channel program, to be executed by I/O channels, control units and devices. Additionally, the programmer is expected and required to ensure that the input/output data areas are in real storage and are "fixed", either prior to invoking EXCPVR or via the page fix appendage. EXCPVR can in some situations provide improved performance compared to EXCP.

<span class="mw-page-title-main">IBM System/360 Model 50</span> Midrange IBM computer from 1960s

The IBM System/360 Model 50 is a member of the IBM System/360 family of computers. The Model 50 was announced in April 1964 with the other initial models of the family, and first shipped in August 1965 to the Bank of America.

References

  1. IBM Corporation (1967). IBM System/360 Operating System Input/Output Supervisor (PDF).