Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Sistemas Operacionais Introdução aos Sistemas Operacionais Prof. Rogério Colpani E-mail: rocolpani@gmail.com 1 Roteiro 1. História sobre a evolução dos computadores. 2. O que é um sistema operacional. 3. Funcionamento de um sistema operacional. 4. Funções de um sistema operacional. 5. Serviços oferecidos pelo sistema operacional. 6. Componentes e objetivos do sistema operacional. 7. Tipos de sistema operacional. 8. Arquiteturas do sistema operacional. Sistemas Operacionais I 2 História sobre a evolução dos computadores Ábaco • Origem: Mesopotâmia, há mais de 5.000 anos. • Antigo instrumento de cálculo, formado por uma moldura com bastões paralelos, dispostos no sentido vertical, correspondentes cada um a uma posição digital (unidades, dezenas, ...) e nos quais estão os elementos de contagem (fichas, bolas ...) que podem fazer- se deslizar livremente. Sistemas Operacionais I 3 História sobre a evolução dos computadores Computadores Mecânicos (1642 – 1945) Blaise Pascal construiu em 1642 a primeira máquina de calcular, baseada em engrenagens e alavancas, e que permitia fazer adições e subtrações. Leibniz (1646 - 1716) construiu outra máquina no mesmo estilo, porém permitia também a realização de multiplicações e divisões. Sistemas Operacionais I 4 História sobre a evolução dos computadores Máquina analítica • Charles Babbage em 1833. • Máquina de propósito geral (similar aos computadores atuais). • Usava sistema decimal. • Somava, subtraia, dividia e multiplicava em sequência automática. • Composta por: memória, unidade de computação, unidade de entrada e unidade de saída. Computadores à Válvula - década de 1945 – 1955 Os primeiros computadores não tinham sistemas operacionais. A programação era feita diretamente em linguagem de máquina. Sistemas Operacionais I 5 História sobre a evolução dos computadores COLOSSUS • Primeiro computador digital eletrônico construído pelo Governo Britâncico em 1943. • Cada máquina usava 2.000 válvulas eletrônicas. • Objetivo: decodificar as mensagens (que eram criptografadas) trocadas pelos alemãs durante a Segunda Guerra Mundial. Sistemas Operacionais I 6 Colossus Mark I História sobre a evolução dos computadores ENIAC • Construído em 1946 para fins militares. • 18.000 válvulas; 1500 relés (interruptores eletromecânicos); 30 toneladas; 140 Kilowatts; 20 registradores de números decimais de 10 dígitos. • Não tinha SO e seu funcionamento era parecido com uma calculadora simples de hoje. • Operação feita manualmente. A calculadora efetua cálculos a partir de teclas pressionadas, fazendo interação direta com o hardware, como no ENIAC, no qual era preciso conectar fios, relés e sequências de chaves para que se determinasse a tarefa a ser executada. A cada tarefa diferente o processo deveria ser refeito. A resposta era dada por uma sequência de lâmpadas. Sistemas Operacionais I 7 História sobre a evolução dos computadores ENIAC Sistemas Operacionais I 8 História sobre a evolução dos computadores Máquina de Von Neuman • Arquitetura de computador que se caracteriza pela possibilidade de uma máquina digital armazenar seus programas no mesmo espaço de memória que os dados. • Componentes: memória, ULA, unidade de controle e dispositivos de E/S. A década de 1955 – 1965 Invenção do Transistor (componente eletrônico) • Tornou o computador mais confiável possibilitando sua comercialização. • Mainframes. No entanto, devido aos altos custos poucos tinham acesso a essa tecnologia. • Grandes empresas, órgãos governamentais ou universidades. Sistemas Operacionais I 9 História sobre a evolução dos computadores Surgimento do primeiro SO. Execução de um job por vez. Um job (serviço) era composto de um conjunto de instruções de programas correspondentes a uma tarefa computacional particular, como folhas de pagamento ou estoque. Os jobs demoravam minutos, horas ou dias para serem executados. Sistemas Operacionais I 10 História sobre a evolução dos computadores Esses computadores eram denominados de sistemas de processamento em lote de fluxo único. Porque programas e dados eram submetidos em grupos ou lotes carregando-os consecutivamente em uma fila ou disco. O que limitava o tamanho e capacidades dos programas é que eles deveriam ser carregados na memória para serem executados. Como era relativamente cara, a quantidade de memória disponível naqueles computadores era pequena. Sistemas Operacionais I 11 História sobre a evolução dos computadores A década de 1965 Circuitos integrados (chips). Sistemas de processamento em lote, mas com execução de vários jobs ao mesmo tempo. • Um job poderia usar o processador, enquanto outros utilizavam os dispositivos periféricos. Desenvolvimento de sistemas de multiprogramação: gerencia diversos jobs ao mesmo tempo. Em um ambiente multiprogramação, o SO comuta rapidamente o processador de job em job mantendo vários deles em andamento e, ao mesmo tempo, os dispositivos periféricos também em uso. Sistemas Operacionais I 12 História sobre a evolução dos computadores Tempo de retorno – tempo entre a submissão de um job e o retorno de seus resultados foi reduzido. Com isso, era permitido entrar com o programa, fazer a compilação, receber uma lista de erros de sintaxe, corrigi-los imediatamente, recompilar e continuar esse ciclo até o programa estar livre de erros de sintaxe. Desenvolvimento de SOs mais avançados para atender usuários interativos ao mesmo tempo. Usuários interativos comunicam-se com seus jobs durante a execução. Com isso, o sistema de computador precisava responder rapidamente às solicitações do usuário, caso contrário, sua produtividade poderia ser prejudicada. Sistemas Operacionais I 13 História sobre a evolução dos computadores A década de 1980 Computador pessoal. Softwares como programas de planilhas de cálculo, editores de texto, pacotes de bancos de dados e pacotes gráficos ajudavam a dar impulso à revolução da computação pessoal, criando demanda entre as empresas que podiam usar esses produtos para aumentar sua produtividade. Evolução da Engenharia de Software. Sistemas Operacionais I 14 História sobre a evolução dos computadores Interfaces Gráficas com o usuário (GUI): utilizam símbolos gráficos como janelas, ícones e menus para facilitar a interação do usuário com os programas. Sistemas Operacionais I 15 História sobre a evolução dos computadores A medida que o custo se declinava, a transferência de informações entre computadores interconectados em rede tornou-se mais econômica e prática. • Correio eletrônico, transferência de arquivos ... Computação Distribuída (usar vários computadores independentes para desempenhar uma tarefa comum) proliferou com o modelo cliente/servidor. Lançamento do SO DOS. Desenvolvimento do primeiro Windows. Sistemas Operacionais I 16 História sobre a evolução dos computadores A década de 1990 até hoje No final da década, os computadores executavam milhões de instruções por segundo. Armazenamento de grandes quantidades de informações. Diminuição do preço e consequentemente maior acessibilidade para as empresas e pessoas. Criação da WWW levou a popularidade da computação distribuída. Família do Windows e o Linux. Computação em dispositivos móveis (ex: celulares, PDAs ...) Sistemas Operacionais I 17 Sistema Operacional O que é um Sistema Operacional? É um software que habilita aplicações a se comunicar com os hardwares de um computador. Faz o gerenciamento de softwares e hardwares de um sistema. Sistemas Operacionais I 18 Hardware Sistema Operacional Aplicativos Funcionamento de um Sistema Operacional Um programa consiste em um conjunto de instruções para o computador. Sistemas Operacionais I 19 Solicita a impressão do documento Comunica Repassa o pedido para o hardware Impressão do documento Escrevendo um texto SO funciona como tradutor, ele traduz o que foi solicitado pelo programa através de comandos em linguagem de máquina para que o hardware entenda, com isso, o hardware executa a função e retorna à saída desse comando para que o SO novamente traduza de uma forma que possa repassar para o usuário de uma maneira que ele entenda. Funções de um Sistema Operacional Os Sistemas Operacionais possuem duas funções básicas: 1. Gerenciador de Recursos. 2. Máquinas Estendidas. Gerenciador de Recursos O Sistema Operacional permite o acesso ordenado aos recursos (processador, memória, disco rígido e demais elementos de hardware), para que todos os programas possam ter acessos aos recursos disponíveis. Exemplo: Imagine que você está executando quatro programas, os dois primeiros estão querendo gravar dados no HD e os dois últimos necessitam imprimir algo, isso tudo simultaneamente. Alguém teria que coordenar o acesso ao disco e à impressora, para que nenhum problema ocorra devido ao conflito entre os programas em execução. Sistemas Operacionais I 20 Funções de um Sistema Operacional Máquina Estendida Se não existissem os SO´s para facilitar a interação entre os demais softwares e os recursos de hardware do computador, um programador precisaria construir seus programas em uma linguagem que o hardware fosse capaz de entender, ou seja, em linguagem de máquina (sequencias de 0´s e 1´s). O Objetivo do Sistema Operacional é reduzir a complexidade dessas tarefas, escondendo-as dos programadores. Podemos dizer que o SO fornece uma máquina virtual onde os programadores podem criar aplicativos de forma mais simples, usando uma linguagem de mais alto nível. Sistemas Operacionais I 21 Serviços oferecidos pelo SO Criação de aplicativos Execução de programas Acesso a dispositivos de E/S Sistemas Operacionais I 22 Componentes e objetivos do SO Componentes centrais do Sistema Operacional Shell (interpretador de comandos): modo de interação entre o usuário e o SO. Implementado como interfaces de texto que habilitam o usuário a emitir comandos por meio de um teclado, ou como GUIs que permitem que o usuário “aponte-e-clique” e “arraste-e-solte” ícones para requisitar serviços do SO. Chamadas de sistemas: podem ser entendidas como uma porta de entrada para o acesso ao núcleo do SO. Sempre que o usuário ou aplicação desejar algum serviço do sistema, é realizada uma chamada a uma de suas rotinas através de uma chamada de sistemas. Sistemas Operacionais I 23 Componentes e objetivos do SO O software que contém os componentes centrais do SO chama-se kernel (núcleo) e são compostos por: Escalonador de processo: determina quando e por quanto tempo um processo é executado em um processador. Gerenciador de memória: determina quando e como a memória é alocada aos processos e o que fazer quando a memória principal estiver cheia. Gerenciador de E/S: atende às solicitações de E/S de e para dispositivos de hardware respectivamente. Sistemas Operacionais I 24 Componentes e objetivos do SO Gerenciador de comunicação interprocessos (IPC): permite que os processos se comuniquem uns com os outros. Gerenciador de sistema de arquivo: organiza coleções nomeadas de dados em dispositivos de armazenamento e fornece uma interface para acessar os dados nesses dispositivos. Sistemas Operacionais I 25 Componentes e objetivos do SO Metas do Sistema Operacional Usuários passaram a esperar certas características dos sistemas operacionais como: • Eficiência: alto rendimento e baixo tempo de retorno. O rendimento mede a quantidade de trabalho que um processador pode concluir em um certo período de tempo. Um SO eficiente minimiza o tempo gasto oferecendo esses serviços. Sistemas Operacionais I 26 Componentes e objetivos do SO • Robustez: tolerante a falhas e confiável. O sistema não falhará devido a erros isolados de aplicações ou de hardware e, se falhar, ele o fará graciosamente (isto é, minimizando perda de trabalho e evitando danos ao hardware do sistema). • Escalabilidade: permite acrescentar novos recursos. É capaz de usar recursos a medida que são acrescentados. Se o SO não for escalável, rapidamente chegará a um ponto em que recursos adicionais não serão utilizados totalmente. Sistemas Operacionais I 27 Componentes e objetivos do SO • Extensibilidade: executar tarefas que vão além do projeto original. Adapta-se bem a novas tecnologias e fornece capacidades de estender o SO para executar tarefas que vão além de seu projeto original. • Portabilidade: operar muitas configurações de hardware. Portabilidade de aplicações é importante porque desenvolver aplicações custa caro; a mesma aplicação deve rodar em uma variedade de configurações de hardware para reduzir custos de desenvolvimento. Sistemas Operacionais I 28 Componentes e objetivos do SO • Segurança: impedir acessos a serviços e recursos. Impede que usuários e softwares acessem serviços e recursos sem autorização. • Interatividade: resposta rápida ao usuário. Permite que aplicações respondam rapidamente às ações do usuário ou a eventos. Sistemas Operacionais I 29 Tipos de Sistemas Operacionais Sistemas Operacionais I 30 Tipos de SO Sistemas Monotarefa Sistemas Multitarefa Sistemas com Múltiplos Processadores Tipos de Sistemas Operacionais Sistemas Monotarefa Se caracterizam pela execução de uma única tarefa por vez, sendo que todos os recursos (processador, memória, periféricos) ficam exclusivamente a ela dedicados. Exemplo: MS-DOS. Sistemas Operacionais I 31 A C B Programa Tempo Tipos de Sistemas Operacionais Sistemas Multitarefa Se caracterizam por permitir que várias tarefas residam simultaneamente na memória e concorra pelo uso de recursos disponíveis (apenas uma tarefa detém, num determinado instante, o controle da CPU). Exemplo: Windows, Linux. Sistemas Operacionais I 32 A C B Programa Tempo Tipos de Sistemas Operacionais Sistemas com Múltiplos Processadores Caracterizam-se por possuir duas ou mais CPU´s interligadas, trabalhando em conjunto. • Sistema fortemente acoplados: existem dois ou mais processadores compartilhando uma única memória e controlados por apenas um único SO. • Sistema fracamente acoplados: possui dois ou mais sistemas de computação conectados através de linhas de comunicação. Cada sistema funciona de forma independente, possuindo seu próprio processador, memória e dispositivos. Sistemas Operacionais I 33 Arquiteturas de Sistemas Operacionais Os sistemas operacionais de hoje tendem a ser complexos, porque prestam muitos serviços e suportam uma variedade de recursos de hardware e software. Arquiteturas de sistemas operacionais podem ajudar projetistas a gerenciar essa complexidade organizando componentes de sistema e especificando o privilégio com que cada componente é executado. Tipos de Arquitetura Monolítica. Camadas. Micronúcleo. Sistemas Operacionais I 34 Arquiteturas de Sistemas Operacionais Modos de acesso Existem certas funções que não podem ser colocadas diretamente a disponibilidade das aplicações, pois sua utilização indevida ocasionaria sérios problemas a integridade do sistema. Exemplo: suponha que uma aplicação deseja atualizar um arquivo diretamente no disco. O programa por si só não pode especificar diretamente as instruções que acessam seus dados. Como o disco é um recurso compartilhado, sua utilização deverá ser realizada unicamente pelo SO. Sistemas Operacionais I 35 Arquiteturas de Sistemas Operacionais As instruções que podem comprometer a segurança e integridade do sistema são chamadas de instruções privilegiadas enquanto que as não privilegiadas são as que não oferecem perigo ao sistema. Para que uma aplicação possa acessar uma instrução privilegiada, o processador implementa o mecanismo de modo de acesso. Modos de acesso: modo usuário e modo núcleo. Quando um processador trabalha no modo usuário basicamente a aplicação somente pode acessar as instruções não privilegiadas, enquanto que no modo núcleo a aplicação pode ter acesso ao conjunto total de instruções do processador. Sistemas Operacionais I 36 Arquiteturas de Sistemas Operacionais Arquitetura Monolítica • É a arquitetura mais antiga e mais comum. • Cada componente do SO é contido no núcleo e pode comunicar-se diretamente com qualquer outro (usando chamadas à funções). • A intercomunicação direta entre componentes é que torna os sistemas operacionais monolíticos altamente eficientes, porque poucas chamadas atravessam do espaço do usuário para o espaço do núcleo. • Devido ao fato dos núcleos monolíticos agruparem os componentes todos juntos, é difícil isolar a fonte de problemas e outros erros. Sistemas Operacionais I 37 Arquiteturas de Sistemas Operacionais • Como todo o código é executado com acesso irrestrito ao sistema, tornam-se particularmente suscetíveis a danos provocados por códigos sujeitos a erros ou mal- intencionados. Sistemas Operacionais I 38 Modo kernel aplicação aplicação Modo usuário System call Hardware Arquiteturas de Sistemas Operacionais Analogia Um SO monolítico seria equivalente a uma kitnet, onde todos os cômodos (componentes) são acomodados em um só lugar (núcleo). Sistemas Operacionais I 39 Exemplo de SOs: UNIX e MS-DOS. Arquiteturas de Sistemas Operacionais Arquitetura em Camadas • Agrupa em camadas componentes que realizam tarefas similares. • Cada camada comunica-se exclusivamente com as camadas imediatamente acima e abaixo dela. • São mais modulares do que os monolíticos, porque a implementação de cada camada pode ser modificada sem exigir nenhuma modificação nas outras. • Cada componente oculta o modo como realiza sua tarefa e apresenta uma interface padrão que os outros componentes podem usar para requisitar seus serviços. Sistemas Operacionais I 40 Arquiteturas de Sistemas Operacionais • A modularidade impõe estrutura e consistência ao SO, muitas vezes simplificando depuração, modificação ... • Entretanto, em uma abordagem de camadas, a requisição de um processo de usuário pode precisar passar por muitas camadas antes de ser atendida. Como é preciso invocar métodos adicionais para passar dados de uma camada para a seguinte, o desempenho se degrada em comparação ao do núcleo monolítico, que pode requerer apenas uma única chamada para atender a uma requisição similar. Sistemas Operacionais I 41 Aplicação do usuário Gerenciamento de E/S Interpretador de mensagem Gerenciamento de memória Alocação de processador e escalonamento de processo Camada 4 Camada 3 Camada 2 Camada 1 Camada 0 Espaço do usuário Espaço do núcleo Arquiteturas de Sistemas Operacionais Analogia Camada OSI • THE foi um dos primeiros SOs em camadas. Sistemas Operacionais I 42 Aplicação Apresentação Sessão Transporte Rede Enlace Física Arquiteturas de Sistemas Operacionais Arquitetura Micronúcleo • Fornece somente um número pequeno de serviços na tentativa de manter o núcleo pequeno e escalável. Exemplo: gerenciamento de memória, comunicação entre processos ... • A maioria dos componentes do SO – como gerenciamento de processo, rede, sistemas de arquivo e gerenciamento de dispositivos é executada fora do núcleo com um nível de privilégio mais baixo. • Micronúcleos exibem um alto grau de modularidade, o que os torna extensíveis, portáteis e escaláveis. E como o micronúcleo não depende de cada componente para ser executado, um ou mais componentes podem falhar sem causar também a falha do SO. Sistemas Operacionais I 43 Arquiteturas de Sistemas Operacionais • Entretanto, essa modularidade ocorre à custa de um maior nível de comunicação entre os módulos, o que pode degradar o desempenho do sistema. • O Linux e o Windows XP contêm componentes modulares. Sistemas Operacionais I 44 Aplicações Interface de chamada ao sistema Espaço do usuário Espaço do núcleo Sistemas de Arquivos Escalonador de processos Gerenciador de dispositivos ... ... CEP Sincronização Gerenciamento de memória Referências Sistemas Operacionais DEITEL, H.M.; DEITEL, P.J.; CHOFFNES, D.R. 3.ed. São Paulo: Pearson Pretince Hall, 2005. Capítulo 1 Sistemas Operacionais I 45