Start Input/Output
| Company type | Macro instruction / system interface |
|---|---|
| Industry | Computer software / Operating systems |
| Founded | MVS/370 era (circa 1970s) |
| Products | Low-level device input/output control for IBM mainframes |
In MVS/370 and subsequent IBM mainframe operating systems, Start Input/Output (STARTIO) serves as a macro instruction and a "branch entry" point for direct low-level device interaction. Developers supply a sequence of device-specific CCWs that compose a channel program, which is executed by I/O channels, control units, and peripheral devices. This process also involves multiple "exits," some of which immediately return control to the Input/Output Supervisor (IOS). Calls to STARTIO must be made while operating in supervisor mode with key 0. The STARTIO interface communicates directly with the MVS IOS component.
Distinctions from Execute Channel Program (EXCP)
STARTIO fundamentally contrasts with EXCP (and its DASD-specific variant XDAP) as well as EXCPVR. While STARTIO functions as a low-level mechanism enabling channel path selection and access control, EXCP operates at a higher level, managing CCW translation, page fixing, serialization of requests, and Virtual I/O (VIO) handling.
EXCP invocations require TCB mode operation. Although IBM documents EXCPVR as a privileged interface, certain unprivileged access method routines utilize it for SAM-E processing on DASD data sets. Typically, applications are permitted to employ EXCP only for Data Control Blocks (DCBs) they have opened through system OPEN/CLOSE/END-OF-VOLUME services.
Conversely, callers of STARTIO must possess privileged status, ensure all associated storage is page-fixed, and utilize global storage for the SRB and IOSB. They are authorized to access any device with an active UCB, regardless of allocation or OPEN conditions.
Initiation and Completion Processes
The initiation phase ("front end") of STARTIO executes in either TCB or SRB mode, whereas its completion phase ("back end") always runs under SRB mode.
STARTIO consistently employs an SRB/IOSB pair: the SRB (Service Request Block) schedules processing on any available CPU for the I/O operation, generally on a processor different from the initiator. The IOSB (Input/Output Supervisor Block) details the I/O request and facilitates parameter exchange and response handling with the IOS. Typically, IOS invokes appendages in enabled SRB mode but occasionally switches to Disabled Interrupt Exit (DIE) mode.
Device-Specific Processing
Each device's Unit Control Block (UCB) connects to a Device Descriptor Table (DDT), which defines routines responsible for device-dependent operations such as managing Attention interrupts and appending commands like RESERVE CCWs, Set File Mask, and Seek.
Official Support Versus Practical Use
Although IBM does not formally endorse customer utilization of STARTIO, this macro instruction and its associated "branch entry" have remained consistent for more than forty years—from MVS/370 through z/OS—because STARTIO is the sole mechanism enabling low-level physical I/O on channel-attached hardware. Crucial system components including VSAM, VTAM, EXCP, XDAP, EXCPVR, as well as certain functions within IMS/VS and JES, depend heavily on STARTIO, particularly for Channel-to-Channel communication.
Modifications from MVS/370 and Its Successors to ES/390 and z/OS
With the introduction of ES/390, a new "branch entry" was added that functions similarly to the original but retrieves the associated TCB address implicitly through PSATOLD instead of explicitly using the TCB= keyword parameter. This approach ensures compatibility with legacy applications remains intact.
Error Handling
When severe errors occur during IOS operations, the impacted TCB—typically the TCB of the invoking job step—is forcefully ended. This strategy safeguards other unrelated TCBs that might be running concurrently in different tasks or address spaces, including SRBs or the System Wait Task within the OS Master Scheduler's address space, from being terminated.
Documentation
One of the most comprehensive explanations of STARTIO and its practical use is found in a white paper titled The [Start Input/Output Interface] of MVS, authored by Peter Haas from Amdahl Corporation. This document provides an example application demonstrating both mandatory and optional parameters and exits utilized by the STARTIO interface. For a more thorough understanding of EXCP[VR] and STARTIO, refer to the OS/VS2 I/O Supervisor Logic manual.