Articulo de referencia

ICL VME

VME ( Virtual Machine Environment ) es un sistema operativo para ordenadores centrales desarrollado por la empresa británica International Computers Limited (ICL, ahora parte de...

VME ( Virtual Machine Environment ) es un sistema operativo para ordenadores centrales desarrollado por la empresa británica International Computers Limited (ICL, ahora parte del grupo Fujitsu ). Desarrollado originalmente en la década de 1970 (como VME/B , posteriormente VME 2900 ) para controlar los entonces nuevos ordenadores centrales de la serie ICL 2900 , ahora se denomina OpenVME , incorpora un subsistema Unix y se ejecuta en ordenadores centrales ICL Series 39 y Trimetra [ 1 ] , y en servidores x86-64 estándar de la industria . [ 2 ]

Orígenes

El programa de desarrollo del sistema New Range comenzó con la fusión de International Computers and Tabulators (ICT) y English Electric Computers en 1968. Una de las decisiones fundamentales fue que contaría con un nuevo sistema operativo. Dentro de ICL se llevaron a cabo varios estudios de viabilidad y diseño, siendo los tres más destacados:

  • VME/B (originalmente System B), dirigido a procesadores grandes como el 2970/2980 y desarrollado en Kidsgrove , Staffordshire y West Gorton , Manchester.
  • VME/K (originalmente System T), dirigido a sistemas de gama media como el 2960 y desarrollado en Bracknell después de que se descartara el diseño original para estos pequeños procesadores, System D. VME/K se desarrolló e introdujo en el mercado, pero finalmente fue reemplazado por VME/B.
  • VME/T, que nunca llegó a lanzarse, merece ser mencionado ya que fue concebido para brindar "tolerancia a fallos" y precedió a los esfuerzos de la exitosa empresa emergente estadounidense Tandem Computers en esta área.

El principal arquitecto de VME/B fue Brian Warboys , quien posteriormente se convirtió en profesor de ingeniería de software en la Universidad de Manchester . En su diseño se aprecian diversas influencias, como Multics y el sistema operativo George 3 de ICL ; sin embargo, fue diseñado prácticamente desde cero.

VME/B se consideraba que competía principalmente con el mainframe System/370 de IBM como sistema operativo comercial, y adoptó la codificación de caracteres EBCDIC . [ 3 ]

Historia

Cuando New Range se lanzó por primera vez en octubre de 1974, su sistema operativo se conocía como "System B". Para cuando se entregó por primera vez, ya se llamaba "VME/B". [ 4 ]

VME/K (conocido internamente como "System T" por "Tiny") fue desarrollado de forma independiente (según Campbell-Kelly, "por capricho de Ed Mack") y se entregó posteriormente con los mainframes más pequeños, como el 2960. En aquel momento, VME/B todavía sufría problemas de rendimiento y fiabilidad, y el equipo directivo, mayoritariamente estadounidense, tenía reservas al respecto.

También existió un proyecto conocido como Sistema D, un sistema operativo avanzado y altamente modular diseñado para configurar y construir aplicaciones personalizadas casi en tiempo real. Si bien se utilizó para presentar una oferta para un sistema de British Rail, posteriormente se canceló debido a limitaciones de recursos de ingeniería.

ICL vendió un sistema de gran tamaño a la Agencia Espacial Europea para procesar datos de Meteosat en su centro de operaciones en Darmstadt . Se desarrolló in situ una variante personalizada de VME/K, conocida como VME/ESA, para satisfacer las necesidades del cliente.

Tras una crisis financiera en 1980, se incorporó una nueva dirección a ICL: Christophor Laidlaw como presidente y Robb Wilmot como director general. Una de las primeras decisiones de la nueva dirección fue abandonar VME/K. [ 5 ] Así, en julio de 1981, se lanzó VME 2900. [ 4 ] : 340 Aunque se presentó a la base de clientes como una fusión de VME/B y VME/K, en realidad era la base de VME/B con algunas características seleccionadas de VME/K injertadas. Esto brindó la oportunidad de eliminar algunas características obsoletas, que permanecieron disponibles para los clientes que las necesitaban en forma de la opción "BONVME".

El sufijo "2900" se eliminó en la versión del sistema 213 (SV213) cuando ICL lanzó la Serie 39 en 1985 como sucesora de la serie 2900 original, y el prefijo "Open" se agregó después de la SV294. VME se volvió capaz de alojar aplicaciones escritas originalmente para Unix a través de un subsistema basado en UNIX System V Release 3 , llamado VME/X, adaptado para ejecutarse bajo VME y utilizando la codificación de caracteres ASCII . [ 6 ] [ 7 ] [ 8 ]

En 2007, Fujitsu anunció una versión de VME que se ejecutaba como un subsistema alojado, llamado superNova , dentro de Microsoft Windows , o SUSE o Red Hat Enterprise Linux en hardware x86-64 . [ 2 ]

En 2012, el grupo de usuarios de VME, AXiS, anunció que después de casi 40 años se disolvería debido a la reducción de su base de usuarios. [ 9 ]

Fujitsu tenía previsto ofrecer soporte para VME en los ordenadores de sus clientes hasta 2020. [ 10 ]

En 2020, Fujitsu transfirió 13 aplicaciones de HM Revenue and Customs desde sus computadoras a la plataforma de alojamiento virtual gestionado VME de Fujitsu. [ 11 ] [ 12 ]

A partir de 2021, el Departamento de Trabajo y Pensiones reemplazó por completo sus sistemas basados ​​en VME, tras la finalización de su galardonado programa de reemplazo VME-R. [ 13 ]

Arquitectura

VME se estructura como un conjunto de capas, cada una con acceso a recursos en diferentes niveles de abstracción. Los recursos virtuales proporcionados por una capa se construyen a partir de los recursos virtuales ofrecidos por la capa inferior. El acceso a los recursos de cada capa se controla mediante un conjunto de niveles de acceso: para que un proceso pueda usar un recurso en un nivel de acceso específico, debe tener una clave de acceso que le otorgue acceso a ese nivel. El concepto es similar a los "anillos de protección" de Multics . La arquitectura permite 16 niveles de acceso, de los cuales los 6 externos están reservados para el código de nivel de usuario.

De forma ortogonal a los niveles de acceso, el sistema operativo pone recursos a disposición de las aplicaciones en forma de una máquina virtual (VM). Una VM puede ejecutar múltiples procesos. En la práctica, una VM en VME se asemeja más al concepto de proceso en otros sistemas operativos, mientras que un proceso VME (o subproceso creado por la aplicación) se parece más a un hilo en otros sistemas. Sin embargo, los procesos que se ejecutan dentro de una VM no pueden ejecutarse simultáneamente y, por lo tanto, se asemejan a los hilos de usuario que se encuentran en otros sistemas. [ 14 ] : 32 Se requiere una instrucción específica para la transferencia de control entre procesos que comparten la misma VM. [ 8 ] : 483

La asignación de recursos a una máquina virtual utiliza un modelo de pila: al extraer un elemento de la pila, se liberan todos los recursos asignados a ese nivel. Por lo tanto, las llamadas de una aplicación al sistema operativo se realizan mediante una llamada que conserva la misma pila de procesos, pero con un cambio en el nivel de protección; la eficiencia resultante de las llamadas al sistema es una de las características que hacen que esta arquitectura sea competitiva.

La comunicación entre máquinas virtuales se logra mediante eventos (canales de comunicación con nombre) y áreas de memoria compartida. La arquitectura de hardware también proporciona las instrucciones de semáforo INCT (incremento y prueba) y TDEC (prueba y decremento).

Los archivos y otros objetos persistentes se registran en un repositorio llamado Catálogo. La jerarquía de nombres de archivos es independiente de la ubicación de un archivo en una cinta o volumen de disco específico. En una época en la que se necesitaba más almacenamiento fuera de línea, esto facilitaba el seguimiento de los archivos independientemente de su ubicación y su traslado entre ubicaciones sin necesidad de renombrarlos. Además de archivos, el Catálogo registra usuarios y grupos de usuarios, volúmenes, dispositivos, conexiones de red y muchos otros recursos. Los metadatos de los archivos pueden almacenarse en un objeto llamado Descripción de archivo. El Catálogo fue probablemente el primer ejemplo de lo que más tarde se denominaría una base de datos entidad-relación .

Las interrupciones se gestionan creando un nuevo marco de pila en la pila para el proceso correspondiente, gestionando la interrupción utilizando este nuevo entorno y, a continuación, eliminando elementos de la pila para volver al proceso interrumpido.

Las excepciones en tiempo de ejecución, denominadas contingencias , son capturadas por el controlador de errores del programa objeto (OPEH), que puede generar un informe (equivalente a un rastreo de pila ), ya sea de forma interactiva o escribiéndolo en un registro.

OMF

El código objeto compilado se mantiene en un formato llamado OMF (Object Module Format), que es tanto la salida del compilador como el formato utilizado por el cargador. Existen varios compiladores y utilidades, entre las que destacan Collector, que enlaza el código de varios módulos OMF en un único módulo para una carga más eficiente en tiempo de ejecución, y Module Amender, que permite modificar las instrucciones de un módulo OMF para corregir errores mediante sintaxis de lenguaje ensamblador.

SCL

El lenguaje de comandos para VME se conoce como SCL (System Control Language).

Se trata de un lenguaje de programación de alto nivel tipado mucho más reconocible que los lenguajes de control de trabajos o de shell que se encuentran en la mayoría de los demás sistemas operativos: se puede comparar con lenguajes de scripting como JavaScript , aunque su sintaxis superficial deriva de Algol 68 .

SCL está diseñado para permitir tanto el uso interactivo línea por línea desde una consola o un archivo de comandos , como la creación de scripts o programas ejecutables (cuando el lenguaje se compila en formato de módulo objeto, al igual que cualquier otro lenguaje de programación VME). La declaración de un procedimiento dentro de SCL también actúa como la definición de un formulario o plantilla simple que permite invocar el procedimiento desde una terminal interactiva, con campos validados según los tipos de datos de los parámetros del procedimiento subyacente o utilizando los valores predeterminados de los parámetros del procedimiento.

El vocabulario de comandos integrado utiliza una convención de nomenclatura consistente con un verbo imperativo seguido de un sustantivo: por ejemplo, DELETE_FILE o MOSTRAR_BIBLIOTECA_DETALLES. El comando se puede escribir completo o en forma abreviada, combinando abreviaturas estándar para el verbo y el sustantivo: por ejemplo, XF (X de DELETE, F de FILE) o DLBD (D de MOSTRAR, LB de BIBLIOTECA, D de DETAILS).

SCL tiene una estructura de bloques, donde los bloques de inicio y fin cumplen la doble función complementaria de definir el ámbito léxico de las declaraciones de variables y los puntos en los que se deben liberar los recursos adquiridos del sistema operativo. Las variables en este lenguaje (a las que las aplicaciones pueden acceder como variables de entorno ) pueden tener varios tipos simples, como cadenas, supercadenas (secuencias de cadenas), booleanos y enteros, y también se utilizan para contener referencias a recursos del sistema, como archivos y conexiones de red.

Es posible "desensamblar" un programa SCL desde OMF y convertirlo de nuevo en código fuente SCL mediante el comando READ_SCL (o RSCL). Sin embargo, el resultado no siempre es perfecto y a menudo incluye errores que impedirían la recompilación sin la intervención del usuario.

Un ejemplo de código sencillo puede verse en el sitio web de 99 botellas de cerveza . [ 15 ]

A continuación se muestra un ejemplo más realista, donde se utiliza SCL para compilar un programa escrito en S3 . Este ejemplo proviene del archivo de implementaciones de Kermit de la Universidad de Columbia . [ 16 ]

COMENZAR CUANDO SEA RESULTADO GT 0 +_ ENTONCES +_ ENVIAR_MENSAJE_RESULTADO (RES = RESULTADO, ACTUAR = "QUITAR()") FI INT KMT_SRC, KMT_OMF, KMT_REL ASIGNAR_BIBLIOTECA (NOMBRE = KERMIT.FUENTE, LNA = KMT_SRC) ASSIGN_LIBRARY (NAM = KERMIT.OMF, LNA = KMT_OMF) ASIGNAR_BIBLIOTECA (NOMBRE = KERMIT.REL, LNA = KMT_REL) COMENZAR ELIMINAR_FILE (NAM = *KMT_OMF.KMT_DATA_MODULE(101)) ELIMINAR_ARCHIVO (NAM = *KMT_OMF.KMT_DH_MODULE(101)) ELIMINAR_ARCHIVO (NAM = *KMT_OMF.KMT_EH_MODULE(101)) ELIMINAR_ARCHIVO (NAM = *KMT_OMF.KMT_FH_MODULE(101)) ELIMINAR_ARCHIVO (NAM = *KMT_OMF.KMT_HELP_MTM(101)) ELIMINAR_FILE (NAM = *KMT_OMF.KMT_MAIN_MODULE(101)) ELIMINAR_ARCHIVO (NAM = *KMT_OMF.KMT_PH_MODULE(101)) ELIMINAR_ARCHIVO (NAM = *KMT_OMF.KMT_PP_MODULE(101)) ELIMINAR_FILE (NAM = *KMT_OMF.KMT_SP_MODULE(101)) ELIMINAR_ARCHIVO (NAM = *KMT_OMF.KMT_SP_MTM(101)) ELIMINAR_ARCHIVO (NAM = *KMT_OMF.KMT_UI_MODULE(101)) ELIMINAR_ARCHIVO (NOM = *KMT_REL.KERMIT(101)) ELIMINAR_ARCHIVO (NOM = *KMT_REL.KERMIT_MODULE(101)) FIN S3_COMPILE_DEFAULTS (LIS = OBJETO y REFERENCIA EXTERNA, DIS = LÍNEAS DE ERROR) S3_COMPILE (INP = *KMT_SRC.KMT_DATA_MODULE(101), OMF = *KMT_OMF.KMT_DATA_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_DH_MODULE(101), OMF = *KMT_OMF.KMT_DH_MODULE(101)) S3_COMPILE (ENTRADA = *KMT_SRC.KMT_EH_MODULE(101), OMF = *KMT_OMF.KMT_EH_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_FH_MODULE(101), OMF = *KMT_OMF.KMT_FH_MODULE(101)) NUEVO_MÓDULO_DE_TEXTO_DE_MENSAJE (CON = *KMT_SRC.KMT_HELP_MTM(101), OMF = *KMT_OMF.KMT_HELP_MTM(101)) S3_COMPILE (INP = *KMT_SRC.KMT_MAIN_MODULE(101), OMF = *KMT_OMF.KMT_MAIN_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_PH_MODULE(101), OMF = *KMT_OMF.KMT_PH_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_PP_MODULE(101), OMF = *KMT_OMF.KMT_PP_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_SP_MODULE(101), OMF = *KMT_OMF.KMT_SP_MODULE(101)) NUEVO_MÓDULO_DE_TEXTO_DEL_MENSAJE (CON = *KMT_SRC.KMT_SP_MTM(101), OMF = *KMT_OMF.KMT_SP_MTM(101)) S3_COMPILE (INP = *KMT_SRC.KMT_UI_MODULE(101), OMF = *KMT_OMF.KMT_UI_MODULE(101)) RECOLECTAR () ---- ENTRADA(*KMT_OMF.KMT_DATA_MODULE(101) & *KMT_OMF.KMT_DH_MODULE(101) & *KMT_OMF.KMT_EH_MODULE(101) & *KMT_OMF.KMT_FH_MODULE(101) & *KMT_OMF.KMT_HELP_MTM(101) & *KMT_OMF.KMT_MAIN_MODULE(101) & *KMT_OMF.KMT_PH_MODULE(101) & *KMT_OMF.KMT_PP_MODULE(101) & *KMT_OMF.KMT_SP_MODULE(101) & *KMT_OMF.KMT_SP_MTM(101) & *KMT_OMF.KMT_UI_MODULE(101)) NUEVOMÓDULO(*KMT_REL.KERMIT_MODULE(101)) REPRIMIR RETENIR(KERMIT_LA_RANA) MÓDULO DE LISTA LLEVAR A CABO ++++ COMPILE_SCL (INP = *KMT_SRC.KERMIT(101), SALIDA = *KMT_REL.KERMIT(101), COD = NOTIFWARNINGS, OPT = FIL) FIN 

Los comandos ilustrados en este fragmento incluyen WHENEVER (declara la política de manejo de errores), ASSIGN_LIBRARY (vincula un nombre local para un directorio de archivos), DELETE_FILE (convierte un archivo permanente en temporal y luego lo elimina al FINAL del bloque), S3_COMPILE (compila un programa escrito en S3: este comando rompe la convención habitual verbo-sustantivo), NEW_MESSAGE_TEXT_MODULE (crea un módulo que contiene mensajes de error parametrizados adecuados para la localización) y COMPILE_SCL, que compila un programa SCL en código objeto.

El comando COLLECT combina diferentes módulos de código objeto en un único módulo y se controla mediante su propio archivo de comandos local, que se incorpora en línea en el SCL entre los delimitadores "----" y "++++". Los subcomandos INPUT y NEWMODULE identifican los nombres de los módulos de entrada y salida; SUPPRESS y RETAIN determinan la visibilidad externa de los procedimientos con nombre dentro del módulo recopilado; y LISTMODULE solicita un informe que describe el módulo de salida.

Tenga en cuenta que el punto (.) se utiliza para separar las partes de un nombre de archivo jerárquico. Un asterisco inicial indica un nombre local para una biblioteca, vinculada mediante el comando ASSIGN_LIBRARY. El número entre paréntesis después del nombre del archivo es un número de generación. El sistema operativo asocia un número de generación a cada archivo, y las solicitudes de un archivo obtienen la última generación a menos que se especifique lo contrario. Por defecto, al crear un archivo nuevo se crea la siguiente generación y se deja intacta la anterior; sin embargo, este programa elige deliberadamente crear la generación 101 para identificar una versión pública.

Variantes de seguridad mejoradas

Como resultado de la gran implicación de ICL en la prestación de servicios informáticos al sector público del Reino Unido, en particular a aquellos con requisitos de seguridad especiales como OPCON CCIS , fue uno de los primeros en entrar en el mercado de los sistemas seguros .

VME constituyó un pilar fundamental de las actividades de ICL en el ámbito de los sistemas seguros. Tenía la ventaja de que, al ser el último sistema operativo a gran escala jamás diseñado y construido desde cero, su arquitectura subyacente abarcaba muchas de las primitivas necesarias para desarrollar un sistema seguro, en particular los registros de control de acceso (ACR) asistidos por hardware para limitar los privilegios que podía obtener cualquier proceso (incluidos los usuarios).

Esto llevó a que la Agencia Central de Computación y Telecomunicaciones ( CCTA ) del Gobierno del Reino Unido financiara el Proyecto Spaceman a mediados de la década de 1980 para que el Centro de Tecnología de Defensa (DTC) de ICL desarrollara una variante de seguridad mejorada de VME. [ 17 ] ICL lanzó esto como un par de productos complementarios, con la versión comercial llamada Opción de Alta Seguridad (HSO) y la versión para el sector público, que incluía tecnologías de Cifrado Proporcionado por el Gobierno (GFE), llamada Opción de Seguridad del Gobierno (GSO).

HSO y GSO fueron sometidos a pruebas formales bajo el esquema de evaluación de seguridad CESG del Reino Unido, uno de los predecesores de ITSEC y Common Criteria , y al hacerlo se convirtieron en el primer sistema operativo de uso general en obtener la certificación formal.

Interoperabilidad entre Unix y sistemas abiertos

ICL anunció originalmente una instalación Unix alojada para VME en 1985, con disponibilidad y soporte para aplicaciones estratégicas en un plazo de dieciocho meses. [ 18 ] Esta instalación, compatible con SVR1 , se encontraba supuestamente en "pruebas de campo" y se actualizaría a SVR2 antes de su lanzamiento general en el verano de 1987. [ 19 ] Posteriormente, se anunció una disponibilidad limitada para los clientes existentes de VME, y se recomendó a los demás que utilizaran la gama Clan de sistemas departamentales Unix de ICL. [ 20 ]

En octubre de 1987, ICL puso a disposición la versión SV221 de VME con soporte para ejecutar SVR2 como invitado del sistema Unix VME. [ 21 ] Esta implementación, descrita como un producto "no comercializado" también conocido como VNS, sirvió de base para el diseño de VME/X, una implementación en gran parte nueva que se lanzó en 1991 y se reconoció como compatible con XPG3, con compatibilidad con XPG4 base 1 en 1992. [ 8 ] : 489–490 El material promocional de OpenVME de ICL señaló que VME había sido el primer sistema operativo no Unix en obtener compatibilidad con XPG3, y el primer sistema operativo de cualquier tipo en obtener compatibilidad con XPG4 base. [ 22 ]

En 1995, ICL añadió soporte para el conjunto de protocolos de Internet mediante su opción de interoperabilidad UNIX para OpenVME, que incluía implementaciones de TCP/IP, UDP/IP y soporte para los protocolos de transferencia de archivos , Telnet y sistema de archivos de red (NFS). La funcionalidad NFS incluía un servidor que permitía que partes del almacén de archivos de OpenVME se sirvieran a clientes NFS, y la funcionalidad Telnet permitía a los usuarios de un sistema OpenVME acceder a hosts Unix, además de proporcionar una función de inicio de sesión en OpenVME para usuarios remotos que utilizaran el protocolo. Junto con la interfaz de programación de sockets de Berkeley , ya ampliamente utilizada por las aplicaciones Unix, el producto también ofrecía la interfaz de transporte X/Open para la independencia de protocolos y para dar soporte a los protocolos OSI que habitualmente utiliza el software VME. [ 23 ]

Serie 39

La gama Serie 39 introdujo la Arquitectura Nodal, una novedosa implementación de memoria compartida distribuida que puede considerarse un híbrido entre un sistema multiprocesador y un diseño de clúster . Cada máquina consta de varios nodos , y cada nodo contiene su propio procesador de código de orden (CPU) y memoria principal. Las máquinas virtuales suelen estar ubicadas (en un momento dado) en un nodo, pero tienen la capacidad de ejecutarse en cualquier nodo y de ser reubicadas entre nodos. Los discos y otros periféricos se comparten entre nodos. Los nodos se conectan mediante un bus óptico de alta velocidad, que se utiliza para proporcionar a las aplicaciones una memoria virtual compartida. Los segmentos de memoria marcados como compartidos (segmentos públicos o globales) se replican en cada nodo, y las actualizaciones se difunden a través de la red entre nodos. Los procesos que utilizan segmentos de memoria no compartida (nodales o locales) se ejecutan de forma totalmente aislada de otros nodos y procesos.

Proceso de desarrollo

VME se escribió originalmente casi en su totalidad en S3 , un lenguaje de programación de sistemas especialmente diseñado basado en Algol 68R (sin embargo, VME/K se escribió principalmente en lenguaje ensamblador SFL). Aunque se utiliza un lenguaje de alto nivel , el sistema operativo no está diseñado para ser independiente de la arquitectura de hardware subyacente: por el contrario, la arquitectura de software y la de hardware están estrechamente integradas.

Desde principios de la década de 1990 en adelante, algunos subsistemas VME completamente nuevos se escribieron parcial o totalmente en el lenguaje de programación C.

Desde sus inicios, VME se desarrolló con la ayuda de un sistema de repositorio de ingeniería de software conocido como CADES , diseñado y administrado originalmente por David Pearson (científico informático) y construido para tal fin utilizando una base de datos IDMS subyacente . CADES no es simplemente un sistema de control de versiones para módulos de código: gestiona todos los aspectos del ciclo de vida del software, desde la captura de requisitos, la metodología de diseño y la especificación hasta el mantenimiento en campo. CADES se utilizó en el desarrollo de módulos VME para almacenar definiciones separadas de estructuras de datos (Modos), constantes (Literales), interfaces de procedimiento y algoritmos centrales. Podían existir múltiples versiones ('Vidas') de cada uno de estos componentes. Los algoritmos se escribieron en System Development Language (SDL), que luego se convirtió a código fuente S3 [ 24 ] mediante un preprocesador. Se podían generar múltiples versiones de los mismos módulos.

Herramientas de desarrollo de aplicaciones

Las herramientas de desarrollo de aplicaciones que ofrece VME se dividen en dos categorías:

El conjunto de herramientas de VME es inusualmente homogéneo, ya que la mayoría de los clientes utilizan el mismo conjunto básico de lenguajes y herramientas. Como resultado, las herramientas están muy bien integradas. Las herramientas de terceros han tenido una presencia relativamente discreta.

Durante muchos años, la gran mayoría de los usuarios de VME desarrollaron aplicaciones en COBOL , utilizando generalmente la base de datos IDMS y el monitor de procesamiento de transacciones TPMS . Otros lenguajes de programación incluían Fortran , Pascal , ALGOL 68RS , Coral 66 y RPG2 , pero estos eran utilizados por una minoría. Posteriormente, a mediados de la década de 1980, se desarrollaron compiladores para C, tanto dentro como fuera del subsistema Unix, principalmente para facilitar la portabilidad de software como los sistemas de bases de datos relacionales . Cabe destacar que la EEC desarrolló un compilador de subconjuntos PL/I para ayudar en la portabilidad de programas de IBM al hardware ICL.

Los compiladores desarrollados dentro de ICL comparten una arquitectura común y, en algunos casos, comparten componentes como generadores de código. Muchos de los compiladores usaban un módulo llamado ALICE [Assembly Language Internal Common Environment] y producían una forma temprana de código precompilado (P-Code) denominada ROSE, lo que hacía que las bibliotecas OMF (Object Module Format) compiladas se pudieran cargar en cualquier máquina del rango.

Lenguajes de programación de sistemas: S3 y SFL

El lenguaje principal utilizado para desarrollar tanto el sistema operativo VME como otro software del sistema, como compiladores y monitores de procesamiento de transacciones, es S3 . Se trata de un lenguaje de alto nivel basado en muchos aspectos en Algol 68 , pero con tipos de datos, funciones y operadores de bajo nivel estrechamente alineados con la arquitectura de la serie 2900.

También está disponible un lenguaje ensamblador, SFL ( System Function Language ). Este se utilizó para el desarrollo de VME/K, cuyos diseñadores no confiaban en que un lenguaje de alto nivel pudiera ofrecer un rendimiento adecuado, y también para el núcleo del sistema de base de datos IDMS debido a su origen como producto de terceros. SFL se denominó originalmente Macro Assembly Programming Language ( MAPLE ) , pero dado que la arquitectura 2900 se estaba posicionando como compuesta por máquinas de lenguaje de alto nivel , el nombre se cambió a petición del departamento de marketing de ICL. Se había desarrollado como parte del conjunto de herramientas para System D, que posteriormente se canceló. Se desarrollaron familias relacionadas de ensambladores para otras arquitecturas (CALM-xx ejecutándose bajo VME, PALM-xx desarrollado en Pascal y ejecutándose en varios hosts) para uso interno.

Ni S3 ni SFL se promocionaron jamás como herramientas de desarrollo comercial para aplicaciones de usuario final, ya que no se incluían normalmente como parte estándar del sistema operativo ni se comercializaban explícitamente como productos independientes. Sin embargo, tanto SFL como S3 estaban disponibles como opciones para organizaciones usuarias y terceros que las necesitaran específicamente.

Construcción rápida

El entorno de desarrollo de aplicaciones QuickBuild en VME ha tenido un gran éxito a pesar de que las aplicaciones están en gran medida confinadas a dicho entorno. Este entorno se centra en el Sistema de Diccionario de Datos (DDS, también llamado OpenDDS), un intento inicial y muy exitoso de crear un repositorio integral que admita todas las demás herramientas, con soporte completo para el ciclo de vida del desarrollo. Además de los esquemas de bases de datos y las descripciones de archivos y registros, el diccionario realiza un seguimiento de objetos como informes y consultas, diseños de pantalla y código 4GL; también admite una variedad de modelos a nivel de captura de requisitos, como modelos entidad-relación y modelos de procesos.

QuickBuild 4GL se presenta en dos formatos:

  • ApplicationMaster para la creación de solicitudes de TP en línea
  • ReportMaster para informes por lotes.

Ambos son lenguajes declarativos de alto nivel que utilizan la Programación Estructurada de Jackson como paradigma de diseño. ApplicationMaster se distingue por su enfoque en el diseño de aplicaciones, ya que se centra en la sesión del usuario como si se ejecutara en un único proceso conversacional, ocultando por completo la complejidad de mantener el estado entre las interacciones del usuario. Dado que el lenguaje de cuarta generación (4GL) y otras herramientas, como el diseñador de pantallas, trabajan únicamente con el diccionario DDS, que también contiene los esquemas de la base de datos, se produce una considerable reutilización de metadatos, algo poco común en otros lenguajes de cuarta generación.

Referencias

  1. "Hoy, mañana, VME" (PDF) . Fujitsu . Archivado del original (PDF) el 22 de febrero de 2012.
  2. 1 2 Introducción a la arquitectura superNOVA (PDF) (Informe). Fujitsu. Enero de 2007. Archivado del original (PDF) el 28 de septiembre de 2007.
  3. Barry J Graham (2002). "Comparación de costos de Fujitsu OpenVME con los costos de los mainframes de IBM" (PDF) . Fujitsu Services. Archivado del original (PDF) el 1 de febrero de 2014. Consultado el 28 de enero de 2014 .
  4. 1 2 Campbell-Kelly, Martin (1989). ICL: Una historia empresarial y técnica . Oxford University Press. ISBN 0-19-853918-5Consultado el 30 de mayo de 2024 .
  5. Knight, Michael (Verano de 2008). "Beacon 1963-7: ¿Un diseño de sistema adelantado a su tiempo?" . Computer Resurrection (43). Por numerosas y variadas razones, que escapan al conocimiento o la capacidad del autor para evaluarlas, VME/K no fue un éxito, sino un trauma. VME/K fue finalmente disuelto en 1981 por el recién nombrado director general, Robb Wilmot.
  6. Dave Bailey (PowerPoint) (30 de noviembre de 2000). "El desarrollo continuo de OpenVME" . ICL. Archivado del original el 2 de febrero de 2014. Recuperado el 28 de enero de 2014 .
  7. "El Open VME de ICL resulta ser un subconjunto de Unix bajo VME; las aplicaciones están por llegar" . Computer Business Review . 10 de febrero de 1992. Consultado el 28 de enero de 2014 .{{cite news}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  8. 1 2 3 Coates, P. (1993). "VME-X: Haciendo VME abierto" (PDF) . ICL Technical Journal . ICL: 473. ISSN 0142-1557 . Archivado del original (PDF) el 5 de marzo de 2016. Recuperado el 7 de noviembre de 2015 . 
  9. Cloutt, Harold (2012). "El grupo de usuarios de ICL se disolverá tras casi 40 años de servicio leal a la comunidad VME" . AXiS. Archivado del original el 24 de marzo de 2012. Recuperado el 11 de julio de 2018 .
  10. Clark, Lindsay (21 de enero de 2022). "Quizás debería considerar el costo de no actualizar la tecnología obsoleta, según le dijeron al Departamento de Trabajo y Pensiones del Reino Unido" . The Register . Consultado el 24 de enero de 2022 .
  11. Evenstad, Lis (13 de octubre de 2020). "HMRC firma un contrato de cinco años por 169 millones de libras con Fujitsu para la plataforma VME" . Computer Weekly . Consultado el 24 de enero de 2022 .
  12. "Reino Unido-Salford: Proveedores de servicios de aplicación" . Licitaciones electrónicas diarias . Unión Europea. 12 de octubre de 2020. 2020/S 198-481324 . Consultado el 24 de enero de 2022 .
  13. Evenstad, Lis (26 de marzo de 2021). "DWP completa el proyecto interno de reemplazo de VME" . Computer Weekly . Recuperado el 27 de mayo de 2024 .
  14. Holt, Nic (1995). La arquitectura de OpenVME (PDF) . International Computers Limited. Archivado del original el 8 de noviembre de 2016. Recuperado el 21 de junio de 2024 .{{cite book}}: CS1 maint: bot: estado de la URL original desconocido ( enlace )
  15. Ejemplo de código SCL en el sitio web de 99 botellas de cerveza.
  16. "Archivo de código fuente del software Kermit" . Proyecto Kermit de la Universidad de Columbia. 22 de agosto de 2011. Consultado el 1 de marzo de 2013 .
  17. Aldrich, Richard J.; Work, JD (2022). "Proyecto Spaceman: Primeros pasos de la seguridad informática británica y el procesamiento automático de datos" . Intelligence and National Security . 38 (4): 525– 537. doi : 10.1080/02684527.2022.2139342 . Consultado el 25 de junio de 2024 .
  18. "ICL apuesta por la estrategia de sistemas abiertos" . Computerworld . 14 de octubre de 1985. págs. 30–31 . Consultado el 3 de junio de 2024 . 
  19. "Unix bajo VME ya está en fase de pruebas de campo" . Unigram/X . 27 de septiembre de 1986. pág. 4. Consultado el 22 de julio de 2024 . 
  20. "ICL establece Unix bajo VME para septiembre" . Unigram/X . 27 de junio de 1987. pág. 1. Consultado el 22 de julio de 2024 . 
  21. "ICL ofrece compatibilidad con Unix bajo la nueva versión de VME y añade modelos de mainframe 39/80 reducidos" . Unigram/X . 3 de octubre de 1987. pág. 2. Consultado el 22 de julio de 2024 . 
  22. OpenVME el camino a seguir (PDF) . International Computers Limited. 1994. pág. 2. Consultado el 6 de diciembre de 2024 . 
  23. Opción de interoperabilidad OpenVME UNIX (PDF) . International Computers Limited. 1995. págs. 2–3 . Consultado el 7 de diciembre de 2024 . 
  24. Juan F Ramil. "Estimación del esfuerzo continuo para la evolución: un estudio de caso" (PDF) . Archivado del original (PDF) el 22 de mayo de 2005. Consultado el 27 de octubre de 2011 .

Fuentes

  • La arquitectura de OpenVME . Nic Holt. Publicación ICL 55480001. Sin fecha (probablemente alrededor de 1995).
  • VME - Hacia el futuro , Fujitsu Reino Unido.