Introdução Introdução aos Sistemas Operacionais 1 2 3... n Ambientes Operacionais Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani Compilador Editor de texto Browser Programas Aplicativos Quake Sistema Operacional (infraestrutura) Hardware 1 2 Introdução Recursos gerenciados pelo SO 1 2 3... n Tempo de CPU Compilador Editor de Browser texto Aplicativos Sistema Operacional (infraestrutura) Hardware Quake Espaço de memória Espaço em disco Periféricos Hardware = Recursos físicos Aplicativos = Resolvem os problemas dos usuários Sistema Operacional = Controla e coordena o uso do hardware pelas aplicações 3 4 SO é um programa de controle SO existe porque é útil Controla dispositivos de I/O e os programas que resolvem os problemas dos usuários Previne erros e o uso impróprio do computador Cria um sistema computacional usável As aplicações possuem necessidades em comum que são atendidas pelo SO: alocação e controle de recursos 5 6
Uma definição para Sistema Operacional O objetivo do SO é permitir o uso do computador de forma fácil e eficiente. Pode-se dizer que o SO de um computador é a parte de software que estende os recursos de hardware da máquina, tornando a utilização do equipamento mais fácil, mais eficiente e mais confiável. Primeiros sistemas - somente hardware programas carregados na memória através de chaves, fita de papel ou cartões perfurados inicio da execução através de botões andamento da execução acompanhado através de luzes no painel resultado em papel (impressora), fita de papel ou cartão perfurado 7 8 Se ocorria erro, o programa era parado para que a memória e os registradores fossem examinados. Consertava-se o programa e repetia-se o processo. Programador = operador Tabela de horário para reservas de horas de máquina Quando surgiram FORTRAN e COBOL, a operação ficou mais difícil Execução de um programa FORTRAN: Carrega fita magnética com o compilador Lê programa de cartões, gera assembler em cartão Carrega fita com o montador Lê o programa assembler e gera código de máquina, sem as rotinas da biblioteca. Carrega fita com o ligador Lê código de máquina e liga com as rotinas da biblioteca, gerando código EXE carrega EXE e executa programa 9 10 Características do Ambiente Grande tempo de preparação para colocar e retirar fitas e colocar e tirar cartões Erro em qualquer etapa = volta ao início Durante a preparação a CPU ficava parada Uso de operadores profissionais = preparação mais rápida programador sem acesso à console Lotes (batches): jobs com necessidades parecidas reunidos em lotes para minimizar as trocas de fitas Melhorou, mas ainda em muitos momentos a CPU ficava parada 11 12
Monitor residente Pequeno programa que ficava o tempo todo na memória, transferindo automaticamente o controle de um job para outro (era um seqüenciador automático de jobs) Sua vantagem era a redução do tempo desperdiçado entre 2 jobs do mesmo batch Pode ser considerado o primeiro SO criado (bastante rudimentar). Organização do Monitor Residente Tabela de interrupção Controladores de Dispositivos (drivers) Interpretador de cartões e Seqüenciador de jobs Área para programas dos usuários 13 14 Monitor Residente Em resumo, o monitor residente: implementa um interpretador de linguagem de comandos (linguagem para comunicação com o SO) implementa rotinas que facilitam o uso do harware Performance Todas mudanças feitas visaram obter melhor desempenho do computador O maior avanço foi a operação humana ter sido substituída pelo monitor residente Contudo, a CPU passava a maior parte do tempo esperando por I/O (dispositivos mecânicos) Enquanto um compilador era capaz de processar 300 linhas (cartões) por segundo, a leitora conseguia ler apenas 2 cartões/seg (i.é, a CPU ficava parada em 93% do tempo, durante a compilação) Técnicas para minimizar o problema: operação off-line bufferização spooling 15 16 Operação off-line Um computador satélite lia cartões e gravava suas imagens em fita magnética O computador principal trabalhava apenas com fitas magnéticas: Dados eram lidos de fitas magnéticas (não de cartões) e resultados eram escritos em fitas magnéticas (não em impressoras), pois estas unidades eram bem mais rápidas que leitoras de cartão e impressoras Os resultados das execuções (gravados em fita) eram descarregados na impressora por outro computador satélite Bufferização Tenta manter a CPU e os dispositivos de I/O o tempo todo ocupados Operação de I/O acontece em paralelo com a computação, via canais (I/O processors) Comunicação através de buffer 17 18
Bufferização - características O buffer pode ser grande, mas é limitado Maior eficiência é obtida quando o uso do buffer está associado com interrupções Quando um dispositivo de I/O termina a tarefa, ele interrompe a CPU. O hardware salva o contexto de execução na pilha e busca o endereço do tratador de interrupções na tabela de interrupção A bufferização é pouco eficiente no caso de jobs do tipo I/O-bound (job que faz muito I/O) ou CPU-bound (job que faz pouco I/O). Spooling Técnica que utiliza o disco como um grande buffer. E/S e computação são realizadas simultaneamente. Fitas mágnéticas: acesso seqüencial (não permite acesso simultâneo) Disco magnético: acesso a qualquer posição e a qualquer momento 19 20 Spooling Os jobs a serem executados ficam em filas, no disco. Existem tabelas que indicam a localização dos jobs e de seus dados. Job pool: estrutura de dados importante, identifica os jobs que se encontram no disco prontos para a execução Job scheduling: processo de escolha do próximo processo a ser executado entre os que estão no disco Multiprogramação Aumenta a utilização da CPU, tendo sempre algum programa para executar: um job é escolhido e inicia a execução job pára devido a um I/O SO escolhe outro job e inicia sua execução (sem multiprogramação, a CPU teria que parar) quando o primeiro job é liberado (acaba o seu I/O) ele fica apto a receber a CPU novamente 21 22 Multiprogramação Sistemas Operacionais Clássicos Os primeiros sistemas multiprogramados foram implementados através da extensão da técnica de spooling. O SO continha 3 grandes processos: input spooler executive output spooler Batch Time-sharing Real-time 23 24
Sistemas Operacionais tipo Batch Com o passar do tempo, a palavra batch passou a designar um processo onde o usuário não interage com o seu programa O que caracteriza um SO batch é o fato de não haver comunicação do usuário com o seu programa, durante a execução Tempo de turnaround: tempo entre a entrega dos cartões e o recebimento da listagem com os resultados da execução Sistemas Operacionais Time-sharing Um SO time-sharing permite que diversos usuários compartilhem o computador em um dado instante, dando a cada um a sensação de que o computador encontra-se dedicado a ele. 25 26 Time-sharing Time-sharing Cada usuário possui seu programa (ou parte dele) na memória principal. O processador é alocado por um pequeno período de tempo (fatia de tempo ou time slice) a cada programa de usuário. Cada programa executa até ser interrompido (final de fatia de tempo ou solicitação de I/O). Quando interrompido os valores dos registradores são salvos e o processador é alocado para outro processo Implementação: SO dispõe de multiprogramação cada usuário possui um job ativo vinculado a um terminal a comunicação via terminal é lenta, sobra CPU para os outros terminais os usuários compartilham a CPU (time-sharing) 27 28 Sistema de Tempo Real Principal característica: Deve responder, dentro de um período de tempo previamente especificado (geralmente muito pequeno), a estímulos gerados externamente Portanto, os tempos de resposta são críticos Um SO tempo real utiliza conceitos de multiprogramação e oferece facilidades para as aplicações de tempo real Entre as facilidades está um escalonador preemptivo que leva em conta as prioridades dos processos. Proteção Nos primeiros sistemas tinha-se um usuário por vez, com controle completo sobre a máquina SO começa a compartilhar recursos entre usuários (maior eficiência) 29 30
Compartilhamento Melhora a utilização do sistema, mas aumenta os problemas de segurança Proteção realizada parte em software e parte em hardware hardware: utiliza interrupções geradas internamente pela CPU (traps). Proteção de I/O A programação de rotinas de E/S é uma programação de baixo nível (detalhada) muito sujeita a erros. Por isso, essas rotinas fazem parte do SO. Isto resulta em duas vantagens: (1) garante segurança para o SO (2) facilita a tarefa de programação para os usuários Mas o que garante que um programa de usuário (por erro ou por malícia) não tente acessar um dispositivo de E/S diretamente? Solução: hardware passa a trabalhar em dois modos modo usuário modo monitor 31 32 Proteção de I/O As instruções de I/O são privilegiadas, só podem ser executadas em modo monitor. Se um programa de usuário tenta executar uma destas instruções, ocorre um trap. O programa usuário só pode realizar I/O através do SO Proteção de Memória Para que o usuário não receba a CPU em modo monitor ou corrompa o funcionamento do sistema, é necessário proteger a Tabela de Interrupção e as rotinas do monitor Um registrador limite (fence register) é suficiente para sistemas monoprogramados Em modo usuário, cada endereço é comparado com o fence register. Se o programa tenta acessar um endereço menor que o valor do fence register ocorre um trap (e a execução vai para o SO) 33 34 Proteção de Memória Para sistemas multiprogramados, o hardware precisa utilizar dois registradores: Registrador limite inferior Registrador limite superior Toda vez que o SO seleciona um novo programa para executar, ele atualiza os valores desse dois registradores para que eles indiquem a área ocupada pelo programa. Em modo usuário, cada endereço é comparado com os dois registradores. Proteção contra a monopolização da CPU Um job deve ser impedido de usar a CPU eternamente Temporizador (timer) interrompe a CPU a cada n milisegundos (n é da ordem de 20 ms) Cada interrupção ativa o monitor, que decide em continuar ou não o programa do usuário 35 36