IBM i (la i significa integrado) es un sistema operativo desarrollado por IBM para los IBM Power Systems. Fue publicado originalmente en 1988 como OS/400, como el único sistema operativo de la línea de sistemas AS/400. Se le cambió el nombre a i5/OS en 2004, antes de cambiarle el nombre por segunda vez a IBM i en 2008. Es una evolución del sistema operativo CPF del System/38, con capas de compatibilidad para aplicaciones SSP del System/36 y AIX. Hereda una serie de características distintivas de la plataforma System/38, incluida la interfaz de máquina, la implementación de direccionamiento basado en objetos en la parte superior de un almacenamiento de un solo nivel y la estrecha integración de una base de datos relacional en el sistema operativo.
Historia
Origen
OS/400 se desarrolló junto con la plataforma de hardware AS/400 a partir de diciembre de 1985. El desarrollo comenzó después de la falla del Fort Knox, que dejó a IBM sin un sistema de rango medio competitivo. Durante el proyecto Fort Knox, los ingenieros iniciaron un proyecto Skunkworks en Rochester, que logró desarrollar código que permitía que las aplicaciones System/36 se ejecutaran sobre System/38, y cuando se canceló Fort Knox, este proyecto se convirtió en un proyecto oficial para reemplazar System/36 y System/38 con una nueva plataforma única de hardware y software. El proyecto se conoció como Silverlake (llamado así por Silver Lake en Rochester, Minnesota).
El sistema operativo de Silverlake recibió el nombre en código XPF (CPF extendido), y originalmente había comenzado como un port de CPF para el hardware del Fort Knox. Además de agregar soporte para aplicaciones System/36, algunas de las funciones de interfaz de usuario y facilidad de uso del System/36 se transfirieron al nuevo sistema operativo.
Silverlake estuvo disponible para pruebas de campo en junio de 1988 y se anunció oficialmente en agosto de ese año. En ese momento, se le cambió el nombre a Application System/400 (Sistema de Aplicaciones/400), y el sistema operativo se llamó Operating System/400 (Sistema operativo/400).
El salto a PowerPC
El port a PowerPC requirió una reescritura de la mayor parte del código debajo de TIMI. Las primeras versiones de OS/400 heredaron las capas microcódigo horizontal y vertical del System/38, aunque se les cambió el nombre a Código Interno Licenciado Horizontal (HLIC) y Código Interno Licenciado Vertical (VLIC) respectivamente. El port al nuevo hardware llevó a que el conjunto de instrucciones IMPI y el microcódigo horizontal que lo implementaba fueran reemplazados por el conjunto de instrucciones PowerPC AS y su implementación en los procesadores PowerAS. Esto requirió que el VLIC se reescribiera para apuntar a PowerPC en lugar de IMPI, y que la funcionalidad del sistema operativo previamente implementada en el HLIC se volviera a implementar en otro lugar. Esto condujo al HLIC y al VLIC siendo reemplazado por una sola capa llamada «Código interno con licencia del sistema» (SLIC). El SLIC se implementó en un estilo orientado a objetos con más de 2 millones de líneas de código C++, reemplazando parte del código HLIC y la mayor parte del código VLIC. Debido a la cantidad de trabajo necesario para implementar el SLIC, IBM Rochester contrató a varios cientos de programadores de C++ para el proyecto, quienes trabajaron en SLIC en paralelo con las nuevas revisiones de VLIC para los sistemas CISC AS/400. La primera versión del OS/400 para admitir hardware basado en PowerPC era la V3R6.
Cambio de marca thumb|Logotipo de IBM i5/OS
La línea de productos AS/400 cambió de nombre varias veces durante las décadas de 1990 y 2000. Como parte del cambio de nombre de 2004 a eServer i5, OS/400 pasó a llamarse ' 'i5/OS'; el 5 significa el uso de procesadores POWER5. IBM describió la primera versión de i5/OS, V5R3, como «un nombre diferente para el mismo sistema operativo».
En 2006, IBM cambió el nombre de la línea AS/400 por última vez a System i. En abril de 2008, IBM consolidó System i con la plataforma System p para crear IBM Power Systems. Al mismo tiempo, se cambió el nombre de i5/OS a IBM i para eliminar la asociación con los procesadores POWER5. Las dos versiones más recientes del sistema operativo en ese momento, que se habían lanzado como i5/OS V5R4 y V6R1, fueron renombradas como IBM i 5.4 y 6.1.
Junto con el cambio de marca a IBM i, IBM cambió la nomenclatura de versiones para el sistema operativo. Los lanzamientos anteriores usaban un esquema de "Versión, lanzamiento, modificación", p.e. V2R1M1. Esto fue reemplazado por un esquema Version.Release, p. 6.1. A partir de IBM i 7.1, IBM reemplazó las versiones de modificación con Actualizaciones de tecnología. Las actualizaciones tecnológicas se entregan como PTF para versiones específicas del sistema operativo que agregan nuevas funciones o soporte de hardware al sistema.
Arquitectura + Diagrama que muestra las capas arquitectónicas del sistema operativo IBM i y su relación con el hardware y las aplicaciones de usuario. NativeApplications S/36 and S/38EnvironmentApplications UNIXApplications XPF PASE TIMI syscall Interface SLIC IBM Power Hardware
Cuando IBM i se lanzó por primera vez como OS/400, se dividió en dos capas, el Código interno con licencia del sistema (SLIC) dependiente del hardware y la Instalación del programa de control extendido (XPF) independiente del hardware. Estos están divididos por una capa de abstracción de hardware llamada Interfaz de máquina independiente de tecnología (TIMI). Las versiones posteriores del sistema operativo ganaron capas adicionales, incluida una capa de compatibilidad AIX denominada Entorno de soluciones de aplicaciones portátiles (originalmente conocido como Entorno de espacio de direcciones privadas),< y el entorno Advanced 36 Machine que ejecutaba aplicaciones System/36 SSP en emulación.
IBM suele utilizar diferentes nombres para TIMI, SLIC y XPF en la documentación y los materiales de mercadeo, por ejemplo, la documentación de IBM i 7.4 se refiere a ellos como Interfaz de máquina de IBM i, Código interno con licencia de IBM i y IBM i Operating System respectivamente.
TIMI El TIMI aísla a los usuarios y las aplicaciones del hardware subyacente. Este aislamiento es más completo que las abstracciones de hardware de otros sistemas operativos e incluye la abstracción de la arquitectura del conjunto de instrucciones del procesador, el tamaño del espacio de direcciones y los detalles de E/S y persistencia. Esto se logra a través de dos mecanismos interrelacionados:
Los compiladores para IBM i no generan código de máquina nativo directamente, sino que generan una representación intermedia de alto nivel definida por el TIMI. Cuando se ejecuta un programa, el sistema operativo lleva a cabo la traducción de las instrucciones TIMI al código de máquina nativo para el procesador, y almacena el código de máquina generado para la ejecución futura del programa. Si el proceso de traducción cambia, o se adopta un conjunto de instrucciones de CPU diferente, el sistema operativo puede regenerar de forma transparente el código de máquina a partir de las instrucciones TIMI sin necesidad de volver a compilar el código fuente. En lugar de operar sobre direcciones de memoria, las instrucciones TIMI operan sobre objetos. Todos los datos en IBM i, como archivos de datos, código fuente, programas y regiones de memoria asignada, están encapsulados dentro de objetos administrados por el sistema operativo (cf. el modelo «todo es un archivo» en Unix). Los objetos de IBM i tienen un tipo fijo, que define el conjunto de operaciones aplicables que se pueden realizar en ellos (por ejemplo, un objeto Programa se puede ejecutar, pero no se puede editar). El modelo de objetos oculta si los datos se almacenan en almacenamiento primario o secundario. En cambio, el sistema operativo maneja automáticamente el proceso de recuperación y luego almacena los cambios en el almacenamiento permanente.
El aislamiento de hardware provisto por TIMI permitió a IBM reemplazar la arquitectura IMPI de 48 bits del AS/400 con la arquitectura RS64 de 64 bits en 1995. Las aplicaciones compiladas en sistemas que usan el conjunto de instrucciones IMPI podrían ejecutarse sobre los nuevos sistemas RS64 sin cambios de código, recompilación o emulación, al mismo tiempo que permite que esas aplicaciones aprovechen el direccionamiento de 64 bits.
Hay dos formatos diferentes de instrucciones TIMI, conocidos como formatos de Interfaz de máquina original (OMI) y Interfaz de máquina nueva (NMI). Las instrucciones OMI son esencialmente las mismas que las instrucciones #Interfaz de máquina del System/38, mientras que las instrucciones NMI son de nivel inferior, se asemejan al formato de representación intermedia código W utilizado por los compiladores de IBM. IBM documenta parcialmente las instrucciones OMI, mientras que las instrucciones de NMI no están documentadas oficialmente. Las instrucciones OMI son utilizadas por los compiladores AS/400 originales, mientras que las instrucciones NMI son utilizadas por los compiladores Integrated Language Environment. Durante el port a PowerPC, se eliminó el soporte nativo para el formato OMI y se reemplazó con un traductor que convirtió las instrucciones OMI en instrucciones NMI.
El almacenamiento de las instrucciones TIMI junto con las instrucciones del código máquina nativo se conoce como «observabilidad». En 2008, el lanzamiento de i5/OS V6R1 (más tarde conocido como IBM i 6.1) introdujo una serie de cambios en la capa TIMI que causaron problemas para el software de terceros que eliminaron la observabilidad de los objetos de aplicación enviados a los clientes.
SLIC thumb|right|IBM i durante carga del programa inicial del SLIC
El SLIC consta del código que implementa el TIMI sobre la arquitectura IBM Power. Además de contener la mayor parte de la funcionalidad típicamente asociada con un núcleo de sistema operativo, es responsable de traducir las instrucciones TIMI a código de máquina, y también implementa algunas funciones de alto nivel que se exponen a través del TIMI, como la base de datos relacional integrada de IBM i. El SLIC implementa el modelo de almacenamiento basado en objetos de IBM i sobre un esquema de direccionamiento de almacenamiento de un solo nivel, que no distingue entre el almacenamiento primario y secundario y, en su lugar, administra todos los tipos de almacenamiento en un único espacio de direcciones virtuales. El SLIC se implementa principalmente en C++ y reemplazó a HLIC y VLIC, utilizados en versiones de OS/400 anteriores a V3R6.
XPF El XPF consta del código que implementa los componentes independientes del hardware del sistema operativo, que se compilan en instrucciones TIMI. Los componentes del XPF incluyen la interfaz de usuario, el lenguaje de control, utilidades de consulta y gestión de datos, herramientas de desarrollo y utilidades de gestión de sistemas. El XPF también contiene System/36 Environment y System/38 Environment, que proporcionan API y utilidades compatibles con versiones anteriores para aplicaciones y datos migrados desde sistemas SSP y CPF. XPF es el nombre interno de IBM para esta capa y, como sugiere el nombre, comenzó como una evolución del Control Program Facility de System/38. El XPF se implementa principalmente en PL/MI, aunque también se utilizan otros lenguajes.
PASE PASE (Portable Applications Solutions Environment) proporciona compatibilidad binaria para ejecutables AIX de modo de usuario que no interactúan directamente con el kernel de AIX, y es compatible con interfaz binaria de aplicaciones de AIX de 32 y 64 bits. PASE se incluyó por primera vez de forma limitada e indocumentada en la versión V4R3 de OS/400 para admitir un puerto de Smalltalk. Se anunció por primera vez a los clientes en el momento del lanzamiento de la versión V4R5, momento en el que ya había obtenido una funcionalidad adicional significativa.