Service Request Block
| Company type | Data structure |
|---|---|
| Industry | Computing / Operating systems |
| Founded | Introduced with MVS/370 |
| Products | Task scheduling, I/O processing |
A Service Request Block (SRB) constitutes a data structure utilized within MVS/370 and its successor IBM mainframe operating systems, predominantly employed by the Start Input/Output interface.
Serving as a streamlined form of Task Control Block (TCB), an SRB operates with minimal resource allocation aside from processor access. All resources necessary to an SRB are accessed through "branch entries," which in some cases supplant conventional system services formerly triggered by SVC instructions. SRBs themselves typically invoke SVC instructions exclusively to terminate abnormally, commonly using SVC 13 (ABEND) or preferably the ABTERM branch entry.
When paired with the Start Input/Output interface, an SRB works in conjunction with an Input/Output Supervisor Block (IOSB).
SRBs facilitate communication both between address spaces and across applications. For processes operating within a single address space that demand peak efficiency, resources are initially secured under a TCB—often the "job step" TCB—before scheduling SRBs to contend for CPU time.
While an address space might only contain a single TCB, it can host hundreds or thousands of SRBs tasked with the bulk of processing duties; the TCB's role includes synchronizing these SRBs and managing interactions with system operators.
To achieve synchronization, the TCB issues a WAITR (SVC 1) call specifying Event Control Blocks (ECBs)—one assigned to each SRB plus one for the operator. Completion by an SRB is indicated by invoking the POST service (usually SVC 2 or the address found in CVT0PT01), referencing its ECB and optionally including a message encoded in the ECB’s lower 24 bits.
Support for disk and network device operations by SRBs is provided through VSAM’s "improved control interval processing" and VTAM’s "fast path" capabilities.
History
Introduced alongside MVS/370 and subsequent versions, SRBs hold precedence over TCBs and are categorized into two priority classes: Global SRBs, which outrank all local SRBs and TCBs, and Local SRBs, which have priority above only local TCBs. The MVS dispatcher enforces these priority levels uniformly across multiple processors—from dual processors in MVS/370 up to sixteen or more in contemporary z/System models. The advent of zIIP processors has notably expanded the utilization of SRBs beyond their original Start Input/Output functions.
In MVS/370 and its successors, SRBs embody highly specialized Process control block variants, whereas TCBs fulfill the role of general-purpose Process control blocks as seen in OS/360 and related operating systems.