Introdução Introdução aos Sistemas Usuário 1 Operacionais Ambientes Operacionais Prof. Simão Sirineo Toscani [email protected] www.inf.pucrs.br/~stoscani Compilador Usuário 2 Usuário 3 Editor de texto Browser ... Usuário n Quake Programas Aplicativos Sistema Operacional (infraestrutura) Hardware 1 2 Recursos gerenciados pelo SO Introdução Usuário 1 Usuário 2 Usuário 3 ... Usuário n Compilador Editor de texto Browser Quake Aplicativos Sistema Operacional (infraestrutura) Hardware Tempo de CPU 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 SO é um programa de controle 4 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 5 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 6 1 Uma definição para Sistema Operacional Histórico O objetivo do SO é permitir o uso do computador de forma fácil e eficiente. Primeiros sistemas - somente hardware 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. 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 Histórico 8 Histórico 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. Quando surgiram FORTRAN e COBOL, a operação ficou mais difícil Execução de um programa FORTRAN: Programador = operador Tabela de horário para reservas de horas de máquina 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 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 10 Histórico Uso de operadores profissionais = preparação mais rápida 11 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 12 2 Organização do Monitor Residente Histórico Monitor residente Tabela de interrupção 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) Controladores de Dispositivos (drivers) Interpretador de cartões e Seqüenciador de jobs Área para programas dos usuários 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). 13 Monitor Residente 14 Performance Em resumo, o monitor residente: implementa um interpretador de linguagem de comandos (linguagem para comunicação com o SO) 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) implementa rotinas que facilitam o uso do harware 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 Operação off-line Bufferização Um computador satélite lia cartões e gravava suas imagens em fita magnética O computador principal trabalhava apenas com fitas magnéticas: 16 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 17 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 18 3 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 Spooling 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 Técnica que utiliza o disco como um grande buffer. E/S e computação são realizadas simultaneamente. 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). 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 Spooling 20 Multiprogramação 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 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 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: 22 Batch Time-sharing Real-time input spooler executive output spooler 23 24 4 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 Time-sharing 26 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. Implementação: 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 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 Sistema de Tempo Real Proteção Principal característica: 28 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 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) Entre as facilidades está um escalonador preemptivo que leva em conta as prioridades dos processos. 29 30 5 Compartilhamento Proteção de I/O 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). 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 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. 32 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 O programa usuário só pode realizar I/O através do SO 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 Proteção contra a monopolização da CPU Proteção de Memória Para sistemas multiprogramados, o hardware precisa utilizar dois registradores: 34 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. Um job deve ser impedido de usar a CPU eternamente 35 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 36 6