Multics - Multics

Multics
Multics logo.gif
Desenvolvedor MIT , GE , Bell Labs
Escrito em PL / I , linguagem de montagem
Estado de trabalho Maduro, histórico, emulador disponível
Modelo fonte Código aberto
lançamento inicial 1969 ; 52 anos atrás ( 1969 )
Último lançamento 12,7 / 28 de julho de 2021 ; 2 meses atrás ( 2021-07-28 )
Repositório
Disponível em inglês
Plataformas Mainframes GE-645 , máquinas da série Honeywell 6180
Tipo de kernel Kernel monolítico
Influenciado Unix , GEORGE 3 , ICL VME , PRIMOS , Domain / OS , Stratus VOS

Interface de usuário padrão
Interface da Linha de comando
Licença Originalmente proprietário ,
licença de software livre Multics desde 2007
Precedido por Sistema de Compartilhamento de Tempo Compatível
Website oficial www .multicians .org

Multics (" Multiplexed Information and Computing Service ") é um sistema operacional de compartilhamento de tempo inicial influente baseado no conceito de uma memória de nível único . Diz-se que o Multics "influenciou todos os sistemas operacionais modernos desde então, de microcomputadores a mainframes".

O planejamento inicial e o desenvolvimento do Multics começaram em 1964, em Cambridge, Massachusetts . Originalmente, era um projeto cooperativo liderado pelo MIT ( Projeto MAC com Fernando Corbató ) junto com a General Electric e Bell Labs . Ele foi desenvolvido no computador GE 645 , que foi especialmente projetado para ele; o primeiro foi entregue ao MIT em janeiro de 1967.

Multics foi concebido como um produto comercial para a General Electric e tornou-se um para a Honeywell , embora sem muito sucesso. Devido às suas muitas ideias novas e valiosas, Multics teve um impacto significativo na ciência da computação, apesar de suas falhas.

Multics tem inúmeros recursos destinam-se a garantir a alta disponibilidade para que ele iria apoiar um utilitário de computação similar aos de telefonia e eletricidade utilitários . A estrutura modular de hardware e a arquitetura de software são usadas para isso. O sistema pode aumentar de tamanho simplesmente adicionando mais recursos apropriados, seja ele capacidade de computação, memória principal ou armazenamento em disco. Listas de controle de acesso separadas em cada arquivo fornecem compartilhamento flexível de informações, mas privacidade total quando necessário. Multics tem vários mecanismos padrão para permitir que os engenheiros analisem o desempenho do sistema, bem como vários mecanismos adaptativos de otimização de desempenho.

Novas ideias

Manual de referência dos comandos Multics

O Multics implementa um armazenamento de nível único para acesso aos dados, descartando a distinção clara entre os arquivos (chamados de segmentos no Multics) e a memória do processo . A memória de um processo consiste apenas em segmentos que foram mapeados em seu espaço de endereço . Para ler ou escrever neles, o processo simplesmente usa as instruções normais da unidade de processamento central (CPU), e o sistema operacional se encarrega de certificar-se de que todas as modificações foram salvas no disco . Na terminologia POSIX , é como se todos os arquivos fossem mmap()editados; entretanto, no Multics não existe o conceito de memória de processo , separada da memória usada para manter os arquivos mapeados, como o Unix . Toda a memória do sistema faz parte de algum segmento, que aparece no sistema de arquivos ; isso inclui a memória temporária temporária do processo, sua pilha de kernel, etc.

Uma desvantagem disso era que o tamanho dos segmentos era limitado a 256 kilowords , pouco mais de 1  MB . Isso se deveu à arquitetura de hardware particular das máquinas nas quais o Multics era executado, tendo um tamanho de palavra de 36 bits e registradores de índice (usados ​​para endereçar dentro dos segmentos) com metade desse tamanho (18 bits). Código extra teve que ser usado para trabalhar em arquivos maiores do que isso, chamados de arquivos multissegmentos. Nos dias em que um megabyte de memória era proibitivamente caro, e antes de grandes bancos de dados e, posteriormente, enormes gráficos de bitmap , esse limite raramente era encontrado.

