Sistema de compartilhamento de tempo compatível - Compatible Time-Sharing System
Desenvolvedor | Centro de Computação do MIT |
---|---|
Escrito em | Montagem FAP , MAD |
Estado de trabalho | Descontinuado, simulador disponível |
Modelo fonte | Código aberto |
lançamento inicial | 1961 |
Alvo de marketing | Apenas MIT |
Disponível em | inglês |
Plataformas | IBM 7090 , IBM 7094 |
Tipo de kernel | Monolítico , protegido |
Interface de usuário padrão |
Interface da Linha de comando |
Licença | [ dados desconhecidos / ausentes ] |
Sucedido por | Multics |
Website oficial | www |
História dos sistemas operacionais de mainframe IBM |
---|
O Compatible Time-Sharing System ( CTSS ) foi um dos primeiros sistemas operacionais de compartilhamento de tempo ; foi desenvolvido no MIT Computation Center . O CTSS foi demonstrado pela primeira vez no IBM 709 do MIT em novembro de 1961; O serviço para usuários do MIT começou no verão de 1963 e foi operado até 1973. Durante parte desse período, o influente Projeto MAC do MIT também executou um serviço CTSS, mas o sistema não se espalhou para além desses dois sites.
O CTSS foi descrito em um artigo apresentado na Spring Joint Computer Conference de 1962 e influenciou muito o projeto de outros sistemas antigos de compartilhamento de tempo.
Sistema Experimental de Compartilhamento de Tempo
John Backus disse na sessão de verão de 1954 no MIT que "Com o compartilhamento de tempo, um grande computador poderia ser usado como vários pequenos; seria necessário haver uma estação de leitura para cada usuário". Os computadores daquela época, como o IBM 704 , não eram poderosos o suficiente para implementar tal sistema, mas no final de 1958, o Centro de Computação do MIT, no entanto, adicionou uma entrada de máquina de escrever ao seu 704 com a intenção de que um programador ou operador pudesse "obter respostas adicionais de a máquina em regime de compartilhamento de tempo com outros programas que usam a máquina simultaneamente ".
Em junho de 1959, Christopher Strachey publicou um artigo "Time Sharing in Large Fast Computers" na Conferência de Processamento de Informações da UNESCO em Paris, onde imaginou um programador depurando um programa em um console (como um teletipo ) conectado ao computador, enquanto outro programa estava sendo executado no computador ao mesmo tempo. A depuração de programas era um problema importante naquela época, porque com o processamento em lote, muitas vezes demorava um dia desde o envio de um código alterado até a obtenção dos resultados. John McCarthy escreveu um memorando sobre isso no MIT, após o qual um comitê de estudo preliminar e um comitê de trabalho foram estabelecidos no MIT, para desenvolver o compartilhamento de tempo. Os comitês previram muitos usuários usando o computador ao mesmo tempo, decidiram os detalhes da implementação do sistema no MIT e iniciaram o desenvolvimento do sistema.
Em julho de 1961, alguns comandos de compartilhamento de tempo haviam se tornado operacionais no IBM 709 do Centro de Computação e, em novembro de 1961, Fernando J. Corbató demonstrou no MIT o que foi chamado de "Sistema Experimental de Compartilhamento de Tempo". Em 3 de maio de 1962, FJ Corbató, MM Daggett e RC Daley publicaram um artigo sobre esse sistema na Spring Joint Computer Conference . Robert C. Daley, Peter R. Bos e pelo menos 6 outros programadores implementaram o sistema operacional, parcialmente baseado no Fortran Monitor System .
O sistema usava um IBM 7090 , modificado por Herbert M. Teager , com a adição de 3 Flexowriters para consoles de usuário e talvez um cronômetro . Cada um dos 3 usuários tinha duas unidades de fita , uma para o diretório de arquivos do usuário e outra para despejar o núcleo (programa na memória). Havia também uma unidade de fita para os comandos do sistema, não havia unidades de disco. A memória era de 27 k palavras (palavras de 36 bits) para os usuários e 5 k palavras para o supervisor (sistema operacional). A entrada dos consoles era gravada nos buffers do supervisor, por interrupções , e quando um caractere de retorno era recebido, o controle era dado ao supervisor, que despejava o código em execução na fita e decidia o que executar em seguida. Os comandos do console implementados na época eram login, logout, input, edit, fap, mad, madtrn, load, use, start, skippm, listf, printf, xdump e xundump .
Esta se tornou a versão inicial do Sistema de Compartilhamento de Tempo Compatível. Esta foi aparentemente a primeira demonstração pública de compartilhamento de tempo ; existem outras reivindicações, mas se referem a sistemas de propósito especial, ou sem nenhum artigo conhecido publicado. A "compatibilidade" do CTSS era com trabalhos em segundo plano executados no mesmo computador, que geralmente usava mais recursos de computação do que funções de compartilhamento de tempo.
Recursos
- O CTSS teve um dos primeiros utilitários de formatação de texto computadorizados, chamado RUNOFF (o sucessor do DITTO).
- O CTSS teve uma das primeiras implementações de mensagens entre usuários, possivelmente inventando o e-mail .
- Louis Pouzin, membro da equipe do MIT Computation Center, criou para o CTSS um comando chamado RUNCOM , que executava uma lista de comandos contidos em um arquivo. (Mais tarde, ele criou um design para o shell Multics que foi implementado por Glenda Schroeder que por sua vez inspirou scripts de shell Unix .) RUNCOM também permitia a substituição de parâmetros.
- O CTSS tinha o editor de texto QED , o predecessor de ed , vi e vim , com expressões regulares adicionadas por Ken Thompson .
- CTSS foi o primeiro sistema de computador a implementar login por senha.
Implementação
Núcleo
O CTSS usou um computador mainframe IBM 7090 modificado que tinha dois bancos de 32.768 (32K) palavras de 36 bits de memória central em vez do normal. Um banco foi reservado para o programa de supervisão de time-sharing, o outro para programas de usuário. O CTSS tinha um kernel de modo protegido, as funções do supervisor no A-core (banco de memória A) podiam ser chamadas apenas por interrupções de software, como nos sistemas operacionais modernos. Causando interrupções de proteção de memória foram usadas para interrupções de software. A programação de alocação do processador com uma unidade de tempo quântico de 200 ms foi controlada por uma fila de feedback multinível . Ele também tinha algum hardware especial de gerenciamento de memória, uma interrupção de clock e a capacidade de interceptar certas instruções.
Supervisor de sub-rotinas
- RDFLXA - Leia uma linha de entrada do console
- WRFLX - Escreva uma linha de saída para o console
- DEAD - Coloca o usuário em estado morto, sem nenhum programa na memória
- DORMNT - Coloca o usuário em status dormente, com o programa na memória
- GETMEM - Obtenha o tamanho da alocação de memória
- SETMEM - Definir o tamanho da alocação de memória
- TSSFIL - Obtenha acesso aos arquivos de sistema CTSS no disco
- USRFIL - Voltar para o diretório do próprio usuário
- GETBRK - Obtenha o contador de localização da instrução ao sair
Linguagens de programação
A princípio, o CTSS tinha apenas um FAP montador e um MAD compilador . Além disso, o código Fortran II pode ser traduzido em um código MAD. Mais tarde, a metade do sistema foi escrita em MAD. Mais tarde, surgiram outras linguagens de programação como LISP e uma versão do ALGOL .
Sistema de arquivo
Cada usuário tinha seu próprio diretório e também havia diretórios compartilhados para grupos de pessoas com o mesmo "número do problema". Cada arquivo tinha dois nomes, o segundo indicando seu tipo, assim como a extensão no sistema posterior. A princípio, cada arquivo poderia ter um dos quatro modos: temporário, permanente, classe 1 somente leitura e classe 2 somente leitura. A classe 1 somente leitura permitia ao usuário alterar o modo do arquivo. Os arquivos também podem ser vinculados simbolicamente entre os diretórios. Uma listagem de diretório por listf :
10 FILES 20 TRACKS USED DATE NAME MODE NO. TRACKS 5/20/63 MAIN MAD P 15 5/17/63 DPFA SYMTB P 1 5/17/63 DPFA BSS P 1 5/17/63 DPFA FAP P 2
Sub-rotinas de controle de disco
- .DUMP - Despeja um bloco contínuo no arquivo
- .LOAD - Carrega um bloco contínuo do arquivo
- .ASIGN - Prepara o arquivo para escrita.
- .APEND - Prepara o arquivo para anexar
- .SEEK - Prepara o arquivo para leitura
- .RELRW - Prepara o arquivo para leitura e escrita
- .WRITE - Grava dados em um local relativo no arquivo
- .READK - Lê dados de um local relativo no arquivo
- .FILE - Termina a gravação do arquivo
- .ENDRD - Termina a leitura do arquivo
- .DLETE - Excluir um arquivo
- .RENAM - Renomear um arquivo e alterar seu modo
- .FILDR - Obtenha uma cópia do diretório de arquivos do usuário
- .FSTAT - obtém informações sobre um arquivo
Comandos de console
- login - Entrar no sistema
- logout - logout do sistema
- listf - lista os arquivos no diretório
- input - código-fonte de entrada, linhas de tamanho fixo
- editar - Edite o código-fonte em um estilo BASIC com números de linha
- printf - Imprimir arquivo a partir de um número de linha
- fap - montador FAP
- mad - compilador MAD
- madtrn - tradutor de Fortran II para MAD
- load - Carrega binários (vinculação na memória)
- use - Carrega binários ausentes
- start - executa o programa carregado na memória.
- salvar - Salvar programa na memória para o arquivo
- retomar - carregar o programa salvo e continuar a executá-lo
- pm - Obter informações post-mortem do programa na memória
- patch - Editar memória
- tra - Criar transferência para um local relativo em um programa
- stopat - Criar transferência para parar o programa em um local
- renomear - Renomear arquivo
- chmode - altera o modo do arquivo
- delete - Excluir arquivo, tinha * curingas
- dividir - Dividir arquivo
- combin - Unir arquivos, também arquivos binários, criando bibliotecas
- cpu - Obtenha as condições atuais da máquina
- octlk - Memória de impressão
- memo - arquivos de texto de entrada, linhas de tamanho variável
- modificar - edita arquivos de texto, semelhante à edição
- idem - Imprimir arquivos de texto com formatação (notas de rodapé, páginas)
Periféricos
O hardware de entrada e saída consistia principalmente em periféricos IBM padrão . Estes incluíram seis canais de dados conectando-se a:
- Impressoras, leitores de cartões perfurados e perfuradores
- Unidades de fita IBM 729 , um armazenamento em disco IBM 1301 , posteriormente atualizado para um IBM 1302 , com capacidade de 38 milhões de palavras
- Uma memória de tambor IBM 7320 com 186K palavras que poderia carregar um banco de memória de 32K palavras em um segundo (posteriormente atualizado para 0,25 segundos)
- Dois visores gráficos vetoriais personalizados de alta velocidade
- Uma unidade de controle de transmissão IBM 7750 capaz de suportar até 112 terminais de teleimpressora , incluindo IBM 1050 Selectrics e Teletype Model 35s. Alguns dos terminais estavam localizados remotamente e o sistema podia ser acessado por meio das redes públicas Telex e TWX .
Influências
Multics , que também foi desenvolvido pelo Projeto MAC, foi iniciado na década de 1960 como um sucessor do CTSS - e por sua vez inspirou o desenvolvimento do Unix em 1969. Um dos termos técnicos herdados por esses sistemas do CTSS é daemon .
Incompatible Timesharing System (ITS), outro sistema antigo, revolucionário e influente de compartilhamento de tempo do MIT, foi produzido por pessoas que discordavam da direção tomada pelo CTSS e, posteriormente, pelo Multics; o nome era uma paródia de "CTSS", já que mais tarde o nome "Unix" era uma paródia de "Multics".
Veja também
Referências
Leitura adicional
- Fano, Robert M. (1964). "O sistema MAC: um relatório de progresso" (PDF) . BitSavers.Informatik.Uni-Stuttgart.de . Projeto MIT MAC.
- Saltzer, Jerome H. (1965). "Notas técnicas do CTSS" (PDF) . BitSavers.Informatik.Uni-Stuttgart.de . Projeto MIT MAC.
- Saltzer, Jerome H. (1964). "Digitação e edição de manuscritos" . Web.MIT.edu . Centro de Computação do MIT.
links externos
- Um Sistema Experimental de Compartilhamento de Tempo , Fernando J. Corbató, Marjorie Merwin Daggett, Robert C. Daley, Centro de Computação, Instituto de Tecnologia de Massachusetts, Cambridge, Massachusetts
- Sistema de compartilhamento de tempo compatível (1961-1973): Visão geral comemorativa do cinquentenário
- Entrevista de história oral com John McCarthy , Charles Babbage Institute , University of Minnesota. Discute os desenvolvimentos do computador no MIT, incluindo compartilhamento de tempo.
- O IBM 7094 e CTSS : memórias pessoais de Tom Van Vleck , um programador de sistema em CTSS
- A Origem do Shell descreve a evolução do RUNCOM para o shell moderno
- Fonte CTSS na coleção de Paul Pierce.
- CIO: 40 anos de Multics, 1969-2009 : Entrevista com o desenvolvedor CTSS e Multics Fernando J. Corbato.
- Entrevista de história oral com Fernando J. Corbató , Instituto Charles Babbage , Universidade de Minnesota. Discute muitos desenvolvimentos de computador no MIT, incluindo CTSS.
- Entrevista de história oral com Robert M. Fano , Instituto Charles Babbage , Universidade de Minnesota. Discute os desenvolvimentos de computador no MIT, incluindo CTSS.
- Suporte a IBM 7094 de Dave Pitts - Inclui um simulador, cross assembler e linker que pode ser usado para construir e executar CTSS. O site também contém a fonte CTSS. O CTSS funciona totalmente no simulador.