Proceso de Arranque de un Mainframe

Autor: Kujaku | El jueves 21 de diciembre del 2006 @ 17:02.

En otras entregas, he explicado el hardware, un poco como está constituido el SO, sistemas de ficheros y demás. Ahora, trataré de explicar el proceso de arranque que sigue la máquina desde que enciendes el interruptor hasta que ves un terminal con el logo de tu empresa invitándote a hacer login en un terminal 3270.

En primer lugar, debemos conocer como se llega al bootstrap o texto IPL de la maquina, o lo que es lo mismo, el sector de arranque de un disco duro de un PC. En un PC, la BIOS se encarga de buscar el sector 0 del disco duro que estará configurado como Primary Master (si el sistema es IDE). Una vez encontrado el sector 0, este sector tiene un puntero que apunta hacia un fichero donde a su vez carga un microprograma y punteros a otros ficheros del sistema. En sistemas Host, el proceso es algo mas complicado, pero básicamente se parecen mucho.

Cuando te plantas delante de un z/Series, y pones en la posición I el interruptor rojo que queda a la izquierda del frontal, lo primero que ocurre es que las fuentes redundantes de alimentación dan corriente de partida a todos los bastidores. No es que se encienda toda la máquina, solo envía una corriente de 5 V para que se verifique que la corriente llega a los bastidores y que todo esta alimentado (es lo que se denomina el DC GOOD).

En ese preciso instante, esta corriente también empieza a alimentar el portátil (en los z/Series, llevan 2 por redundancia) también llamado Support Element. Dicho portátil viene a ser una Mega-BIOS de la máquina, y carga un programa con ventanitas e iconitos que gestiona el microcódigo del z/Series, comprobando todos los componentes configurados. Una vez comprobados, este portátil envía una señal que inicia la secuencia de encendido (si lo tienes configurado así, porque también puedes hacer doble clic sobre el icono del "enchufe" y se enciende), y en ese momento ya se pueden oír los ventiladores a plena potencia evacuando el aire de los bastidores, y las luces de los bastidores en verde indicando que ya tienen corriente.

Una vez finalizada la secuencia de encendido, el Support Element inicia lo que se denomina Power On Reset. Este proceso es como pulsar al Reset del PC, que lo que hace es que lee la configuración de canales (en una entrega anterior os comente como se definían) almacenada en el Support Element (IOCDS) y realiza una segunda comprobación de los elementos que han sido definidos, con el fin de comprobar que todo lo configurado ha sido inicializado correctamente.

En este punto también se entraría en la definición de las LPAR (particiones lógicas), pero no entrare a comentarlo por no complicar más las cosas, así que supondremos que nuestra maquina esta en modo nativo o Single Image (es decir, una sola maquina con un solo SO).

Cuando el Power On Reset finaliza, estamos en condiciones de hacer una IPL (Initial Program Load) de la máquina. Para ello, pinchamos sobre el icono Load del Support Element, y esto hace que nos abra una ventana con dos valores fundamentales: La dirección de carga y los parámetros de carga.

La dirección de carga es la dirección hexadecimal compuesta por 4 dígitos del disco donde está el bootstrap o texto IPL del SO. Como un host no tiene unidad C o D, sino cientos de discos, todos ellos se configuran con un IODEVICE (que ya explique en otra entrega anterior) que es una dirección hexadecimal única en la instalación. Así que para realizar la carga, se introduce esta dirección, para que vaya a la pista 0 del volumen de disco a buscar el bootstrap.

El segundo valor que hay que introducir es el de parámetros. Es un valor de 8 caracteres. Los primeros 4 se utilizan para poner la dirección del volumen de disco donde reside el IODF, o lo que es lo mismo, el dataset de la configuración de canales y dispositivos de la máquina cuya copia ha utilizado el Support Element para hacer el Power On Reset como he explicado antes.

Los dos caracteres siguientes, indican el miembro LOADXX dentro del dataset SYS1.IPLPARM que se llamará en tiempo de IPL (el miembro LOAD es un miembro de configuración inicial y puedo tener los que quiera para tener perfiles de arranque configurados –algo así como tener un menú de inicio de Windows y elegir con la tecla F8 distintos perfiles-) y por último quedan otros dos caracteres: Uno es para configurar el IMSI, o lo que es lo mismo, el numero de mensajes informativos que deseas que aparezcan en la Master Console en la inicialización de la maquina, el otro carácter que queda define el núcleo alternativo de arranque en caso de que el primero casque.

Un apunte sobre los miembros de LOAD: Puedo tener tantos como quiera, y cada uno lo puedo configurar como me de la gana. Estos miembros tienen, entre otros datos, el nombre del Catalogo Maestro y en que disco reside (recordar que el Master catalog tiene la información de todos los datasets del SO), el disco donde esta el IODF de configuración, y el sufijo a usar dentro de los miembros de la SYS1.PARMLIB (dataset donde hay docenas de miembros de configuración), que generalmente coincide con el miembro LOADXX cargado.

Por ejemplo, puedo tener un LOAD01 que me cargue una configuración y un LOAD02 que me cargue otra. Así pues, podría tener dos catálogos y arrancar la maquina de una forma completamente distinta en función del miembro LOAD que cargue cada vez. Vamos, es tan configurable que llega a hacerse muy complicado si no tienes las ideas muy muy claras.

Después de este lío, bueno, volvamos al portátil del z/Series y hacemos click en Load. El proceso es el siguiente: Con la dirección hexadecimal del volumen donde esta el bootstrap, la maquina accede al cilindro 0 y pista 0 y lee el bootstrap, colocándo dicho contenido en memoria y luego pasándole el control. Este, a su vez se encargará de la tarea de colocar todo el SO en memoria. Para ello, lee el miembro IEAIPL00 denominado comúnmente como “texto IPL” y a partir de aquí empiezan a sucederse una serie de historias:

  1. Pone a ceros binarios la burrada de Gigas de RAM de la máquina y luego define las regiones de memoria donde se colocará el Master Scheduler (explicado en otra entrega anterior).
  2. Busca el dataset llamado SYS1.NUCLEUS donde reside el mega-kernel del SO y carga una serie de programitas llamados IRIMs (IPL Resource Initialization Modules) para empezar a cargar en memoria el SO. Estos IRIMs pillan el dato de los parámetros (esos 8 caracteres explicados mas arriba) que le hemos pasado en tiempo de carga y buscan los miembros LOADXX dentro del dataset SYS1.IPLPARM, y si los encuentra, los carga.

Como los miembros LOADXX tienen los sufijos, lo siguiente que hace es irse a la SYS1.PARMLIB y construir una configuración en memoria leyendo el miembro IEASYSXX. Este, a su vez, llamara a PROGXX, y a muchos más miembros de configuración para tener listo toda la configuración de los subsistemas que luego serán cargados. Por ejemplo, se leerá el miembro JES2PARM y se cargará en memoria el JES2, y así con el resto de los productos. También se leerá la configuración del VTAM, TSO, RACF, CICS, DB2, etc, hasta que por tu terminal aparezca el login de pantalla.

Explicar la carga de estos productos sería escribir más entregas, así que si queréis mas información, os recomiendo que os leáis los ABCs que están en mi web si tenéis mas curiosidad.

Creo que hasta aquí he llegado. No se me ocurre que mas explicar sin entrar en las particularidades concretas de cada producto, así que lo que me queda por comentaros es que si tenéis inquietudes, y estáis interesados, podría escribir un último texto sobre cómo montar en tu propio PC, un sistema MVS usando un emulador llamado Hercules, y ver como recrear un sistema en explotación con JES2, TSO, JCLs, etc.

Comentarios