Outra grande ideia do Multics era o link dinâmico , no qual um processo em execução poderia solicitar que outros segmentos fossem adicionados ao seu espaço de endereço, segmentos que poderiam conter código que ele poderia então executar. Isso permitia que os aplicativos usassem automaticamente a versão mais recente de qualquer rotina externa chamada, uma vez que essas rotinas eram mantidas em outros segmentos, que eram vinculados dinamicamente apenas quando um processo tentava iniciar a execução neles pela primeira vez. Uma vez que diferentes processos podem usar diferentes regras de pesquisa , diferentes usuários podem acabar usando diferentes versões de rotinas externas automaticamente. Igualmente importante, com as configurações apropriadas nas instalações de segurança do Multics, o código no outro segmento poderia então obter acesso às estruturas de dados mantidas em um processo diferente.

Assim, para interagir com um aplicativo em execução em parte como um daemon (em outro processo), o processo de um usuário simplesmente executou uma instrução de chamada de procedimento normal para um segmento de código ao qual havia se vinculado dinamicamente (um segmento de código que implementou alguma operação associada a o daemon). O código nesse segmento pode então modificar os dados mantidos e usados ​​no daemon. Quando a ação necessária para iniciar a solicitação foi concluída, uma instrução de retorno de procedimento simples retornou o controle do processo do usuário para o código do usuário.

Multics também suportou reconfiguração online extremamente agressiva : unidades de processamento central , bancos de memória, drives de disco, etc. podem ser adicionados e removidos enquanto o sistema continua operando. No sistema MIT, onde a maior parte do desenvolvimento de software inicial era feito, era prática comum dividir o sistema multiprocessador em dois sistemas separados durante as horas de folga, removendo incrementalmente componentes suficientes para formar um segundo sistema de trabalho, deixando o resto ainda executando o original registrado -em usuários. O teste de desenvolvimento de software do sistema pode ser feito no segundo sistema, então os componentes do segundo sistema foram adicionados de volta ao sistema do usuário principal, sem nunca tê-lo desligado. Multics suportava múltiplas CPUs; foi um dos primeiros sistemas multiprocessadores.

Multics foi o primeiro grande sistema operacional a ser projetado como um sistema seguro desde o início. Apesar disso, as primeiras versões do Multics foram invadidas repetidamente. Isso levou a mais trabalhos que tornaram o sistema muito mais seguro e prefigurou técnicas de engenharia de segurança modernas . As invasões tornaram-se muito raras quando a base de hardware de segunda geração foi adotada; tinha suporte de hardware para segurança orientada a anel , um refinamento multinível do conceito de modo mestre . Um projeto da equipe de tigres da Força Aérea dos EUA testou a segurança de Multics em 1973 sob a palavra-código ZARF. Em 28 de maio de 1997, a American National Security Agency desclassificou o uso da palavra-código ZARF.

Multics foi o primeiro sistema operacional a fornecer um sistema de arquivos hierárquico , e os nomes dos arquivos podiam ter comprimento e sintaxe quase arbitrários. Um determinado arquivo ou diretório pode ter vários nomes (normalmente uma forma longa e curta), e links simbólicos entre os diretórios também são suportados. Multics foi o primeiro a usar o conceito agora padrão de pilhas por processo no kernel , com uma pilha separada para cada anel de segurança. Também foi o primeiro a ter um processador de comando implementado como código de usuário comum - uma ideia usada posteriormente no shell do Unix . Foi também um dos primeiros escritos em linguagem de alto nível (Multics PL / I ), após o sistema Burroughs MCP escrito em ALGOL .

A implantação do Multics em ambientes de computação seguros também estimulou o desenvolvimento de aplicativos de suporte inovadores. Em 1975, Morrie Gasser da MITER Corporation desenvolveu um gerador de palavras aleatórias pronunciáveis ​​para atender aos requisitos de senha de instalações como o Air Force Data Services Center (AFDSC) que processa informações classificadas. Para evitar senhas que podem ser adivinhadas, o AFDSC decidiu atribuir senhas, mas concluiu que a atribuição manual exigia muita sobrecarga administrativa. Assim, um gerador de palavras aleatórias foi pesquisado e desenvolvido no PL1. Em vez de ser baseado em fonemas, o sistema empregou segmentos fonêmicos (aproximações de segunda ordem do inglês) e outras regras para melhorar a pronunciável e aleatória, que foi estatisticamente modelado em comparação com outras abordagens. Um descendente deste gerador foi adicionado ao Multics durante o Project Guardian.

História do projeto

