# Multics

O Multics (Multiplexed Information and Computing Service) foi o primeiro sistema operacional de tempo compartilhado (CTSS - Compatible Time-Sharing System). Criado em 1964, quando seu projeto teve início, a última instalação operacional do Multics foi desligada apenas em 31 de outubro de 2000.
Originalmente, foi o resultado do projeto MAC cooperativo liderado pelo MIT(com Fernando Corbató), junto da divisão de produtos para grandes computadores da companhia General Electric e dos Laboratórios Bell de telefonia. Os laboratórios Bell abandonaram o projeto em 1969. A divisão de computadores da GE foi comprada pela Honeywell em 1970.
O Multics foi concebido como um produto comercial para GE, e foi isto que ele foi para Honeywell, apesar de não ter sido bem sucedido. Contudo, ele teve um poderoso impacto no ramo da computação, devido as suas novas e valiosas ideias. Apesar de ter sido bastante criticado na sua época, a história provou que essas reclamações eram sem fundamento.
Tinha inúmeros recursos visando a obter uma alta acessibilidade, para que fosse produzido uma utilidade computacional, similar a aquela usada pelos serviços telefônicos e elétricos. Para conseguir isto, além de ser modular em sua estrutura programacional, o seu hardware também o era, e o sistema poderia crescer em tamanho simplesmente adicionando mais recursos da fonte apropriada - poder computacional, memória principal, espaço em disco, etc. Listas de controle de acesso separadas em cada arquivo provinham o compartilhamento das informações de forma flexível, mas também provinham privacidade quando esta era necessária. Continha também uma quantidade de mecanismos padrão que permitiam que engenheiros analisassem a performance do sistema, assim como o número de mecanismos adaptativos de otmização de performance.
Segundo a visão dos seus criadores, haveria imensos computadores, poderosos e inderrubáveis, rodando Multics, sendo acessados por milhares de pessoas em terminais burros espalhadas por todo o planeta. Esses usuários pagariam suas "contas de computador" como hoje pagamos luz, água e TV a cabo.
O Multics foi distribuido e licenciado de 1975 a 2000 pelo Groupe Bull na Europa, e nos E.U.A pela Bull HN Information Systems Inc. Em 2006, Bull SAS tornou aberto o codigo fonte para as versoes MR10.2, MR11.0, MR12.0, MR12.1, MR12.2, MR12.3, MR12.4 e MR12.5 do Multics.

## Objetivos

Como descrito no artigo cientifico de 1965 Introduction and Overview of the Multics System por Corbató e Vyssotsky, os nove principais objetivos do Multics eram:
* Uso remoto e conveniente de terminais.
* Operação contínua e análoga aos serviços elétricos e telefônicos.
* Uma grande variedade de configurações do sistema, cambiáveis transparentemente.
* Um sistema de arquivos de alta confiança.
* Suporte para informação compartilhada selecionada.
* Estruturas hierárquicas de informação.
* Suporte a vários tipo de aplicações
* Suporte para vários ambientes de programação e interfaces para o usuário.
* A habilidade de evoluir o sistema com mudanças em sua tecnologia e aspirações do usuário.

## Características do Sistema
### Memória Segmentada

A arquitetura de memória do Multics divide a memória em segmentos. Cada segmento tem endereços de 0 ate 256K palavras(1 MB). O sistema de arquivos é integrado com o acesso a memória do sistema para que o acesso de arquivos pelos programas possa ser feito através de referências na memória.

### Memória Virtual

O Multics usa memória mapeada da maneira que foi inaugurada pelo sistema operacional Atlas. Endereços gerados pela CPU são traduzidos pelo hardware de um endereço virtual para um endereço real. O acesso a memória virtual é feito de maneira transparente usando um esquema de três níveis: disco, armazenamento principal e dispositivo de mapeamento.

### Implementação de linguagem de alto nível

Multics foi escrito na linguagem PL/I, que foi proposta em 1965 pela IBM. Apenas uma pequena parte do sistema operacional foi implementada em Assembly. Escrever um sistema operacional usando uma linguagem de alto nível era uma ideia bastante radical para a sua época.

### Processamento de memória multiprocessado

O hardware do Multics suporta várias CPUs compartilhando a mesma memória física. Todos os processadores são equivalentes.

### Suporte a várias linguagens

Além de PL/I, o Multics provê suporte as linguagens BCPL, BASIC, APL, FORTRAN, LISP, SNOBOL, C, COBOL, ALGOL 68 e Pascal. Rotinas em quaisquer uma dessas linguagens podem chamar as outras.

### Banco de dados relacional

O Multics proveu o primeiro banco de dados relacional da época, o Multics Relational Data Store (MRDS) em 1978.

### Segurança

O Multics foi desenvolvido para ser seguro desde o seu inicio. Em 1980 o sistema foi premiado com qualidade B2 de segurança pelo governo americano NCSC, o primeiro (e durante anos o único) sistema a ter uma qualificação B2.

### Reconfiguração on-line

Multics foi desenvolvido para rodar 7 dias por semana, 24 horas por dia. CPUs, memória, controladores de I/O, e drives de disco podem ser adicionados e removidos da configuração do sistema enquanto o sistema esta funcionando, sem precisarmos reiniciar o sistema.

### Engenharia de software

O time de desenvolvimento pôs muito esforco em encontrar formas de construir um sistema de maneira organizada. O manual do programador para o sistema Multics(The Multics System Programmer's Manual - MSPM) foi escrito antes da implementação começar. Tinhas mais de 3000 paginas e ocupava varias prateleiras. (Clingen e Corbató mencionam que não seria possível construir o sistema, sem a invenção da máquina de fotocópia). Linguagem de alto nível, design e revisão de código, programação estruturada, modularidade e criação de camadas foram todas empregadas intensivamente para gerenciar a complexidade do sistema, que foi um dos maiores esforços para desenvolvimento de software em sua época.

## Influência em outros SOs
### Unix

Ken Thompson e Dennis Ritchie, os inventores do Unix, trabalharam no Multics até que os laboratórios da Bell abandonaram o esforço no desenvolvimento do Multics em 1969. O nome do sistema Unix(originalmente Unics) é uma brincadeira com o Multics feita por Brian Kernighan. Algumas ideias do Multics foram desenvolvidas mais tarde no Unix.

### Sistemas IBM

O TSS/360 foi fortemente influenciado pelo Multics. E o MVS da IBM eventualmente tornou-se capaz de reconfigurar-se dinamicamente para adicionar processadores e memória sem precisar desligar a máquina.
O sistema System/38 da IBM mapeia arquivos em apenas um nível de armazenamento exatamente como o Multics, e o AIX o faz da mesma maneira. Ambos os sistemas derivados do IBM FS, que nunca viu a luz do dia. O IBM FS pegou emprestado a ideia de mapeamento em um nível de armazenamento do TSS/360, que por sua vez a pegou emprestado do Multics.

### VOS

O sistema operacional de Stratus, o VOS demonstra uma forte influência do Multics. Bob Freiburghouse, antigo gerenciador de linguagens do Multics, foi um dos fundadores da Stratus e muitos usuários do Multics ainda são empregados da Stratus. (Stratus é agora chamada de Stratus Technologies.)

### Outros sistemas usando anéis

Vários outros sistemas desde o Multics também tem usado anéis incluindo:
* VME/B para o ICL 2900
* AOS/VS para o Data General MV8000
* VMS para o DEC VAX