Sistemas operacionais Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Introdução * Baseado no material do Prof. Luis Cláudio Gubert Introdução O que é um Sistema Operacional? Sistemas em Lote (Batch) Simples Sistemas Batchs Multiprogramados Sistemas Tempo Compartilhado (Time-Sharing) Computador Pessoal Sistemas Paralelos Sistemas Distribuídos Sistemas de Tempo Real O que é um sistema operacional ? Um programa que age como um intermediário entre um usuário de computador e o hardware. Objetivos de um sistema operacional: Executar programas do usuário e facilitar a resolução de problemas. Tornar o computador conveniente ao uso. Usar o hardware do computador de maneira eficiente. Componentes de um computador 1. Hardware provê recursos básicos de computação (CPU, memória, dispositivos de E/S). 2. Sistema Operacional controla e coordena o uso do hardware entre os vários programas aplicativos para os vários usuários. 3. Programas Aplicativos definem as formas nas quais os recursos do sistema são empregados para resolver os problemas computacionais dos usuários (compiladores, bancos de dados, jogos, programas comerciais). 4. Usuários (pessoas, máquinas, outros computadores). Visão abstrata de componentes do sistema Definições de sistemas operacionais Alocador de Recurso – gerencia e aloca recursos. Programa de Controle – controla a execução dos programas do usuário e operações dos dispositivos de E/S. Kernel – o único programa que executa sempre (todo o resto são programas aplicativos). Primeira geração (1945 – 1955) Válvulas e painéis de programação Máquinas de calcular simples Ocupavam salas inteiras O grupo que projetava era o mesmo que construia, programava, operava e realizava a manutenção Não existia sistema operacional Praticamente todos os problemas eram matemáticos com tabelas de senos, cosenos e logaritmos ENIAC - Electrical Numerical Integrator and Calculator 1000 vezes mais rápida que qualquer outra que existia na época. Painel de programação ENIAC ENIAC Centro de computação Segunda geração (1955 – 1965) Transistores e sistemas em lote Introdução do transistor mudou radicalmente o quadro Surgimente dos computadores de grande porte (mainframes) Divisão da equipe em projetistas, fabricantes, programadores e técnicos de manutenção Conceito de job Linguagem usada – FORTRAN ou linguagem de montagem Sistema de lote (batch) Computador de menor porte lia cartões e copiava para fita. Fita era colocada no mainframe que a lia e processava A saída do processamento era gravada em outra fita Essa fita era colocada novamente no computador de menor porte e então relatório de saída impresso Sistemas Batch Simples Contratar um Operador Usuário ≠ operator Adicionar um leitor de cartão perfurado Reduzir o tempo de preparação agregando jobs similares no mesmo batch Seqüenciamento Automático de Jobs – transfere o controle automaticamente de um job a outro. Primeiro sistema operacional rudimentar. Monitor Residente Controle inicial no monitor Controle é transferido para o job Quando o job está completo o controle volta para o monitor Diagrama de memória para um sistema batch simples Cartões de controle Problemas 1. Como o monitor sabe sobre a natureza do job (ex.: Fortran ou Assembly) ou qual programa executar? 2. Como um monitor distingue a) um job de outro? b) dados de programas? Solução – Introduzir Cartões de Controle Cartões de controle (cont) Cartões especiais que dizem ao monitor residente quais programas devem ser executados $JOB -- Inicio do job. Tempo em minutos dados do programador $FTN -- Job em fortran $RUN – SO deve executar o job com dados do cartao seguinte $DATA – Dados do job $END – Fim do job Caracteres especiais distinguem cartões de controle de dados ou cartões de programa: $ na coluna 1 // na coluna 1 e 2 709 na coluna 1 Cartões de controle (cont) Partes do Monitor Residente Interpretador do Cartão de Controle – responsável por ler e seguir as instruções contidas nos cartões. Carregador – carrega programas de sistema e aplicativos na memória. Drivers de Dispositivos – conhecem as características especiais e propriedades para cada um dos dispositivos de E/S. Problema: Baixo Desempenho – E/S e CPU não podem se sobrepor ; leitor de cartões muito lento. Solução: Operação off-line – acelerar a computação carregando os jobs das fitas e leitoras de cartão na memória, e imprimindo off-line. Cartões perfurados Máquina de perfufar e de leitura IBM 7030 •Primeiro supercomputador da segunda geração •Custava $ 13 milhões •Menor tamanho – Usava “somente” uma sala Centro de computação Terceira geração ( 1965 – 1980) CIs e Multiprogramação Duas linhas de computadores: comerciais e cientificos Incompativeis entre si IBM tenta resolver o problema com o System/360 Serie de computadores de diferentes portes com software compativel Maior virtude era maior fraqueza Tinha de funcionar bem em ambientes comerciais e cientificos Resultou em um SO enorme e complexo Milhões de linhas escritas em linguagem de montagem por milhares de programadores Implementou várias técnicas que não existiam nos computadores de segunda geração Spooling Multiprogramação IBM 360/91 Spooling Capacidade de transferir jobs de cartões perfurados para discos magnéticos logo que esses chegassem a sala do computador Assim que um job fosse completado poderia carregar um novo job nessa partição que acabou de ser liberada Spooling – derivado da expressão Simultaneous Peripheral Operation online Não precisava mais do computador de pequeno porte para ler os cartões e gravar em fita Multiprogramação Ociosidade da CPU entre a entrada e o processamento Sobrepor E/S de um job com a computação de outro job. Enquanto executa um job, o SO: Lê o próximo job da leitora de cartões em uma área de armazenamento no disco (fila de jobs). Envia saídas de jobs anteriores do disco para a impressora. Job pool – estrutura de dados que permite ao SO selecionar qual job executará em seguida de maneira a aumentar a utilização da CPU. Sistemas batch multiprogramados Vários jobs são mantidos na memória principal ao mesmo tempo, e a CPU é multiplexada entre eles. Características de SO necessárias para a multiprogramação Rotinas de E/S fornecidas pelo sistema. Gerenciamento de Memória – o sistema deve alocar memória para vários jobs. Escalonamento de CPU – o sistema deve escolher dentre vários jobs prontos para executar. Alocação de dispositivos. Hardware para proteger memória, processador e dispositivos de forma que um job não interfira no outro Sistemas time-sharing – computação interativa Submissão de vários jobs levava várias horas Programadores saudosos por poder usar computador por várias horas como na primeira geração Solução Divisão da CPU entre várias pessoas A CPU é multiplexada entre vários jobs que são mantidos na memória e no disco (a CPU é alocada para um job somente se ele estiver na memória). Um job é carregado e removido da memória para o disco (swapped in / out). Comunicação on-line entre o usuário e o sistema é provida; quando o sistema operacional termina a execução de um comando, ele procura a próxima “instrução de controle” não de um leitor de cartão, mas do teclado. Acesso dos usuários aos dados e código deve ser on-line no sistema. CTSS Primeiro sistema operacional de tempo compartilhado CTSS – Compatible Time Sharing System Desenvolvido pelo MIT Somente se popularizou na terceira geração quando se usou a proteção em hardware Multics MIT, Bell Labs e General Eletrics decidiram desenvolver um computador utilitario Capaz de suportar centenas de usuarios conectados ao mesmo tempo Baseado no modelo de energia eletrica Maquina somente mais potente que um Intel 386 mas com grande capacidade de E/S Multics – Multiplexed Information and Computing Service Usava o compilador PL/I que não funcionava bem Projeto fracassou não teve sucesso esperado Somente MIT prosseguiu e fez funcionar por completo Clientes como Ford, GM e Agencia de Seguranca dos EUA usaram durante 30 anos os MULTICS Introduziu novas idéias Familia PDP Outra linha que se desenvolveu: mini-computadores Iniciado com o DEC PDP-1 em 1961 Tinha somente 4k de palavras de 18 bits Cada máquina custava $120mil (menos de 5% que um 7094) Vendia como água Para certos tipos de aplicações era tão rápido quanto os 7094 Deu origem a uma nova linha de industria Diversos outros PDPs culminando no PDP-11 Ken Thompson (cientista do Bell Labs) achou um PDP-7 sem uso e escreveu uma versão despoja e monousuário do MULTICS Nascia o UNIX System V da AT&T e BSD da Berkley Posix (Portable Operating System) 1987 Minix (Tanenbaum) Linus Torvalds Linux PDP – 11 PDP-7 Unix began life... Ken (sentado) e Dennis (em pé) em um PDP-11 em 1972. Quarta geração (1980 – presente) Desenvolvimento dos circuitos integrados de larga escala ( LSI – Large Scale Integration) surgiram os computadores pessoais Semelhantes ao PDP-11 1974 – Intel lançou o 8080 primeira CPU 8 bits de propósito geral Sistema operacional CP/M (Control Program for Microcomputers) Gary Kildall desenvolveu e ganhou os direitos da Intel que não acreditava em computadores pessoais Fundação da Digital Research 1977 – Digital Research reescreveu o CP/M para rodar em diversos dispositivos. Dominio completo do mercado por cerca de 5 anos Inicio dos anos 80 IBM procura DR para usar o CP/M no seu IBM PC Não foram recebidos por Kildall Uma das piores decisões da história Bill Gates fornece o DOS para a IBM (comprado por $50 mil) Venda do SO direto aos fabricantes e não ao usuário final 1983 – Intel 80286 com DOS surge no mercado CP/M vai sumindo aos poucos Computadores pessoais Computadores Pessoais – sistemas dedicados a um único usuário. Dispositivos de E/S – teclados, mouse, monitor, impressora. Conveniência ao usuário e resposta rápida. Pode adotar tecnologias desenvolvidas para grandes sistemas operacionais – freqüentemente o uso do computador é individual e não necessita utilização de características avançadas de proteção e alocação da CPU. IBM PC – Processador 8088 4.77MHz - 1981 Intel 80286 Migração de conceitos e características de SO Sistemas paralelos Sistemas multiprocessados com uma ou mais CPU em comunicação próxima. Sistemas fortemente acoplados (Tightly coupled system) – processadores compartilham memória e um clock; comunicação normalmente ocorre através da memória compartilhada. Vantagens de Sistemas paralelos: Maior throughput Razões Econômicas Confiabilidade Maior Tolerância a falhas Sistemas paralelos (cont) Multiprocessadores simétricos (SMP) Múltiplos processadores similares conectados entre si e à memória por um barramento ou alguma outra forma de circuito de conexão interno Compartilhamento total Cada processador executa uma cópia idêntica do sistema operacional. Sistema operacional controla tudo Muitos processos podem executar ao mesmo tempo sem deterioração no desempenho. Grande parte dos sistemas operacionais modernos suportam SMP Baixa escalabilidade – gargalo no barramento. Exemplos: IBM R50, SGI Power Challenge, SUN Ultra Enterprise 10000, HP/Convex Exemplar X-Class, DEC Alpha Server 8400 Arquitetura SMP (Symmetric Multiprocessing) Exemplos de SMP Cray T90 Cray SX6 Exemplos de SMP HP Integrity rx8620-32 Server Intel Quad Xeon 7400 Server Sistemas paralelos (cont) Máquinas maciçamente paralelas (MPP) P/C P/C P/C M M M Rede de interconexão de baixa latência Rede de interconexão proprietária. Comunicação através de troca de mensagens. Exemplos: Intel Paragon, Connection Machine CM-5, IBM SP-2 Exemplos de MPP Intel Paragon IBM SP2 Connection Machine CM-5 Exemplo de MPP Blue Gene da IBM Sistemas paralelos (cont) Máquinas com memória compartilhada distribuída (DSM) P/C P/C P/C M M M Rede de interconexão de baixa latência Os processadores podem acessar todas as memórias. (único espaço de endereçamento) DSM implementado em SW, HW ou misto. Exemplos: Stanford DASH, Cray T3D, estações de trabalho rodando TreadMarks Exemplo de DSM Cray T3D Sistemas tempo real Normalmente utilizado como um dispositivo de controle em uma aplicação dedicada como controlar experimentos científicos, sistemas de imagens médicas, sistemas de controle industrial, e alguns sistemas de visualização. Limites de tempos bem definidos. Sistemas Hard real-time Armazenamento secundário limitado ou ausente, dados armazenados em memória volátil ou read-only memory (ROM) Conflitante com sistemas time-sharing, não suportado por sistemas de uso geral. Sistemas Soft real-time Utilidade limitada no controle industrial ou robótica Útil em aplicações (multimídia, realidade virtual) que necessitam de funções avançadas de SO. Sistemas distribuídos Distribuir a computação entre processadores fisicamente independentes. Sistemas fracamente acoplados (Loosely coupled system) – cada processador tem sua própria memória local; processadores se comunicam através de várias linhas de comunicação, como barramentos de alta velocidade ou linhas telefônicas. Vantagens dos Sistemas Distribuídos. Compartilhamento de Recursos Aumento na velocidade da computação – compartilhamento de carga Confiabilidade Comunicações Sistemas distribuídos (cont) Sistema Operacional de Rede Provê compartilhamento de arquivos Provê esquemas de comunicação Executa independentemente de outros computadores na rede Sistema Operacional Distribuído Menor autonomia entre computadores Dá a impressão que existe um único sistema operacional controlando a rede