El sistema informático Flex fue desarrollado por Michael Foster e Ian Currie del Royal Signals and Radar Establishment (RSRE) [1] en Malvern , Inglaterra, a finales de los años 1970 y 1980. Utilizaba un esquema de almacenamiento etiquetado para implementar una arquitectura de capacidad 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, un compilador (modular), un editor, un recolector de basura y un sistema de archivos, todos escritos en ALGOL 68RS .
Hubo (al menos) dos encarnaciones de Flex, implementadas usando hardware con microcódigo escribible . La primera fue suministrada por Logica a un diseño RSRE, [2] y la segunda usó un ICL PERQ . [3] [4] El microcódigo era el único responsable de la asignación de almacenamiento, la desasignación y la recolección de basura. Esto impidió de inmediato toda una clase de errores que surgían del mal uso (deliberado o accidental) de punteros.
Una característica notable de Flex era el almacenamiento de archivos etiquetados y de escritura única. Esto permitía escribir y recuperar código y estructuras de datos arbitrarios de forma transparente, sin recurrir a codificaciones externas. De esta forma, los datos podían pasar de un programa a otro de forma segura.
De manera similar, las capacidades remotas permitieron acceder a datos y procedimientos de 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 a los que se les permitía acceder a ellos podían vincularse entre sí y la capacidad resultante podía transmitirse libremente. La capacidad otorgaría acceso a los procedimientos, pero no podría utilizarse 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 próxima recolección de basura . Esto se utiliza, por ejemplo, para bloques de discos en caché o una lista de espacios de trabajo de procedimientos libres . [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 posible el uso de almacenes de archivos remotos, capacidades remotas y llamadas a procedimientos remotos . [6]
{{cite report}}
: CS1 maint: varios nombres: lista de autores ( enlace ){{cite report}}
: CS1 maint: varios nombres: lista de autores ( enlace )[ enlace muerto ]{{cite report}}
: CS1 maint: varios nombres: lista de autores ( enlace )[ enlace muerto ]