Unit Control Block

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.

The UCBs are stored in system-owned memory, in the Extended System Queue Area (ESQA).

In the earliest implementations of OS/360, the UCBs (foundations and extensions) were assembled during SYSGEN, and were located within the first 64 KB of the system area, as the I/O device lookup table consisted of 16-bit addresses.

Hence, there was no reason to execute multiple input/output operations to it at the same time, as these would be impossible for a device to physically handle.

In 1968, IBM introduced the 2305-1 and 2305-2 fixed-head disks, which had rotational position sensing (RPS) and eight exposures (alias addresses) per disk; the OS/360 support provided a UCB per exposure in order to permit multiple concurrent channel programs.

As systems matured and CPU speed greatly surpassed I/O input capacity, access to the device that was serialized at the UCB level became a serious bottleneck.

Thus, a smaller number of UCBs are required to service the same workload, compared to Dynamic PAVs.

[9] Digital's VMS operating system uses an identically named structure, the UCB, for similar purposes.

The UCB may have a device-driver defined extension in which the driver can keep driver-defined data that is instantiated for each device.