Sistema de compartilhamento de tempo compatível - Compatible Time-Sharing System

Sistema de Compartilhamento de Tempo Compatível (CTSS)
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 ; 60 anos atras ( 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 .cozx .com / dpitts / ibm7090 .html

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

links externos