Máquina Flex - Flex machine

O Flex Computer System foi desenvolvido por Michael Foster e Ian Currie da Royal Signals and Radar Establishment (RSRE) em Malvern , Inglaterra, durante o final dos anos 1970 e 1980. Ele usava um esquema de armazenamento etiquetado para implementar uma arquitetura de capacidade e foi projetado para a implementação segura e eficiente de procedimentos fortemente tipados.

O hardware era personalizado e microprogramável, com sistema operacional, compilador (modular), editor, coletor de lixo e sistema de arquivamento, todos escritos em ALGOL 68RS .

Havia (pelo menos) duas encarnações do Flex, implementadas usando hardware com microcódigo gravável . O primeiro foi fornecido pela Logica para um projeto RSRE, e o segundo usou um ICL PERQ . O microcódigo sozinho era responsável pela alocação, desalocação e coleta de lixo do armazenamento. Isso impediu imediatamente toda uma classe de erros decorrentes do uso indevido (deliberado ou acidental) de ponteiros.

Uma característica notável do Flex era o repositório de arquivos com marcação e gravação única. Isso permitiu que códigos arbitrários e estruturas de dados fossem escritos e recuperados de forma transparente, sem recurso a codificações externas. Os dados podem, portanto, ser passados ​​com segurança de um programa para outro.

De maneira semelhante, os recursos remotos permitiam que dados e procedimentos em outras máquinas fossem acessados ​​por meio de uma conexão de rede, novamente sem que o programa de aplicação estivesse envolvido em codificações externas de dados, parâmetros ou valores de resultado.

Todo o esquema permitiu que tipos abstratos de dados fossem implementados com segurança, já que os itens de dados e os procedimentos permitidos para acessá-los podiam ser vinculados e a capacidade resultante transmitida livremente. A capacidade concederia acesso aos procedimentos, mas não poderia ser usada de forma alguma para obter acesso aos dados.

Outro recurso notável do Flex foi a noção de ponteiros instáveis, mais recentemente chamados de referências fracas , que apontam para blocos de memória que poderiam ser liberados na próxima coleta de lixo . Isso é usado, por exemplo, para blocos de disco em cache ou uma lista de espaços de trabalho de procedimento sobressalentes .

COMFLEX, uma rede de comutação de pacotes capaz de transmitir dados em velocidade de disco magnético, foi desenvolvida junto com o Flex. Tornou viável o uso de armazenamentos de arquivos remotos, recursos remotos e chamadas de procedimento remoto .

Veja também

Referências

Leitura adicional