Em 1964, o Multics foi desenvolvido inicialmente para o mainframe GE-645 , um sistema de 36 bits . O negócio de computadores da GE, incluindo Multics, foi adquirido pela Honeywell em 1970; por volta de 1973, o Multics tinha suporte nas máquinas Honeywell 6180 , que incluíam melhorias de segurança, incluindo suporte de hardware para anéis de proteção .

Bell Labs desistiu do projeto em 1969; algumas das pessoas que trabalharam nele criaram o sistema Unix . O desenvolvimento do Multics continuou no MIT e na General Electric.

A Honeywell continuou o desenvolvimento do sistema até 1985. Cerca de 80 sites multimilionários foram instalados em universidades, indústrias e sites do governo. O sistema universitário francês teve várias instalações no início dos anos 1980. Depois que a Honeywell parou de oferecer suporte ao Multics, os usuários migraram para outros sistemas como o Unix.

Em 1985, o Multics recebeu a certificação de sistema operacional seguro de nível B2 usando os Critérios de Avaliação de Sistema de Computador Confiável do National Computer Security Center (NCSC), uma divisão da NSA , o primeiro sistema operacional avaliado para esse nível.

Multics foi distribuído de 1975 a 2000 pelo Groupe Bull na Europa e pela Bull HN Information Systems Inc. nos Estados Unidos. Em 2006, a Bull SAS lançou o código-fonte das versões MR10.2, MR11.0, MR12.0, MR12.1, MR12.2, MR12.3, MR12.4 e MR12.5 da Multics sob uma licença de software livre .

A última instalação conhecida do Multics em execução nativa no hardware da Honeywell foi encerrada em 30 de outubro de 2000, no Departamento Canadense de Defesa Nacional em Halifax, Nova Escócia, Canadá.

Status atual

Em 2006, a Bull HN lançou o código-fonte do MR12.5, a versão final do Multics em 1992, para o MIT. A maior parte do sistema agora está disponível como software livre, com exceção de algumas peças opcionais, como TCP / IP .

Em 2014, o Multics foi executado com sucesso no hardware atual usando um emulador. A versão 1.0 do emulador já está disponível. A versão 12.6f do Multics acompanha a versão 1.0 do emulador e adiciona alguns novos recursos, incluindo recuperação de linha de comando e edição usando o sistema de vídeo.

Comandos

A seguir está uma lista de programas e comandos para tarefas de computação comuns que são suportados pela interface de linha de comando do Multics .

Observações retrospectivas

Peter H. Salus , autor de um livro que cobre os primeiros anos do Unix, declarou uma posição: "Com o Multics eles tentaram ter um sistema operacional muito mais versátil e flexível, e falhou terrivelmente". Esta posição, entretanto, foi amplamente desacreditada na comunidade de computação porque muitas das inovações técnicas do Multics são usadas em modernos sistemas comerciais de computação.

O kernel permanentemente residente do Multics, um sistema ridicularizado em sua época por ser muito grande e complexo, tinha apenas 135 KB de código. Em comparação, um sistema Linux em 2007 pode ter ocupado 18 MB. O primeiro MIT GE-645 tinha 512 kilowords de memória (2 MiB), uma quantidade realmente enorme na época, e o kernel usava apenas uma parte moderada da memória principal do Multics.

Todo o sistema, incluindo o sistema operacional e o complexo compilador PL / 1 , comandos do usuário e bibliotecas de sub-rotinas, consistia em cerca de 1.500 módulos de origem. Cada um deles tinha em média cerca de 200 linhas de código-fonte, e foram compilados para produzir um total de aproximadamente 4,5 MiB de código de procedimento, o que era bastante grande para os padrões da época.

Os compiladores Multics geralmente otimizam mais para densidade de código do que desempenho de CPU, por exemplo, usando pequenas sub-rotinas chamadas de operadores para sequências de código padrão curtas, o que torna a comparação do tamanho do código do objeto com sistemas modernos menos útil. A alta densidade de código foi uma boa escolha de otimização para Multics como um sistema multiusuário com memória principal cara.

