En los sistemas operativos para mainframes de IBM, como OS/360 y sus sucesores , un Bloque de Control de Unidad ( UCB , por sus siglas en inglés ) es una estructura de memoria , o 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 instruyen al Supervisor de Entrada/Salida ( IOS, por sus siglas en inglés ) para que utilice ciertas subrutinas cerradas, además del procesamiento normal del IOS, para un control adicional del dispositivo físico.
Otros sistemas operativos tienen estructuras similares.
Descripción general
Durante la carga inicial del programa (IPL) de los sistemas MVS 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 utiliza para construir los UCB. Los UCB se almacenan en la memoria del sistema, en el Área de Cola del Sistema Extendida ( ESQA ). Una vez completada la IPL, los UCB son propiedad del Soporte de Entrada/Salida. Algunos de los datos almacenados en el UCB son: tipo de dispositivo (por ejemplo, disco, cinta, impresora, terminal), dirección del dispositivo (como 1002 ), identificador de subcanal y número de dispositivo, ID de ruta de canal (CHPID) que define la ruta al dispositivo, para algunos dispositivos el número de serie del volumen (VOLSER) y una gran cantidad de otra información, incluidos los datos de Gestión de Trabajos del SO.
Aunque el contenido del UCB ha cambiado a medida que MVS ha evolucionado, el concepto no. Es una representación para el sistema operativo de un dispositivo externo. Dentro de cada UCB se encuentran el puntero UCBIOQ al elemento de cola IOS actual [ 1 ] ( IOQ), los punteros UCBIOQF y UCBIOQL [ 3 ] a una cola de IOQ [ b ] (IOQ) y un número de subcanal para la palabra de identificación de subcanal utilizada en la instrucción de inicio de subcanal (SSCH) para iniciar un programa de canal (cadena de palabras de comando de canal (CCW)). [ 4 ]
El UCB evolucionó para servir como ancla para almacenar información y estados sobre el dispositivo. Actualmente, el UCB cuenta con cinco áreas utilizadas para una interfaz externa: Extensión de Clase de Dispositivo, Extensión Común del UCB, Prefijo del UCB, Segmento Común del UCB y Segmento Dependiente del Dispositivo del UCB. [ 1 ] Otras áreas son de uso interno únicamente. Esta información puede leerse y utilizarse para determinar información sobre el dispositivo.
En las primeras implementaciones de OS/360 , 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 direcciones de 16 bits. 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 preservando también la arquitectura de la tabla de búsqueda de UCB (convirtiendo una CUu en una dirección de base UCB). Eventualmente, una instalación podía optar por colocar los UCB por encima de la línea de 16 MiB, aunque en un proceso llamado " sombreado" del UCB, el sistema operativo crea una copia local temporal del UCB al asignar un archivo sin la opción XTIOT .
Manejo de operaciones de E/S paralelas
Los UCB se introdujeron en la década de 1960 con OS/360. En aquel entonces, un dispositivo al que se dirigía un UCB era típicamente una unidad de disco duro de cabezal móvil o una unidad de cinta , sin caché interna . Sin ella, el dispositivo solía ser superado ampliamente por el procesador de canal del mainframe . Por lo tanto, no había razón para ejecutar múltiples operaciones de entrada/salida en él al mismo tiempo, ya que sería imposible para un dispositivo manejarlas físicamente. En 1968, IBM introdujo los discos de cabezal fijo 2305-1 y 2305-2, que tenían detección de posición rotacional (RPS) y ocho exposiciones (direcciones de alias) por disco; el soporte de OS/360 proporcionó un UCB por exposición para permitir múltiples programas de canal concurrentes. [ 5 ] De manera similar, los sistemas posteriores derivados de OS/360 requerían un UCB adicional para cada volumen virtual asignado en un IBM 3850 Mass Storage System (MSS), [ 6 ] y para cada exposición en un 3880-11 y sus sucesores. [ 7 ] [ 8 ]
Volúmenes de Acceso Paralelo (PAV)
Dado que solo se podía ejecutar un conjunto de comandos de canal o E/S a la vez, esto no representaba un problema en la década de 1960, cuando las CPU eran lentas y el procesamiento de E/S dependía de la velocidad de las CPU. Sin embargo, a medida que los sistemas evolucionaron y la velocidad de las CPU superó ampliamente la capacidad de entrada de E/S, el acceso al dispositivo serializado a nivel de UCB se convirtió en un grave cuello de botella.
El Volumen de Acceso Paralelo ( PAV ) permite que los UCB se clonen para permitir que múltiples E/S se ejecuten simultáneamente. Con el soporte adecuado del hardware DASD, PAV proporciona soporte para más de una E/S a un solo dispositivo a la vez. Para mantener la compatibilidad con versiones anteriores , las operaciones aún se serializan por debajo del nivel UCB. Pero PAV permite la definición de UCB adicionales para el mismo dispositivo lógico, cada uno usando una dirección de alias adicional . Por ejemplo, un dispositivo DASD en la dirección base 1000, podría tener direcciones de alias 1001, 1002 y 1003. Cada una de estas direcciones de alias tendría su propio UCB. Dado que ahora hay cuatro UCB para un solo dispositivo, son posibles cuatro E/S concurrentes. Las escrituras en la misma extensión, un área del disco asignada a un área contigua de un archivo, aún se serializan, pero otras lecturas y escrituras ocurren simultáneamente. La primera versión de PAV el controlador de disco asigna un PAV a un UCB. En la segunda versión del procesamiento de PAV, Workload Manager (WLM) reasigna un PAV a nuevos UCB periódicamente. En la tercera versión del procesamiento de PAV, con la serie IBM DS8000 , cada E/S utiliza cualquier PAV disponible con el UCB que necesita.
El efecto neto de los PAV es disminuir el componente de tiempo IOSQ del tiempo de respuesta del disco, a menudo hasta cero. A partir de 2007,Las únicas restricciones para PAV son el número de direcciones de alias, 255 por dirección base, y el número total de dispositivos por unidad de control lógico, 256 contando la base más los alias.
HiperPAV
Las acciones de WLM para mover alias de un dispositivo de disco a otro tardan unos segundos en surtir efecto. En muchas situaciones, esto no es suficientemente rápido. Los HyperPAV son significativamente más receptivos porque adquieren un UCB de un grupo durante la duración de una única operación de E/S, antes de devolverlo al grupo. Por lo tanto, se requiere un menor número de UCB para atender la misma carga de trabajo, en comparación con los Dynamic PAV. No hay demora esperando a que WLM reaccione. [ 9 ]
En otros sistemas operativos
El sistema operativo VMS de Digital utiliza una estructura con el mismo nombre, la UCB, para fines similares. Se crea una UCB para cada dispositivo de E/S. Los datos de la UCB incluyen el número de unidad del dispositivo (parte del nombre del dispositivo) y un encabezado de lista donde se pueden poner en cola las solicitudes de E/S pendientes. La UCB puede tener una extensión definida por el controlador del dispositivo, en la que este puede almacenar datos definidos por el controlador que se instancian para cada dispositivo. [ 10 ]
Véase también
- z/OS : sistema operativo de 64 bits para mainframes de IBM.
Notas
Referencias
- 1 2 "Mapeo UCB" (PDF) . Áreas de datos MVS de z/OS 2.5 Áreas de datos MVS Volumen 4 (RRP - XTL) (PDF) . IBM. 30 de septiembre de 2021. pág. 994. GA32-0938-500 . Recuperado el 9 de mayo de 2022 .
- ↑ "Información IOQ" (PDF) . Áreas de datos MVS de z/OS 2.5, volumen 2 (IAX - ISG) (PDF) . IBM. 30 de septiembre de 2021. págs. 1033–1039 . GA32-0936-50 . Consultado el 8 de mayo de 2022 .
- ↑ "Mapeo de IOSDUPFX" (PDF) . Áreas de datos de z/OS 2.5 MVS Volumen 2 (IAX - ISG) (PDF) . IBM. 30 de septiembre de 2021. pág. 1181. GA32-0936-50 . Consultado el 9 de mayo de 2022 .
- ↑ Principios de funcionamiento de z/Architecture (PDF) (Decimocuarta edición). IBM. Mayo de 2022. págs. 14-15 . SA22-7832-13 . Consultado el 24 de enero de 2023 .
- ↑ "IODEVICE" (PDF) . Generación del sistema operativo – Versión 21.8 (PDF) (Decimocuarta edición). IBM. Agosto de 1974. pág. 339. GC28-6554-13 . Consultado el 24 de enero de 2023 .
- ↑ "Concepto de unidad virtual" (PDF) . Introducción al sistema de almacenamiento masivo (MSS) IBM 3850 (PDF) (Tercera ed.). IBM. Julio de 1975. pág. 22. GA32-0028-2 . Consultado el 24 de enero de 2023 .
- ↑ "IBM 3880 Storage Control Model 21" . IBM. 18 de septiembre de 1984. 184-119 . Consultado el 24 de enero de 2023 .
- ↑ IBM 3880 Storage Control Model 21 - Guía de instalación y administración (PDF) (Primera ed.). IBM. Octubre de 1984. pág. 3. GA32-0084-0 . Consultado el 24 de enero de 2023 .
- ↑ Rogers, Paul; Salla, Alvaro; Sousa, Livio (septiembre de 2008). "Función HyperPAV 7.22 para la serie DS8000". ABC de la programación de sistemas z/OS (PDF) . Vol. 10 (cuarta ed.). IBM. pág. 494. SG24-6990-03. Archivado del original (PDF) el 21 de diciembre de 2011.
- ↑ Goldenberg, Ruth; Saravanan, Sara (1994). OpenVMS AXP Internals and Data Structures . Digital Press. p. 753. ISBN 978-1555581206
El ejecutivo crea un bloque de control de unidad (UCB) para cada dispositivo de E/S conectado al sistema
.
- Sistemas operativos para mainframes de IBM