Sistemas Operacionais Evolução Edson Moreno [email protected] http://www.inf.pucrs.br/~emoreno Sumário Introdução Componentes de um sistema computacional Conceituação Características desejáveis Organização típica Tipos de sistemas operacionais Histórico Introdução Hardware Provê recursos para execução de instruções, manipulação de dados Aplicação Solução computacional de um problema Define a utilização dos recursos do sistema Problema O hardware sozinho não oferece um ambiente de utilização simples para resolução computacional de problemas Introdução Primeiros computadores Programação complexa Exigia grande conhecimento do hardware e de linguagem de máquina Solução Sistemas Operacionais Encapsulamento Interação se tornou mais fácil, confiável e eficiente Prove uma interface entra aplicação e hardware Sumário Introdução Componentes de um sistema computacional Conceituação Características desejáveis Organização típica Tipos de sistemas operacionais Histórico Componentes Usuários Utilizadores do sistema computacional Pessoas, máquinas, outros computadores. Aplicações Define o modo que o recursos do sistema serão utilizados para resolver os problemas computacionais dos usuários Compiladores, B.D., jogos, programas comerciais. Computador Componentes Hardware Recursos básicos de computação Três subsistemas básicos: Unidade Central de Processamento; Memória principal; Dispositivos de entrada e saída. Memória principal UCP Sistema de comunicação E/S Sistema Operacional Possibilita o uso eficiente e controlado dos recursos de hardware entre diferentes aplicações de diferentes usuários Implementa políticas e estruturas de software de modo a assegurar um melhor desempenho do sistema de computação Componentes Componentes Navegador web Modo usuário Modo núcleo Leitor de e-mail Programa de interface com o usuário Reprodutor de música Software Sistema Operacional Hardware Sumário Introdução Componentes de um sistema computacional Conceituação Características desejáveis Organização típica Tipos de sistemas operacionais Histórico Definição O que é um sistema operacional? Quais suas funções? Definição O que é um sistema operacional? Programa especial que atua de forma intermediaria entre um usuário e os componentes de um computador. Alocador de recursos Gerencia e aloca recursos Controlador de programas Controla a execução de programas do usuário Controla operações de I/O em dispositivos. Kernel/Núcleo O programa principal que roda a todo momento Definição Quais suas funções? Possibilitar o uso eficiente e controlado dos diversos componentes de hardware do computador Implementar políticas e estruturas de software de modo a assegurar um melhor desempenho do sistema de computação como um todo. Definição Definições gerais de Sistemas Operacionais Conjunto de programas que trabalham de modo cooperativo com o objetivo de prover uma máquina mais flexível e adequada ao programador do que aquela apresentada pelo hardware A program that controls the execution of application programs An interface between applications and hardware Programa que age como um intermediário entre o usuário de um computador e o hardware deste computador”. Sumário Introdução Componentes de um sistema computacional Conceituação Características desejáveis Organização típica Tipos de sistemas operacionais Histórico Características desejadas Concorrência Existência de várias atividades ocorrendo paralelamente. Ex: execução simultânea de “jobs”, E/S paralela ao processamento. Compartilhamento Uso coordenado e compartilhado de recursos de HW e SW. Motivação: custo de equipamentos, reutilização de programas,redução de redundâncias, etc. Armazenamento de dados Capacidade de armazenamento a longo prazo. Características desejadas Não determinismo Atendimento de eventos que podem ocorrer de forma não prevista. Eficiência Baixo tempo de resposta, pouca ociosidade da UCP e alta taxa de processamento. Confiabilidade Pouca incidência de falhas e exatidão dos dados computados. Características desejadas Mantenabilidade Facilidade de correção ou incorporação de novas características Pequena dimensão Simplicidade e baixa ocupação da memória. Sumário Introdução Componentes de um sistema computacional Conceituação Características desejáveis Organização típica Tipos de sistemas operacionais Histórico Organização típica Núcleo Responsável pela gerência do processador, tratamento de interrupções, comunicação e sincronização entre processos. Gerenciador de Memória Responsável pelo controle e alocação de memória aos processos ativos. Gerenciador de E/S Responsável pelo controle e execução de operações de E/S e otimização do uso dos periféricos. Responsável pela interface conversacional com o usuário. Organização típica Sistema de Arquivos Responsável pelo acesso e integridade dos dados residentes na memória secundária. Processador de Comandos / Interface com o Usuário Responsável pela interface conversacional com o usuário. Sumário Introdução Componentes de um sistema computacional Conceituação Características desejáveis Organização típica „‟‟ operacionais Tipos de sistemas Histórico Tipos de sistemas operacionais Vários tipos de SOs que surgiram Gerações de Sistemas operacionais Tipos mais comuns SO de Computadores de Grande Porte SO de Servidores SO de multiprocessadores SO de Computadores Pessoais SO de Tempo Real SO de Embarcados SO de Cartões Inteligentes Tipos de sistemas operacionais SO de Computadores de Grande Porte O hardware caracteriza-se por grande capacidade de E/S Servidores WEB / business 2 business As operações caracterizam-se por execução simultânea de muitas tarefas requerendo muita E/S Tarefas Transações Tempo Compartilhado Tipos de sistemas operacionais SO de Servidores São “computadores pessoais de grande porte” Permitem o compartilhamento de hardware e software Prestam serviço a muitos usuários Impressão Arquivo Mensagens Web Tipos de sistemas operacionais SO de multiprocessadores Gerenciam múltiplas CPUs Podem ser multiprocessadores ou multicomputadores A preocupação principal está em: Sincronização e comunicação de processos Tipos de sistemas operacionais SO de Tempo Real O atendimento ao tempo de resposta é a principal preocupação O tempo de resposta pode ser crítico ou não crítico SO de Embarcados Apresentam restrições quanto ao espaço de memória ocupado e consumo de potência Geralmente também possuem restrição de tempo Sumário Introdução Componentes de um sistema computacional Conceituação Características desejáveis Organização típica Tipos de sistemas operacionais Histórico „‟‟ Histórico Fase 0 Computadores são uma ciência experimental e exótica: Não precisa de sistema operacional Programação através de "plugs“ Usuário presente todo o tempo toda atividade é sequencial Conjuntos de cartões manualmente carregados para executar os programas Primeiras bibliotecas, utilizadas por todos O usuário é programador e operador da máquina ao mesmo tempo Problema: muita espera! Usuário tem que esperar pela máquina ... Máquina tem que esperar pelo usuário ... Todos têm que esperar pela leitora de cartões ! Histórico Fase 1 Altos preços Computadores são caros; pessoas não S.O. surge com o objetivo básico de automatizar a preparação, carga e execução de programas. S.O.Torna utilização do computador mais eficiente, desacoplando as atividades das pessoas das atividades do computador Mais tarde: otimização do uso dos recursos de hardware pelos programas S.O. funciona como um monitor batch, continuamente carregando um job, executando e continuando com o próximo job. Se o programa falhasse, o SO salvava uma cópia do conteúdo de memória para o programador depurar. Histórico Fase 1 Altos preços Computadores são caros; pessoas não Problemas: Só um usuário de cada vez na máquina Usuário tem que esperar pela máquina Bem difícil para depurar Histórico Fase 1 Altos preços Computadores são caros; pessoas não Técnicas de hardware: adiciona proteção à memória e relocação multiprogramação: muitos usuários podem compartilhar o sistema Jobs pequenos podem completar rapidamente SO passa a ter que gerenciar interação entre jobs concorrentes SO passa a ser um assunto de estudo em ciência da computação !!! ... SOs passaram a ser estudados porque eles não funcionavam! Novos problemas: SOs extremamente complicados Usuários ainda esperando pela máquina; isso motivou a fase 2 Histórico Década de 60 Sistemas em lote multiprogramados Histórico Fase 2 Produtividade - Custo/Beneficio Computadores são rápidos; pessoas são lentas; ambos são caros. "Timesharing" interativo: permitir que vários usuários utilizem a mesma máquina simultaneamente Um terminal para cada usuário Manter os dados "on-line": utilização de sistemas de arquivos estruturados Problema: Como alcançartempo de resposta razoável? Histórico Década de 60 Periféricos Leitoras e perfuradoras de cartão Impressoras Unidades de fita e disco Multiprogramação – Time Sharing Produtividade Custos (1960): Programador: US$4/hora Aluguel de tempo do computador: US$500/hora Tempo das pessoas Histórico Década de 60 IBM Família de Computadores IBM/360 OS/360 Multics (Multiplexed Information and Computing Service) Primeiro sistema operacional de tempo compartilhado Histórico Fase 3 Produtividade - Custo/Beneficio Computadores são baratos; pessoas são caras. Dar um computador para cada pessoa. SOs de redes de computadores – LANs e WANs Modelo cliente/servidor Conceito de processamento distribuído Computadores pessoais Interfaces user friendly Conceito de máquina virtual Retira do usuário preocupação com detalhes físicos da máquina Histórico Década de 70 Sistemas experimentais da década de 60 viraram comerciais Interface gráfica (GUI) Xerox PARC (Palo Alto Research Center) TCP/IP DoD (Departamento de Defesa) Americana Ethernet PARC, da Xerox Militares e universitários Problemas de segurança Criptografia Histórico Década de 80 Workstation pessoal SUN-Stanford University Network, Xerox Alto IBM, Personal Computer Apple II Macintosh Histórico Fase 4 SOs distribuídos Computação dividida em subcomputações Subcomputações distribuídas para diferentes sistemas através da rede Controla compartilhamento de recursos e gerencia comunicação e distribuição de tarefas Popularização Computadores Pessoais (PCs) difundido Introdução de laptops Desenvolvimento de protocolos de comunicação para transferência de dados o Segurança o Confiabilidade Configuração dinâmica de redes Redes possibilitam aparecimento de novas aplicações importantes Problemas: As pessoas ainda continuam esperando por computadores Viruses, worms, hackers... Histórico Década de 90 Desempenho melhorou Fabricação dos processadores Advento do Windows Orientação a objetos Software Livre Histórico 2000 em diante Serviços Web Paralelismo maciço Máquinas virtuais e emuladores Computação pervasiva Referências Silberschatz, G. “Operating System Concepts”. Capítulo 1 Tanenbaum, A. “Sistemas Operacionais: projeto e implementação”. Capítulo 1 Tanenbaum, A. “Sistemas Operacionais Modernos”. Capítulo 1 Sistemas Batch: Inexiste interação entre usuário e serviço (job). Necessita operador e cartões de controle. Saída capturada minutos, horas ou dias após a submissão do serviço ao sistema. 1950 Simples Serviços executados seqüencialmente, CPU ociosa em vários momentos. Multiprogramados 1960 Serviços mantidos em um “pool de serviços“ são escalados para execução sempre que a CPU está livre. Sistemas multitarefa: 1960 Extensão lógica de multiprogramação. Usuários podem interagir com cada programa, enquanto ele está sendo executado. Compartilhamento do computador por diversos usuários. Sistemas de computadores pessoais: Custo do hardware suficientemente baixo para permitir uso reservado a um único usuário. Incorporam tecnologia usada em sistemas de computadores de grande porte. Procuram maximizar a conveniência e rapidez de atendimento aos usuários. 1970