Durante a história de seu produto comercial, foi frequentemente comentado internamente que a equipe de vendas e marketing da Honeywell Information Systems (HIS) (posteriormente Honeywell-Bull) estava mais familiarizada e confortável em fazer o caso de negócios para outra linha de computadores da Honeywell, o DPS 6 executando GCOS . O DPS-6 e o ​​GCOS eram uma plataforma bem conceituada e confiável para aplicações de estoque, contabilidade, processamento de texto e mercado vertical, como bancos, onde tinha uma base de clientes considerável. Em contraste, todo o potencial da flexibilidade do Multics até mesmo para tarefas mundanas não era fácil de compreender naquela época e seus recursos geralmente estavam fora do conjunto de habilidades dos analistas de negócios contemporâneos. O escopo dessa desconexão foi concretizado por uma anedota transmitida por Paul Stachour, CNO / CSC:

Quando a American Telephone and Telegraph estava mudando seu nome para apenas AT&T em 1983, um funcionário do departamento jurídico da Honeywell apareceu e perguntou a um Multician se ele poderia providenciar a mudança do nome em todos os seus documentos computadorizados. Quando questionado sobre quando o processo poderia ser concluído, o Multician respondeu: "Está feito." O funcionário repetiu que precisava de centenas, talvez milhares de documentos atualizados. O Multician explicou que havia executado uma busca global e substituição enquanto o funcionário falava, e a tarefa estava de fato concluída.

Influência em outros projetos

Unix

O design e os recursos do Multics influenciaram muito o sistema operacional Unix , que foi originalmente escrito por dois programadores do Multics, Ken Thompson e Dennis Ritchie . A influência superficial do Multics no Unix é evidente em muitas áreas, incluindo a nomenclatura de alguns comandos. Mas a filosofia de design interno era bem diferente, focando em manter o sistema pequeno e simples, corrigindo assim algumas deficiências percebidas do Multics por causa de sua alta demanda de recursos no limitado hardware de computador da época.

O nome Unix (originalmente Unics ) é em si um trocadilho com Multics . O U em Unix é rumores de estar para uniplexed ao contrário do multiplexados de Multics, ressaltando ainda mais rejeições de Multics' complexidade dos projetistas em favor de uma abordagem mais simples e viável para computadores menores. (Garfinkel e Abelson citam uma origem alternativa: Peter Neumann da Bell Labs, assistindo a uma demonstração do protótipo, sugeriu o nome de trocadilho UNICS - pronunciado " eunucos " - como um "Multics castrado", embora Dennis Ritchie tenha negado isso. )

Ken Thompson, em uma entrevista transcrita de 2007 com Peter Seibel, refere-se ao Multics como "superdimensionado e superconstruído e sobre tudo. Estava quase inutilizável. Eles [Massachusetts Institute of Technology] ainda afirmam que foi um sucesso monstruoso, mas claramente não foi " Sobre a influência do Multics no Unix, Thompson afirmou que "as coisas que eu gostei o suficiente (sobre o Multics) para realmente pegar foram o sistema de arquivos hierárquico e o shell - um processo separado que você pode substituir por outro processo".

Outros sistemas operacionais

O sistema operacional Prime Computer , PRIMOS , era conhecido como "Multics in a shoebox" por William Poduska , um dos fundadores da empresa. Poduska mais tarde passou a fundar a Apollo Computer , cujo sistema operacional AEGIS e mais tarde Domain / OS , às vezes chamado de "Multics em uma caixa de fósforos", estendeu o design do Multics para um ambiente de estação de trabalho gráfica fortemente conectada em rede.

O sistema operacional Stratus VOS do Stratus Computer (agora Stratus Technologies ) foi fortemente influenciado pelo Multics, e tanto sua interface de usuário externa quanto sua estrutura interna possuem muitas semelhanças com o projeto anterior. Os recursos de alta confiabilidade, disponibilidade e segurança do Multics foram estendidos no Stratus VOS para oferecer suporte a uma nova linha de sistemas de computador tolerantes a falhas que suportam processamento de transações seguro e confiável . Stratus VOS é o descendente mais diretamente relacionado do Multics ainda em desenvolvimento ativo e uso de produção hoje.

A arquitetura de proteção de Multics, restringindo a capacidade de código em um nível do sistema para acessar recursos em outro, foi adotado como base para a segurança dispõe de ICL 's VME sistema operacional.

Veja também

Referências

Leitura adicional

A literatura contém um grande número de artigos sobre Multics e vários componentes dele; uma lista bastante completa está disponível na página de bibliografia do Multics e em uma segunda bibliografia mais resumida do Multics de 1994 (formato de texto). Os mais importantes e / ou informativos estão listados abaixo.

Detalhes técnicos

Segurança

links externos