Prévia do material em texto
Universidade Federal de Ouro Preto - UFOP Departamento de Computação e Sistemas - DECSI CSI437 – Sistemas Operacionais Prof. Samuel Brito Estruturas do Sistema Operacional 2 Introdução • Um sistema operacional oferece um ambiente dentro do qual os programas são executados. • Internamente, os sistemas operacionais variam muito em sua composição. • O projeto de um novo sistema operacional exige que os objetivos do sistema sejam muito bem definidos antes que o projeto seja iniciado. • Diferentes pontos de vista para enxergar um sistema operacional: – Focalizar os serviços oferecidos pelo sistema. – Interface colocada à disposição de usuários e programadores. – Componentes e suas interconexões. COMPONENTES DE UM SISTEMA OPERACIONAL Estruturas do Sistema Operacional 4 Componentes de um Sistema Operacional • Gerência de processos • Gerência de memória principal • Gerência de arquivos • Gerência do sistema de E/S • Gerência do armazenamento secundário • Redes • Sistema de proteção • Sistema interpretador de comandos 5 Gerência de Processos • Processo: – Programa em execução. – Compiladores, editores de texto, tarefas do sistema, etc. • Necessidade de recursos: – Tempo de CPU, memória, arquivos e dispositivos de E/S. – Alocação de recursos é feita no início ou durante execução dos processos. – Recursos são a fonte principal de “alimentação” dos processos. – Exemplo: • Processo que tem como função exibir informações de um arquivo na tela: – Inicialmente, é dado ao processo o nome do arquivo desejado. – O mesmo irá executar instruções apropriadas para obter as informações e mostrá- las na tela. – Quando o processo finaliza, o S.O. “toma de volta” todos os recursos cedidos e reutilizáveis. 6 Gerência de Processos • Um programa por si só não é um processo! – Programa é uma entidade passiva. – Processo é uma entidade ativa. • Um processo possui um contador de programa que especifica a próxima instrução a ser executada. – Execução do processo é sequencial. – Uma instrução é executada em nome do processo. – Dois processos podem estar associados a um único programa. • Considerados duas sequências de execução separadas. – Utilização de threads: • Diversos contadores de programa. 7 Gerência de Processos • Processo é a unidade de trabalho do sistema operacional. – S.O. consiste de uma coleção de processos. • O S.O. é responsável por: – Criar e remover os processos de usuário e de sistema. – Suspender e retomar processos. – Prover mecanismos para a sincronização e a comunicação entre processos. – Prover mecanismos para o tratamento de deadlock. 8 Gerência de Memória Principal • Memória principal é fundamental para a operação de um computador moderno. • Trata-se de um grande conjunto de words ou bytes endereçáveis. • Pode ser enxergada como um depósito de dados rapidamente acessíveis, compartilhados por dispositivos de E/S e pela CPU. • Único dispositivo de armazenamento grande que a CPU pode endereçar e acessar diretamente. 9 Gerência de Memória Principal • Responsabilidades do S.O. sobre a gerência de memória: – Registrar quais partes da memória estão sendo usadas atualmente e por quem. – Decidir quais processos devem ser carregados para a memória quando o espaço de memória se tornar disponível. – Alocar e liberar espaço de memória conforme a necessidade. 10 Gerência de Arquivos • Computadores podem armazenar informações em diferentes tipos de mídias físicas: – Fitas magnéticas, discos magnéticos, discos óticos, etc. • Cada tipo de dispositivo possui diferentes propriedades: – Velocidade de acesso, capacidade, taxa de transferência, método de acesso (sequencial ou aleatório), etc. • Sistema operacional abstrai as propriedades físicas dos dispositivos de armazenamento para prover uma unidade de armazenamento lógica: – Arquivo. • Coleção de informações relacionadas, definidas pelo seu criador. • Programas e dados. 11 Gerência de Arquivos • Responsabilidades do S.O. sobre a gerência de arquivos: – Criação e remoção de arquivos. – Criação e remoção de diretórios. – Suporte a primitivas para manipulação de arquivos e diretórios. – Mapeamento de arquivos em armazenamento secundário. – Cópias de segurança (backup) de arquivos. 12 Gerência do Sistema de E/S • Uma das finalidades de um S.O. é ocultar do usuário as peculiaridades dos dispositivos de hardware. • Responsabilidades do SO relacionadas a E/S: – Controle dos recursos de buffers/caches; – Definição de uma interface geral e comum para acionamento dos dispositivos. – Implementação dos acionadores de dispositivos específicos (driver de dispositivo). 13 Gerência do Armazenamento Secundário • Armazenamento secundário: – Sistema de armazenamento de dados não volátil. – Visa complementar a memória principal. • A maioria dos sistemas modernos usa discos como o principal meio de armazenamento. • A velocidade de operação de um computador pode depender das velocidades do subsistema de disco e dos algoritmos para manipular esse subsistema. • Responsabilidades do S.O. em relação ao armazenamento secundário: – Gerenciamento do espaço livre. – Alocação do armazenamento. – Mapeamento de arquivos em discos. – Escalonamento do disco. 14 Redes • Em um sistema distribuído, processadores têm clock e memória particulares. • A forma de conexão entre eles é através de uma rede de comunicação. • Responsabilidades do S.O. em relação à rede: – Controlar o acesso à rede pelos processos. – Garantir a disponibilidade de protocolos mais comuns. – Oferecer recursos eficientes. 15 Sistema de Proteção • Usualmente, um S.O. garante acesso a diversos programas, processos e usuários: – É essencial que tais acessos sejam controlados e protegidos contra abusos (propositais ou acidentais). • Exemplo: – Hardware de endereçamento de memória garante que um processo só possa ser executado dentro do seu próprio espaço de endereços. – Temporizador garante que nenhum processo possa obter controle da CPU indefinidamente. 16 Sistema de Proteção • Proteção: – Qualquer mecanismo para controle de acesso de programas, processos ou usuários em relação aos recursos. • Responsabilidades do SO em relação a proteção: – Distinguir uso autorizado do não autorizado. – Especificar os controles a serem impostos. – Prover uma maneira de manter a obediência. 17 Sistema Interpretador de Comandos • Interpretador de comandos é um dos programas mais importantes do S.O. – Interface entre o usuário e o sistema operacional. • Interpretadores de comandos podem tomar formas variadas e diferentes nomes: – Interpretação de linha de comando. – Shell (Unix / Linux). – Sistemas gerenciadores de janelas (KDE, Gnome, X11, etc.). SERVIÇOS DO SISTEMA OPERACIONAL Estruturas do Sistema Operacional 19 Serviços do Sistema Operacional Conjunto de serviços que oferecem funções úteis ao usuário: • Interface de usuário: – Interface de linha de comando, interface batch e interface gráfica de usuário. • Execução de programa: – Carregamento do programa em memória e posterior execução do mesmo. – Programa precisa ainda terminar sua execução, de forma normal ou anormal. 20 Serviços do Sistema Operacional • Operações de E/S: – Um processo pode requerer operações de E/S. – Para cada dispositivo, funções especiais podem ser providas. • Gravação de CD/DVD, apagar uma tela de vídeo, etc. – Usuários não podem controlar dispositivos de E/S diretamente. • S.O. fornece um meio para executar tarefas relacionadas a esses dispositivos. • Manipulação do sistema de arquivos: – Programas precisam ler e escreverem sistemas de arquivos. – Criação/remoção de arquivos por nome, procurar determinado arquivo e listar informações do mesmo. 21 Serviços do Sistema Operacional • Comunicações: – Processos podem trocar informações entre si: • Processos executando em um mesmo computador. • Processos executando em máquinas fisicamente distantes. – Memória compartilhada e/ou troca de mensagens. • Detecção de erro: – S.O. precisa estar ciente de possíveis erros. – Possíveis ocorrências: • CPU, memórias, dispositivos de E/S e programas de usuário. – Para cada tipo de erro, o S.O. deve tomar a medida apropriada para garantir a computação correta e consistente. 22 Serviços Adicionais do Sistema Operacional Determinados serviços não tem foco direto no usuário, mas garantem a operação eficiente do próprio sistema. • Alocação de recursos: – Muitos usuários ou várias tarefas simultaneamente exigem alocação de recursos. – Escalonamento de CPU, alocação de memória, operações de E/S, etc. 23 Serviços Adicionais do Sistema Operacional • Contabilidade: – Quais usuários fazem uso de quais/quantos recursos do sistema. – Estatísticas de uso podem ser utilizadas até para cobranças financeiras de serviços. – Reconfigurar o sistema, a fim de aprimorar os serviços de computação. • Proteção e segurança: – Proteção envolve a garantia de controle de todo o acesso aos recursos do sistema. – Segurança do sistema exige autenticação para acessar os recursos do sistema. • Também defende dispositivos de E/S externos (modems, adaptadores, etc.). 24 Serviços do Sistema Operacional CHAMADAS DE SISTEMA Estruturas do Sistema Operacional 26 Chamadas de Sistema • As chamadas de sistema (System Calls) oferecem uma interface com os serviços disponibilizados por um sistema operacional. – Rotinas escritas em C/C++. – Certas tarefas de nível mais baixo podem ter que ser escritas em linguagem assembly. • Tarefas onde o hardware precisa ser acessado diretamente. • Em UNIX as chamadas de sistema podem ser feitas diretamente por um programa em C/C++. – Em Windows: Win32. 27 Chamadas de Sistema • Exemplo de utilização de chamadas de sistema: – Criação de um programa simples para ler dados de um arquivo e copiá-los para outro arquivo (novo). 28 Chamadas de Sistema • Até mesmo programas simples utilizam várias chamadas de sistema. – Entretanto, esse nível de detalhe normalmente é transparente para o programador. • Interface de Programa de Aplicação (API). –Conjunto de funções que estão disponíveis, incluindo parâmetros que são passados a cada função e os valores de retorno que o programador pode esperar. – Portabilidade. –Win32, POSIX, API Java, etc. • Por que usar uma API em vez de invocar chamadas de sistema reais? – Portabilidade de programas. – Chamadas de sistema são mais detalhadas e difíceis de manipular. 29 Chamadas de Sistema • Tipicamente, cada chamada de sistema possui um número associado. – A interface de chamada de sistemas mantém uma tabela indexada com esses números. • A interface de chamada de sistema invoca a chamada desejada no kernel do S.O. e retorna o estado e valores de retorno para o usuário. • Quem faz a chamada não precisa ter qualquer informação sobre como a chamada de sistema foi implementada. – Precisa apenas conhecer a interface e saber o que o S.O. fará como resultado da chamada. – A maioria dos detalhes do S.O. ficam escondidos dos usuários atrás de APIs. 30 Relação entre API e Chamada de Sistema 31 Relação entre API e Chamada de Sistema • Programa em C invocando a função printf( ), que utiliza a chamada de sistema write( ). 32 Chamadas de Sistema • Frequentemente a execução de uma chamada de sistema requer mais do que a identificação da chamada desejada. – Para obter entradas, por exemplo, podemos ter que especificar o arquivo ou dispositivo a ser usado como origem, entre outras informações. • Três métodos são comumente utilizados para se passar parâmetros para o sistema operacional: – Passagem por meio de registradores da CPU. – Armazenamento em um bloco (tabela) na memória cujo endereço é passado em um registrador da CPU. • Linux e Solaris. – Armazenamento na pilha do programa, de onde o S.O. extrai os dados. • Mais comuns: método do bloco ou da pilha. – Por quê? • Exemplo: MIPS. • Não limitam o número ou tamanho dos parâmetros! 33 Passagem de Parâmetros via Tabela 34 Chamadas de Sistema • Tipos de chamadas de sistema: – Controle de processos – Manipulação de arquivos – Manipulação de dispositivos – Manutenção de informações – Comunicações – Proteção 35 Exemplos de Chamadas de Sistema do Windows e UNIX 36 Controle de Processos • Um processo precisa ser capaz de interromper sua execução normalmente ou de forma anormal. – Se termina de forma anormal ou se encontrar um problema e causar uma exceção, um dump de memória é apanhado e uma mensagem de erro é gerada. • Dump é gravado em disco e pode ser examinado por um depurador para determinar a causa do problema. • Após finalização, controle é transferido para o interpretador de comandos que irá executar o próximo trabalho da fila. 37 Controle de Processos • Um processo pode precisar de carregar e executar outro programa. – Exemplo: linha de comando. – S.O. precisa fornecer esse serviço e gerenciar a execução do novo programa. • Listar e alterar atributos de um processo. • Criar e terminar um processo criado. • Alocar e liberar memória. • Finalização de um processo: – Espera por tempo. – Espera por evento. 38 Manipulação de Arquivos • Suporte a criação e deleção de arquivos. – Nome e uma série de atributos. • Para que possa ocorrer a leitura/escrita/reposicionamento, arquivos precisam ser inicialmente abertos. • Arquivos precisam ser fechados ao fim do seu uso. – Indicar que não está sendo usado. • Ler e modificar atributos de arquivos. • Mesmos conceitos se aplicam aos diretórios. 39 Manipulação de Dispositivos • Um programa para executar pode precisar de recursos extras (memória, acesso a arquivos, etc). – Se os recursos estão disponíveis o programa poderá utilizá-los de imediato. – Caso contrário, será necessário aguardá-los. • Recursos podem ser enxergados como sendo dispositivos físicos (disco, fita) ou virtuais (arquivos). • Em sistemas multiusuários, a requisição pelo dispositivo se faz necessária. – Obtenção de uso exclusivo. – Liberação do dispositivo. – Semelhante as chamadas de sistema para arquivos. • Sistemas operacionais podem tratar arquivos e dispositivos da mesma forma, por meio de um conjunto de chamadas de sistema. – Exemplo: UNIX (/dev). 40 Manutenção de Informações • Algumas chamadas de sistema servem somente para transferência de informações entre o programa de usuário e o sistema operacional. – Exemplos: • Chamada de sistema para retornar a hora e data atuais. • Chama de sistema para retornar informações sobre o sistema. • Além disso, o S.O. mantém informações sobre todos os processos. – Chamadas de sistema para acessar e alterar essas informações. – Em UNIX: • /proc 41 Comunicações • Comunicação entre processos: – Troca de mensagens: • Por meio de um canal de comunicação. – Memória compartilhada: • Acesso a regiões de memória de outros processos. Troca de mensagens Mem. Compartilhada PROGRAMAS DO SISTEMA OPERACIONAL Estruturas do Sistema Operacional 43 Programas do Sistema Operacional • Sistemas operacionais modernos possuem uma coleção de programas. – Programas do sistema fornecem um ambiente conveniente para desenvolvimento e execução de programas. • Alguns sãosimplesmente interfaces do usuário para chamadas de sistema. • Outros são complexos. 44 Programas do Sistema Operacional Programas do sistema são divididos em categorias: • Gerência de arquivos: – Criam, removem, copiam, renomeiam,... arquivos e diretórios. • Informações de status: – Espaço disponível em disco ou memória, data e hora, desempenho, depuração, etc. • Modificação de arquivos: – Editores de texto, comandos para procurar conteúdo de arquivos ou realizar transformações do texto. 45 Programas do Sistema Operacional • Suporte para linguagem de programação: – Compiladores, montadores, depuradores e interpretadores para linguagens de programação comuns. • Carga e execução de programas: – Carregadores de programa em memória. • Comunicações: – Conexões virtuais entre os processos, usuários e outros sistemas computacionais. – Mensagens, navegação em páginas Web, correio eletrônico, acesso remoto, etc. DIFERENTES ESTRUTURAS DO SISTEMA OPERACIONAL Estrutura do Sistema Operacional 47 Diferentes Estruturas do Sistema Operacional • Sistemas operacionais são grandes e complexos. – Uma técnica comum no projeto é particionar tarefas em componentes menores. • Diferentes organizações internas de um S.O.: – Simples – Camadas – Microkernels – Módulos 48 Estrutura Simples • Sistemas operacionais que não possuem estruturas bem definidas. – Começaram com sistemas pequenos, simples e limitados. – Cresceram para além de seu escopo original. – Exemplo: • MS-DOS: – Projetado e implementado originalmente por pessoas que não tinham ideia de que ele se tornaria tão popular. – Escrito para fornecer o máximo de funcionalidade no menor espaço possível. – Apesar de possuir alguma estrutura, interfaces e níveis de funcionalidade não são bem definidos nem isolados. 49 Estrutura Simples • Estrutura do MS-DOS: 50 Estrutura Simples • Outro exemplo: – UNIX original. • Limitado pelo hardware da época. • Duas partes principais apenas: – O núcleo do sistema (kernel). – Programas do sistema. kernel 51 Enfoque em Camadas • O S.O. é dividido em níveis, cada um construído sobre os níveis inferiores. – O nível 0 é o hardware. – O nível mais alto é a interface com o usuário. • Vantagens: – Com a modularidade, cada nível se torna mais fácil de construir, usando as funções dos níveis inferiores. – Facilidade de depuração. • Dificuldade: – Definição apropriada das diversas camadas. – Qual nível fica o driver de dispositivo de armazenamento? • Deve ficar abaixo das rotinas de gerência de memória. – Outro problema: • Custo adicional para trafegar informações de uma camada para outra. 52 Enfoque em Camadas 53 Microkernels • Sistemas com muitas funcionalidades dentro do kernel podem se tornar muito complexos. • Uma opção é manter o menor kernel possível e mover todo o resto para o espaço de usuário. – Microkernels fornecem uma gerência mínima de processo e memória e facilidade de comunicação. • A principal função do microkernel é fornecer facilidade de comunicação entre o programa cliente e os diversos serviços executados no espaço de usuário: – Comunicação fornecida por troca de mensagens. 54 Microkernels • Benefícios: – Facilidade de extensão do sistema operacional. • Novos serviços são acrescentados ao espaço de usuário. – Não exigem modificação do kernel. • Mudanças no kernel tendem a ser menores. – Mais segurança e confiabilidade: • A maioria dos serviços executam como processos do usuário. • Se um serviço falhar, o restante do sistema permanecerá intocável. 55 Módulos • Uso de técnicas de programação orientada a objetos é uma boa metodologia para projetar um sistema operacional. – Criação de um kernel modular. • Kernel modular: – Conjunto de componentes básicos. – Vincula dinamicamente serviços adicionais. • Durante o processo de boot ou durante a execução. • Módulos carregáveis dinamicamente. – Implementações do Solaris, Linux e Mac Os X. 56 Módulos • Módulos carregáveis do Solaris: MÁQUINAS VIRTUAIS Estruturas do Sistema Operacional 58 Máquinas Virtuais • Ideia fundamental é separar o hardware ou um computador isolado em vários ambientes de execução diferentes (diferentes S.O.). – Cria-se uma ilusão de que cada ambiente de execução separado está executando seu próprio computador privado. – Provê uma interface idêntica à do hardware básico. – Cada processo recebe uma cópia (virtual) do computador básico. • Exemplos: – VMWare, Virtual PC, Virtual Box, Xen, etc. 59 Máquinas Virtuais Ambiente tradicional Ambiente Virtual 60 Máquinas Virtuais • Conceito originalmente utilizado em mainframes IBM (VM, 1972). – Cada usuário tinha a visão que seu terminal se comportava como um computador individual. – Na verdade, terminais estavam ligados a um grande mainframe que executava as máquinas virtuais. – Impressoras e leitoras de cartões eram virtualmente conectadas a cada máquina virtual. 61 Máquinas Virtuais • Máquinas virtuais são completamente isoladas do hardware real e das demais máquinas. • Dificuldade na implementação de uma máquina virtual: – Enorme esforço para isolar e duplicar o hardware. – Sistemas de disco. • Suponha que a máquina tenha três unidades de disco, mas queira dar suporte a sete máquinas virtuais. – Não pode alocar uma unidade de disco para cada máquina virtual. • Solução: – Prover discos virtuais que são idênticos em todos os aspectos, exceto o tamanho. 62 Máquinas Virtuais • Para que serve um ambiente virtual? – Recursos logísticos: • Backups, checkpoints, migração de serviços, etc. – Replicação de hardware: • Honeyfarms: – Uso de máquinas virtuais na detecção de novos vírus. – Ambiente de testes e desenvolvimento: • Testes em diferentes ambientes e cenários (hardware e software). – Portabilidade de Hardware: • Solução para uso de aplicações de outras plataformas. – Consolidação de servidores: • Migração de vários servidores para uma única plataforma. • Custo de manutenção/gerenciamento reduzidos. • Espaço físico e consumo energético reduzidos. • Melhor aproveitamento de hardware subutilizado. • Redução no número de licenças de software. 63 Máquinas Virtuais • Desvantagens: – Sobrecarga afeta todas as máquinas virtuais: • Quantidade de máquinas virtuais que um computador pode suportar não é ilimitada. • Necessário fazer um balanceamento. – Segurança: • Se houver uma vulnerabilidade no gerenciador da máquina virtual, por exemplo, todas as máquinas virtuais podem vir a ser afetadas. – Portabilidade: • Dependendo da solução em uso, a migração de uma máquina virtual pode não ser uma tarefa fácil. • Exemplo: Sistemas dependentes do conjunto de instruções. 64 Máquinas Virtuais • Desvantagens (cont.): – Contingência: • Em aplicações críticas, é importante ter um computador para atuar no lugar da máquina principal em caso de falhas. • Se máquina principal para, todas as virtuais também irão parar. – Desempenho: • Podem haver aplicações onde o desempenho é degradado com o uso de arquiteturas virtuais. – Gastos: • Gastos não previstos em manutenção podem ocorrer. • Além de mão-de-obra, treinamento, etc. 65 Máquina Virtual Java • Programas Java compilados são bytecodes que podem rodar em qualquer arquitetura onde exista uma Máquina Virtual Java (JVM). • A JVM consiste de: – Class loader (carga) – Class verifier (verificação) – Runtime interpreter (interpretação) • Compiladores de tempo real (just-in-time JIT) aumentam a performance. 66 Máquina Virtual Java 67 Dúvidas? Slide 1 IntroduçãoComponentes de um Sistema Operacional Componentes de um Sistema Operacional Gerência de Processos Gerência de Processos Gerência de Processos Gerência de Memória Principal Gerência de Memória Principal Gerência de Arquivos Gerência de Arquivos Gerência do Sistema de E/S Gerência do Armazenamento Secundário Redes Sistema de Proteção Sistema de Proteção Sistema Interpretador de Comandos Serviços do sistema operacional Serviços do Sistema Operacional Serviços do Sistema Operacional Serviços do Sistema Operacional Serviços Adicionais do Sistema Operacional Serviços Adicionais do Sistema Operacional Serviços do Sistema Operacional Chamadas de sistema Chamadas de Sistema Chamadas de Sistema Chamadas de Sistema Chamadas de Sistema Relação entre API e Chamada de Sistema Relação entre API e Chamada de Sistema Chamadas de Sistema Passagem de Parâmetros via Tabela Chamadas de Sistema Exemplos de Chamadas de Sistema do Windows e UNIX Controle de Processos Controle de Processos Manipulação de Arquivos Manipulação de Dispositivos Manutenção de Informações Comunicações Programas do Sistema operacional Programas do Sistema Operacional Programas do Sistema Operacional Programas do Sistema Operacional Diferentes estruturas do sistema operacional Diferentes Estruturas do Sistema Operacional Estrutura Simples Estrutura Simples Estrutura Simples Enfoque em Camadas Enfoque em Camadas Microkernels Microkernels Módulos Módulos Máquinas virtuais Máquinas Virtuais Máquinas Virtuais Máquinas Virtuais Máquinas Virtuais Máquinas Virtuais Máquinas Virtuais Máquinas Virtuais Máquina Virtual Java Máquina Virtual Java Dúvidas?