Start Input/Output

Last updated

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). [1] [2] [3] [4] Invokers of STARTIO must be in supervisor mode and key 0. [5] STARTIO interfaces directly with the IOS component of MVS. [6]

Contents

Differences from Execute Channel Program (EXCP)

Start Input/Output differs from EXCP (including XDAP, which is simply a DASD-only subset of EXCP) and EXCPVR in the following fundamental way: Start Input/Output is a low level facility that supports, e.g., selection of channel paths, selection of exposures while Execute Channel Program is a high level facility that supports, e.g., CCW translation, page fixing, serialization of related requests, VIO.

Callers of Execute Channel Program must be in TCB mode. While IBM documents EXCPVR as being privileged, some unprivileged access method code uses it for SAM-E processing of DASD data sets. Except for some special cases, an application may only use Execute Channel Program for a Data Control Block (DCB) that it has OPENed (that is, it has been made accessible to the application by the system's OPEN/CLOSE/END-OF-VOLUME supervisor services, SVCs 19, 20 and 55, respectively).

Callers of STARTIO must be privileged, must page fix all storage areas related to the request and must use global storage for the SRB/IOSB. They may refer to any device that has a real UCB, even if that device is not allocated to an address space, that is, the device need not be OPENed.

Initiation and Completion Sequences

STARTIO's initiation sequence, usually referred to as its "front end", may be in TCB mode or in SRB mode. STARTIO's termination sequence, usually referred to as its "back end", is always in SRB mode.

STARTIO always utilizes an SRB/IOSB pair. The SRB (Service Request Block) is utilized to schedule processor activity, as required, on any available processor, in connection with the related I/O request, as the I/O request is not necessarily run by the processor in which the caller is running (indeed, in most cases it will not be). The IOSB (Input/Output Supervisor Block) describes the related I/O request, and passes parameters to and receives responses from IOS. IOS generally calls appendages in enabled SRB mode, but in special cases calls an appendage as a Disabled Interrupt Exit (DIE).

Device dependent processing

The Unit Control Block (UCB) for each device points to a Device Descriptor Table (DDT), which identified routines needed for device dependent processing, e.g., handling of Attention interrupts, appending of RESERVE CCWs, appending of Set File Mask and Seek.

De facto Support, versus non-Support

Although use of STARTIO by customers is not supported by IBM, nevertheless its macro instruction and its associated "branch entry" have remained remarkably stable throughout the forty-year-long (as of 2014) transition from MVS/370 to z/OS, as STARTIO is the sole method of performing lowest-level physical I/O operations on channel-attached devices on MVS/370 and subsequent instances of the OS. In particular, VSAM and VTAM use STARTIO, as, of course, do EXCP, XDAP and EXCPVR, and certain instances of IMS/VS and JES, most particularly where Channel-to-Channel operations are involved.

Changes from MVS/370 and Successors to ES/390 and z/OS

An additional "branch entry" was added in ES/390, which performs essentially the same function as the original, which was retained for compatibility with existing programs. This additional "branch entry" implicitly obtains the address of the related TCB (from PSATOLD), rather than explicitly obtaining it (from the TCB= keyword parameter) as the original "branch entry" did.

Error Recovery

Should a catastrophic error occur during IOS's processing of the related I/O request, it is this TCB, usually the caller's "job step" TCB, which will be abnormally terminated, not whichever TCB happened to be active when the error was detected, which, by the basic design of IOS, which is run asynchronously to all tasks and all address spaces, could be any TCB in any address space, or, indeed, no TCB at all, e.g., an SRB, or, perhaps more likely, the System Wait Task (which runs in the OS Master Scheduler's address space).

Documentation

Perhaps the best description of STARTIO and its application is a "white paper" entitled "The [ Start Input/Output Interface ] of MVS", [7] written by Peter Haas, then with Amdahl Corp (subsequently liquidated). Haas's "white paper" contained an application program example which illustrated the required and optional parameters and exits employed by the STARTIO interface. A more detailed description of EXCP[VR] and STARTIO is available in the logic manual. [8]

Notes

    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.

    A direct-access storage device (DASD) is a secondary storage device in which "each physical record has a discrete location and a unique address". The term was coined by IBM to describe devices that allowed random access to data, the main examples being drum memory and hard disk drives. Later, optical disc drives and flash memory units are also classified as DASD.

    <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.

    This article discusses support programs included in or available for OS/360 and successors. IBM categorizes some of these programs as utilities and others as service aids; the boundaries are not always consistent or obvious. Many, but not all, of these programs match the types in utility software.

    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.

    Count key data (CKD) is a direct-access storage device (DASD) data recording format introduced in 1964, by IBM with its IBM System/360 and still being emulated on IBM mainframes. It is a self-defining format with each data record represented by a Count Area that identifies the record and provides the number of bytes in an optional Key Area and an optional Data Area. This is in contrast to devices using fixed sector size or a separate format track.

    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.

    In IBM mainframe operating systems, basic partitioned access method (BPAM) is an access method for libraries, called partitioned datasets (PDSes) in IBM terminology. BPAM is used in OS/360, OS/VS2, MVS, z/OS, and others.

    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">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.

    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.

    The Input/Output Supervisor (IOS) is that portion of the control program in the IBM mainframe OS/360 and successors operating systems 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.

    A Service Request Block (SRB) is a data structure of MVS/370 and successor versions of IBM mainframe operating systems employed mainly, but not exclusively, by the Start Input/Output interface.

    An Input/Output Supervisor Block (IOSB) is a data structure employed exclusively by the Start Input/Output interface of MVS/370 and successor IBM mainframe operating systems. The IOSB describes the I/O request and passes parameters to and receives responses from the Input/Output Supervisor (IOS).

    References

    1. Hank A. Murphy (1995). MVS control blocks. McGraw-Hill Ryerson, Limited. pp. 129–130. ISBN   978-0-07-044309-9.
    2. Robert H. Johnson; R. Daniel Johnson (June 1992). DASD: IBM's direct access storage devices. McGraw-Hill. pp. 237–238. ISBN   978-0-07-032674-3.
    3. Harry Katzan; Davis Tharayil (October 1984). Invitation to MVS: logic and debugging. PBI. pp. 11, 211. ISBN   978-0-89433-081-0.
    4. Dave Elder-Vass (30 April 1993). MVS Systems Programming. McGraw-Hill. p. 52. ISBN   978-0-07-707767-9.
    5. Robert H. Johnson (June 1989). MVS: concepts and facilities. Intertext Publications. p.  577. ISBN   978-0-07-032673-6.
    6. Gilbert E. Houtekamer; H. Pat Artis (1993). MVS I/O subsystems: configuration management and performance analysis. McGraw-Hill. p. 52. ISBN   978-0-07-002553-0.
    7. Amdahl Corp, Sunnyvale, California, MVS Support Team Technical Topics, Vol. 1, No. 2
    8. OS/VS2 I/O Supervisor Logic (Sixth ed.), IBM, December 1978, SY26-3823-5