El Flex Computer System fue desarrollado por Michael Foster e Ian Currie de Royal Signals and Radar Establishment (RSRE) [1] en Malvern , Inglaterra, a finales de los años 1970 y 1980. Utilizó un esquema de almacenamiento etiquetado para implementar una arquitectura de capacidades y fue diseñado para la implementación segura y eficiente de procedimientos fuertemente tipados.
El hardware era personalizado y microprogramable, con un sistema operativo, compilador (modular), editor, recolector de basura y sistema de archivo, todo escrito en ALGOL 68RS .
Hubo (al menos) dos encarnaciones de Flex, implementadas utilizando hardware con microcódigo grabable . El primero fue suministrado por Logica con un diseño RSRE, [2] y el segundo utilizó un ICL PERQ . [3] [4] El microcódigo por sí solo era responsable de la asignación, desasignación y recolección de basura del almacenamiento. Esto excluyó inmediatamente toda una clase de errores derivados del mal uso (deliberado o accidental) de los punteros.
Una característica notable de Flex fue el almacén de archivos etiquetado de escritura única. Esto permitió escribir y recuperar códigos y estructuras de datos arbitrarios de forma transparente, sin recurrir a codificaciones externas. De este modo, los datos podrían pasarse de forma segura de un programa a otro.
De manera similar, las capacidades remotas permitieron acceder a datos y procedimientos en otras máquinas a través de una conexión de red, nuevamente sin que el programa de aplicación estuviera involucrado en codificaciones externas de datos, parámetros o valores de resultados.
Todo el esquema permitió implementar de forma segura tipos de datos abstractos , ya que los elementos de datos y los procedimientos permitidos para acceder a ellos podían vincularse y la capacidad resultante se transmitía libremente. La capacidad otorgaría acceso a los procedimientos, pero no podría usarse de ninguna manera para obtener acceso a los datos.
Otra característica notable de Flex fue la noción de punteros inestables, más recientemente llamados referencias débiles , que apuntan a bloques de memoria que podrían liberarse en la siguiente recolección de basura . Esto se utiliza, por ejemplo, para bloques de disco almacenados en caché o una lista de espacios de trabajo de procedimientos de repuesto . [5]
Junto con Flex se desarrolló COMFLEX, una red de conmutación de paquetes capaz de transmitir datos a la velocidad de un disco magnético. Hizo factible el uso de almacenes de archivos remotos, capacidades remotas y llamadas a procedimientos remotos . [6]
{{cite report}}
: Mantenimiento CS1: varios nombres: lista de autores ( enlace ){{cite report}}
: Mantenimiento CS1: varios nombres: lista de autores ( enlace )[ enlace muerto ]{{cite report}}
: Mantenimiento CS1: varios nombres: lista de autores ( enlace )[ enlace muerto ]