Bloque de control de la unidad


En los sistemas operativos de mainframe IBM de la línea OS/360 y sucesores , un bloque de control de unidad ( UCB ) es una estructura de memoria , o un bloque de control , que describe cualquier dispositivo periférico de entrada/salida ( unidad ) o una exposición (alias) , al sistema operativo. Ciertos datos dentro del UCB también dan instrucciones al supervisor de entrada/salida ( IOS ) para usar ciertas subrutinas cerradas además del procesamiento normal del IOS para el control adicional del dispositivo físico.

Durante la carga del programa inicial (IPL) de los sistemas MVS [a] actuales, el Programa de inicialización del núcleo (NIP) lee la información necesaria del Archivo de definición de E/S (IODF) y la usa para construir los UCB. Los UCB se almacenan en la memoria propiedad del sistema, en el Área de cola del sistema extendido ( ESQA ). Una vez que se completa la IPL, los UCB son propiedad del soporte de entrada/salida. Parte de la información almacenada en la UCB es: tipo de dispositivo (disco, cinta, impresora, terminal, etc.), dirección del dispositivo (como 1002 ), identificador de subcanal y número de dispositivo, ID de ruta de canal (CHPID) que define el ruta al dispositivo, para algunos dispositivos el número de serie del volumen (VOLSER) y una gran cantidad de información adicional, incluidos los datos de administración de trabajos del sistema operativo.

Si bien el contenido de la UCB ha cambiado a medida que evolucionó MVS, el concepto no lo ha hecho. Es una representación al sistema operativo de un dispositivo externo. Dentro de cada UCB hay un número de subcanal para la palabra de identificación de subcanal utilizada en la instrucción SSCH, [1] para iniciar una cadena de comandos de canal, conocida como CCW. Los CCW se ponen en cola en la UCB con la interfaz de macro STARTIO, [2] aunque esa referencia NO analiza la macro STARTIO ya que esa instrucción de macro NO es una interfaz compatible con IBM , a pesar del hecho de que esa interfaz ha permanecido igual durante al menos las últimas tres décadas. El INICIOLa interfaz iniciará la operación inmediatamente, en caso de que la cola del canal esté vacía, o pondrá en cola la solicitud en la cola del canal para su ejecución diferida. Dicha ejecución diferida se iniciará inmediatamente cuando la solicitud esté al principio de la cola y el dispositivo esté disponible, incluso si otro programa está en control en ese instante. Tal es el diseño básico del Supervisor de Entrada/Salida (IOS). [ disputado (por: en z/Architectue, el subsistema de canal es responsable de asignar canales y ponerlos en cola)  ]

El UCB evolucionó para convertirse en un ancla para contener información y estados sobre el dispositivo. Actualmente, la UCB tiene cinco áreas utilizadas para una interfaz externa: Extensión de clase de dispositivo, Extensión común de UCB, Stub de prefijo de UCB, Segmento común de UCB y Segmento dependiente del dispositivo de UCB. [3] Otras áreas son solo para uso interno. Esta información se puede leer y utilizar para determinar información sobre el dispositivo.

En las primeras implementaciones de este sistema operativo, los UCB (bases y extensiones) se ensamblaban durante SYSGEN y se ubicaban dentro de los primeros 64 KB del área del sistema, ya que la tabla de búsqueda de dispositivos de E/S constaba de tipo Q de 16 bits ( es decir, reubicables) direcciones. Las mejoras posteriores permitieron que las extensiones estuvieran por encima de la línea de 64 kilobytes (65 536 bytes), ahorrando así espacio para bases UCB adicionales por debajo de la línea de 64 kilobytes y también preservando así la arquitectura de la tabla de búsqueda UCB (convirtiendo una CUu en una base UCB habla a).