John Kenneth Iliffe (18 de septiembre de 1931 - 16 de febrero de 2020) fue un diseñador informático británico que trabajó en el diseño y evaluación de computadoras que admitían protección de memoria de grano fino y administración de objetos. Implementó, evaluó y refinó dichos diseños en el Rice Institute Computer , R1 (1958-61) y en la ICL Basic Language Machine (1963-68). [4] [5] Una característica clave en las arquitecturas de ambas máquinas era el control por parte del hardware de la formación y el uso de referencias de memoria de modo que la memoria pudiera verse como una colección de objetos de datos de tamaños definidos cuya integridad está protegida de las consecuencias de errores en el cálculo de direcciones, como el desbordamiento de punteros de memoria (ya sea por accidente o por intención maliciosa). [6]
Iliffe asistió al curso de programación EDSAC en Cambridge en 1952. Finalmente aprendió sobre informática al dirigir la oficina de servicios de IBM (Reino Unido) en Londres. En 1958 fue invitado a unirse al equipo que construyó la computadora R1 en el Instituto Rice , Houston, en el que asumió la responsabilidad del diseño e implementación del sistema operativo y el lenguaje. [7] En los siguientes 30 años puso en funcionamiento cuatro computadoras que demostraban y evaluaban nuevos conceptos en diseño.
Iliffe dirigió el desarrollo del sistema operativo y el lenguaje de programación para la computadora Rice . Su diseño incluyó una instancia temprana de asignación y gestión dinámica de memoria, que permitía a los programas adquirir almacenamiento a pedido y recuperarlo automáticamente cuando ya no era accesible. [8] [9]
En la R1 [7] Iliffe y sus colegas introdujeron un esquema de protección para todos los objetos de datos. La manipulación de referencias a la memoria (denominadas palabras de código ) se restringió al código privilegiado, lo que impidió algunos tipos de error de programa. Las palabras de código hacían referencia a vectores de elementos de datos, secuencias de instrucciones u otras palabras de código. Se accedía al almacenamiento por referencia a una palabra de código y esto se resolvía en una dirección convencional o contador de programa que daba acceso directo al almacenamiento cuando era necesario. El sistema proporcionaba funciones para crear, gestionar y actualizar palabras de código, por ejemplo cambiándolas para reflejar decisiones de gestión de almacenamiento. También admitía un lenguaje de programación algebraica (llamado Genie) que se implementó utilizando conceptos de diseño orientado a objetos en 1961. [10] El compilador Genie y el ensamblador asociado eran inusuales al permitir que todo el sistema fuera tratado como una disciplina de gestión de objetos. Genie también estuvo entre los primeros lenguajes en incluir operaciones intrínsecas en vectores y matrices reales y complejos.
La conocida estructura de almacenamiento vectorial de Iliffe para matrices multidimensionales e irregulares surgió del trabajo de R1. Aprovecha una estructura de direccionamiento similar, pero sin aplicación del sistema.
A principios de los años 1960, existía una fuerte necesidad de que los ordenadores de propósito general permitieran la ejecución simultánea de múltiples programas de usuario, tanto en forma de multiprogramación para optimizar el uso de los recursos del ordenador como en forma de tiempo compartido para permitir la computación interactiva . Ambos requisitos requieren una arquitectura informática en la que el sistema operativo pueda garantizar la separación, seguridad e integridad de varios programas que se ejecutan simultáneamente. Parecía claro que el modelo simplificado de arquitectura derivado del IAS de Princeton y seguido por todos los modelos “von Neumann” se encontraría con graves dificultades para satisfacer ese requisito.
La Basic Language Machine (BLM), [5] construida y evaluada en el departamento de investigación de International Computers Limited (ICL) entre 1963 y 1968 [11] fue el primer sistema de propósito general que rompió por completo con la arquitectura de Von Neumann . En lugar de basar la arquitectura en un único espacio de direcciones lineal, la BLM ofrecía direccionamiento de memoria segmentado, lo que permitía la gestión automática del almacenamiento y el acceso dentro de límites de seguridad precisos.
Iliffe adoptó la visión de ingeniería de que debería ser posible ofrecer una manera, basada en las técnicas de administración de memoria ya demostradas en Rice R1, de asegurar la integridad de los programas concurrentes sin recurrir a mecanismos relativamente costosos que involucran el intercambio frecuente de vectores de estado de proceso vistos en la mayoría de los otros sistemas. Desarrolló un diseño basado en el uso de palabras de código para representar todas las referencias de memoria. Una palabra de código incluía una dirección base , un límite que especificaba la longitud de un objeto de datos y alguna información de tipo . La representación interna de las palabras de código era opaca para los programas de usuario, pero se proporcionaban instrucciones de máquina específicas para manipularlas de manera que mantuvieran la estructura de datos. Eso representó un refinamiento sustancial de la arquitectura Rice R1, proporcionando la gestión eficiente de múltiples procesos, cada uno con un almacén de datos e instrucciones estructurado en árbol separado.
El Rice R1 y el BLM fueron ejemplos de arquitecturas informáticas basadas en descriptores que surgieron en la década de 1960 [6] destinadas tanto a la protección eficiente de programas que se ejecutaban simultáneamente como a la implementación confiable de lenguajes de alto nivel . El otro gran ejemplo fue la serie de computadoras B5000 desarrollada y comercializada por Burroughs Corporation. Todas estas computadoras basadas en descriptores incluían mecanismos de hardware diseñados para soportar el direccionamiento confiable de segmentos de datos. Están estrechamente relacionadas con las arquitecturas basadas en capacidades [6] que surgieron unos años después.
En paralelo con la construcción del BLM, un equipo de evaluación independiente lo evaluó en términos de (1) eficiencia del programa, (2) características operativas, (3) costos de codificación y depuración y (4) sobrecarga del sistema. Para realizar una comparación significativa, se utilizaron lenguajes de alto nivel heredados (Cobol, Fortran, gestión de archivos). Se demostró que, a pesar de la precisión del mecanismo de direccionamiento, no hubo una pérdida notable de eficiencia ni sobrecarga adicional del sistema.
Levy [6] analiza el impacto más amplio de las arquitecturas informáticas basadas en descriptores con referencia tanto al Burroughs B5000 como al BLM (p. 38) "... independientemente de si duraron mucho o no, estas máquinas demostraron la viabilidad de utilizar descriptores y segmentación para aumentar en gran medida la flexibilidad de programación para el usuario, los compiladores y el sistema operativo". Levy también señala que "en Advanced Computer Design [12] de Iliffe aparece una excelente discusión del BLM en el contexto de los sistemas de capacidad modernos ".
El diseño de BLM fue rechazado por la gerencia de ICL en una revisión interna de opciones para seleccionar una nueva arquitectura para los productos mainframe de ICL en diciembre de 1969. [13]
En el año 2000, Iliffe recibió el premio IEEE Harry H. Goode Memorial "por su trayectoria en la práctica del diseño y evaluación de sistemas informáticos".
Los cambios en la tecnología de semiconductores durante los 30 años posteriores al desarrollo del BLM llevaron a mejoras en la arquitectura. En ausencia de fondos para la investigación, se evaluaron principalmente mediante simulación utilizando microprocesadores de bajo costo y en Advanced Computer Design [12] de Iliffe se describen con cierto detalle.
{{cite book}}
: |website=
ignorado ( ayuda ) (Manual de referencia para el lenguaje Genie, con información sobre el entorno de ejecución y programas de utilidad relacionados. Atribuido por Iliffe a Jane G. Jodeit).