Estruturas dos Sistemas Operacionais Assuntos Componentes Serviços Chamadas Estrutura Máquinas virtuais Projeto e implementação Geração 3.2 Componentes Comuns Gerência Processos Memória principal Arquivos Sistema de E/S Memória secondária Rede Sistema de proteção Interpretador de comandos 3.3 Gerência de Processos Um processo é um programa em execução Necessita de CPU, memória, arquivos, dispositivos de E/S Papel do SO Criar e terminar processos Suspender e recomeçar processos Prover mecanismos para Sincronização Comunicação entre processos 3.4 Gerência de Memória Principal Memória Lista endereçável Perde conteúdo se desligada Papel do SO Manter dados sobre uso da memória Que partes, quem é o dono Decidir que processo carregar quando há espaço Alocar e desalocar memória 3.5 Gerência de Entrada e Saída O sistema de E/S consiste de Um sistema de buffer-caching Uma interface geral para gerenciadores (drivers) de dispositivos Gerenciadores (drivers) para dispositivos de hardware 3.6 Gerência de Arquivos Um arquivo é um conjunto de informações Programas, dados Papel do SO: Criar e apagar arquivos Criar e apagar diretórios Instruções para manipulação de arquivos e diretórios Mapear arquivos em armazenamento secundário Fazer backup 3.7 Gerência de Armazenamento Secundário Para manter dados entre acionamentos do computador Normalmente discos Papel do SO: Gerência de espaço livre Alocação de espaço Escalonamento do acesso à disco 3.8 Rede (Sistemas Distribuídos) Um sistema distribuído é um conjunto de CPUs não compartilham memória ou relógio Eles se comunicam via rede usando protocolos Vantagens Mais rápido Maior disponibilidade Maior confiabilidade 3.9 Sistema de Proteção Mecanismo para controlar acesso de processos ou usuários à recursos do sistema ou de usuários O sistema de proteção precisa: Distinguir uso autorizado do não autorizado Especificar os controles a serem impostos Prover uma maneira de manter obediência 3.10 Interpretador de Comandos Interface entre usuário e SO Chamado também de “shell” Busca um comando do console e o executa Pode também ser gráfico 3.11 Serviços do Sistema Operacional Execução de programas Operações de E/S Manipulações do sistema de arquivos Comunicação entre processos Detecção de erros 3.12 Funções Adicionais Para permitir a operação eficiente Alocação de recursos Contabilidade Proteção 3.13 Chamadas ao Sistema Interface entre um processo e o SO Disponíveis como instruções em assembly Também em bibliotecas de linguagens de alto nível Passagem de parâmetro Registradores Endereço de tabela em memória Pilha (stack) 3.14 Execução em MS-DOS No início Rodando um Programa 3.15 Rodando Múltiplos Programas em UNIX Sistema Operacional 3.16 Modelos de Comunicação Via Troca de Mensagens Via Memória Compartilhada 3.17 Programas do SO Provêm ambiente para a execução de programas Manipulação de arquivos Status Suporte a linguagens de programação Carga e execução de programas Comunicação A interface com o usuário é definida pelos programas do SO, e não pelas chamadas 3.18 Estrutura do MS-DOS DOS foi escrito para prover máxima funcionalidade em pouco espaço Não é dividido em módulos Monolítico Interfaces e níveis de funcionalidade não são bem divididos 3.19 Estrutura em Camadas do DOS 3.20 Estrutura do Unix Original: duas partes Kernel Tudo entre a interface de chamadas ao sistema e o hardware Prove sistema de arquivos, escalonamento da CPU, gerência de memória, etc Programas do sistema Shell Outros: ls, more, chmod, vi 3.21 Estrutura do Unix 3.22 Trabalhando em Camadas O SO pode ser dividido em camadas (níveis) construidas sobre outras camadas, da interface com o hardware até o hardware Programando de forma modular, cada nível só usa serviços do nível inferior, e oferece serviços para o nível superior 3.23 A Estrutura em Camadas do OS/2 3.24 O Microkernel O kernel é minimizado Funções são feitas no espaço do usuário Comunicação usa passagem de mensagems Vantagens Facilmente extensível Facilmente portável Maid confiável Mais seguro 3.25 Estrutura Cliente-Servidor do Windows NT 3.26 Máquinas Virtuais Hardware+OS considerado como hardware Interface idêntica à máquina original (não necessariamente) OS cria a ilusão de múltiplas máquinas independentes sobre uma única máquina real 3.27 Máquinas Virtuais (VM) Recursos compartilhados CPU é escalonada Spooling gera impressoras virtuais Um terminal normal passa a ser o console do operador 3.28 Modelo do Sistema Non-virtual Machine Virtual Machine 3.29 Vantagens/Desvantages das VM Isolamento entre máquinas virtuais Proteção completa Impossível compartilhamento de recursos Perfeita para desenvolvimento de SO Não é necessário dedicar uma máquina Maior controle Difícil de implementar Cópia exata 3.30 Máquina Virtual Java (JVM) Programas java compilados são bytecodes que podem rodar em qualquer arquitetura onde uma JVM exista 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 3.31 Máquina Virtual Java (JVM) 3.32 Objetivos no Projeto de um SO Para o usuário Conveniente, fácil, confiável, seguro e rápido Para o projetista Fácil de projetar, implementar, manter, flexível, confiável, livre de erros e eficiente 3.33 Mecanismos e Políticas Mecanismos determinam como fazer Políticas determina o que fazer Separação é importante Permite a implementação de diferentes políticas usando o mesmo mecanismo 3.34 Implementação de SO Tradicionalmente em assembly Hoje em linguagens de alto nível (C, C++) Código em linguagens de alto nível Mais rápido de escrever Mais compacto Mais fácil de entender e depurar É mais simples portar um SO (mudar a arquitetura de hardware) se ele é escrito em ling. de alto nível 3.35 Gerando um sistema Nova máquina cross-compiler gera código para outra arquitetura Sistemas podem ser configurados para uma determinada máquina SYSGEN e config BOOTING carregar o kernel Programa de Bootstrap código em ROM que encontra o kernel, carrega-o em memória e inicial a sua execução 3.36