Universidade Federal de Ouro Preto Departamento de Computação e Sistemas - DECSI Sistemas Operacionais Estruturas de Sistemas Operacionais Ref.: Capítulo 3 Vicente Amorim [email protected] www.decom.ufop.br/vicente Sumário * Introdução * Componentes de um SO * Serviços do sistema * Chamadas de Sistema * Diferentes Estruturas de SO * Máquinas Virtuais e Virtualização www.decom.ufop.br/vicente Introdução www.decom.ufop.br/vicente Introdução * Visão Geral - A grosso modo: Um SO provê um ambiente no qual outros programas/sistemas podem ser executados. - Antes da criação de um SO, o objetivo do mesmo deve ser bem definido. - Diferentes pontos de vista: ✓ Serviços providos pelo SO; ✓ Interface que o SO provê para com os usuários finais e programadores; e ✓ Componentes de um SO e suas interconexões. www.decom.ufop.br/vicente Componentes de um SO www.decom.ufop.br/vicente Componentes de um SO * Componentes usuais de um SO - Gerenciador de processos; - Gerenciador de memória principal; - Gerenciador de arquivos; - Gerenciador do sistema de E/S; - Gerenciador de memória secundária; - Sistemas de rede; - Sistemas de proteção; - Sistema interpretador de comandos. www.decom.ufop.br/vicente Componentes de um SO * Gerenciador de processos - Processo -> Programa em execução ✓ Compiladores, editores de texto, tarefas do sistema, etc. - Necessidade de recursos: ✓ CPU, memória, arquivos, dispositivos de E/S. ✓ Alocação no início ou durante execução dos mesmos. ✓ Recursos são a fonte principal de “alimentação” dos processos. www.decom.ufop.br/vicente Componentes de um SO * Gerenciador de processos - Necessidade de recursos (cont.): ✓ Ex.: Processo que tem como função exibir o status de um arquivo na tela: ‣ Inicialmente, ao processo é dado 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 SO “toma de volta” todos os recursos cedidos e reutilizáveis. www.decom.ufop.br/vicente Componentes de um SO * Gerenciador de processos - Um programa por si só não é um processo!!! (estado estático) - Um programa é uma entidade que possui um PC (program counter) e executa sequencialmente instruções. (estado dinâmico) - Concorrência: Processos de usuário vs. Processos de sistema. www.decom.ufop.br/vicente Componentes de um SO * Gerenciador de processos - Um processo é a unidade de trabalho do SO. - Em relação aos processos, é função do SO controlar: ✓ Criação e destruição de processos. ✓ Suspensão e retomada de execução. ✓ Garantia de mecanismos para sincronização e comunicação entre processos. ✓ Mecanismos para manipulação de deadlock. www.decom.ufop.br/vicente Componentes de um SO * Gerenciador de memória principal - A memória é um vetor de bytes endereçáveis. - Pode ser enxergada como um depósito de dados rapidamente acessíveis, compartilhados por dispositivos e CPU. - Dispositivo de armazenamento volátil. - Responsabilidades do SO sobre a memória principal: ✓ Controle das partes da mem. que estão utilizadas e por quem. ✓ Decidir quais processos ganham acesso. ✓ Alocar e liberar espaço sob demanda. www.decom.ufop.br/vicente Componentes de um SO * Gerenciador 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, diferentes propriedades:Velocidade, capacidade, taxa de transferência, métodos de acesso (sequencial ou randômico), etc. - SO abstrai as propriedades físicas dos dispositivos de armazenamento para prover uma unidade lógica de armazenamento: Arquivo. www.decom.ufop.br/vicente Componentes de um SO * Gerenciador de arquivos - Arquivo: Coleção de dados relacionados ✓ Programas (fontes, objetos e executáveis, dados). - Responsabilidades do SO sobre arquivos: ✓ Criação e remoção de arquivos. ✓ Criação e remoção de diretórios (índices). ✓ Suporte a primitivas de acesso e manipulação. ✓ Mapeamento para o armazenamento secundário. ✓ Cópias de segurança (backup). www.decom.ufop.br/vicente Componentes de um SO * Gerenciador do sistema de E/S - Tarefa do SO: Esconder do usuário as peculiaridades de cada dispositivo de hardware. - E/S: Relacionamento com dispositivos periféricos. - 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 (device drivers). www.decom.ufop.br/vicente Componentes de um SO * Gerenciador de memória secundária - 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. - Responsabilidades do SO em relação ao armazenamento secundário: ✓ Controle de espaço livre; ✓ Alocação do armazenamento; ✓ Mapeamento de arquivos em discos; e ✓ Escalonamento de discos. www.decom.ufop.br/vicente Componentes de um SO * Gerenciador de memória secundária - Eficiência: Alta frequência de acesso vs. velocidade do dispositivo. - Toda velocidade do computador pode ser limitada devido ao tempo de acesso ao disco. www.decom.ufop.br/vicente Componentes de um SO * Sistemas de rede - Em um sistema distribuído, processadores têm cada um seu clock e sua memória particulares. - A forma de conexão entre eles é através de uma rede de comunicação. - Responsabilidades do SO em relação à rede: ✓ Controlar o acesso à rede pelos processos; ✓ Garantir a disponibilidade de protocolos mais comuns; ✓ Oferecer recursos eficientes - Com o advento da wwweb: FTP, NFS, HTTP, HTTPS, etc. www.decom.ufop.br/vicente Componentes de um SO * Sistemas de proteção - Usualmente, um SO garante acesso a diversos programas, processos e usuários: ✓ É essencial que tais acessos sejam controlados e protegidos contra abusos (propositais ou acidentais). - Determinados arquivos, segmentos de memória, CPU e outros recursos podem ser acessados somente por entidades autorizadas. - Ex.: Mecanismo de verificação de endereçamento de memória garante que processos utilizem somente regiões de memória a eles destinadas. www.decom.ufop.br/vicente Componentes de um SO * Sistemas 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: ✓ Diferenciação de acessos autorizados ou não; ✓ Definição dos controles a serem impostos; ✓ Criação de formas de fazer valer as regras. www.decom.ufop.br/vicente Componentes de um SO * Sistema interpretador de comandos - O SO deve prover formas de comunicação com os usuários para receber deles as instruções sobre o que fazer. - Um dos mais importantes programas do sistema. - 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). www.decom.ufop.br/vicente Componentes de um SO * Serviços do Sistema Operacional - Execução de programas: ✓ Carregamento do programa em memória e posterior execução do mesmo. ✓ Programa precisa ainda terminar sua execução, de forma normal ou anormal. - Controle de operações de E/S: ✓ Um prog. de usuário pode requerer operações de E/S. ✓ Para cada dispositivo, funções especiais podem ser providas. ✓ Usuários não podem controlar dispositivos de E/S diretamente. www.decom.ufop.br/vicente Componentes de um SO * Serviços do Sistema Operacional - Manipulação de arquivos e sist. de arquivos: ✓ Programas precisam ler e escrever em sistemas de arquivos. ✓ Criação/remoção de arquivos através dos caminhos (paths) para os mesmos. - Comunicação (local ou via rede): ✓ Processos podem trocar informações entre si: ‣ Processos executando em um mesmo computador: Memória compartilhada, ... ‣ Processos executando em máquinas fisicamente distantes: Envio/ recebimento de mensagens. www.decom.ufop.br/vicente Componentes de um SO * Serviços do Sistema Operacional - Detecção de erros: ✓ SO precisa estar ciente do acontecimento de erros: Sistemas críticos. ✓ Possíveis ocorrências em: CPU, memórias, dispositivos de E/S e programas de usuário. ✓ Para cada tipo de erro, um tratamento diferente. www.decom.ufop.br/vicente Componentes de um SO * Serviços Adicionais do Sistema Operacional - Determinados serviços não tem foco direto no usuário, mas garantem a operação eficiente. - Alocação de recursos: ✓ Múltiplos usuários: Alguém precisa ter prioridade na utilização de recursos. - Contabilidade: ✓ Quais usuários fazem uso de quais/quantos recursos do sistema. ✓ Estatísticas podem ser utilizadas até para cobranças financeiras de serviços. www.decom.ufop.br/vicente Componentes de um SO * Serviços Adicionais do Sistema Operacional - Proteção: ✓ Todos os acessos aos recursos do sistema devem ser controlados. ✓ “Quem” acessou “o quê”? Autenticação!! ✓ Limitação de quantidade de uso de determinados recursos. www.decom.ufop.br/vicente Componentes de um SO * Chamadas de Sistema (system calls) www.decom.ufop.br/vicente Componentes de um SO * Chamadas de Sistema (system calls) - Definem a interface entre programas em nível de usuário e o SO. - Implementam o chaveamento de níveis de proteção discutidos anteriormente. - Disponíveis como instruções em linguagens de máquina. - Linguagens de alto nível costumam oferecer bibliotecas que encapsulam tais chamadas. - Ex.: Cópia do conteúdo de um arquivo para outro local. www.decom.ufop.br/vicente Componentes de um SO * Chamadas de Sistema (system calls) - Por se tratar de uma mudança de nível de proteção, a passagem de dados é controlada. - Três métodos são comumente utilizados para se passar parâmetros entre processos de usuário e SO: ✓ Passagens através de registradores da CPU. ✓ Armazenamento em um local da memória cujo endereço é passado em um registrador da CPU. ✓ Armazenamento na pilha (stack) do programa, de onde o SO extrai os dados. www.decom.ufop.br/vicente Componentes de um SO * Chamadas de Sistema (system calls) - Tipos de chamadas de sistema: ✓ Controle de processos; ✓ Gerência de arquivos; ✓ Gerência de dispositivos; ✓ Manutenção de informações do sistema; ✓ Comunicação. www.decom.ufop.br/vicente Componentes de um SO * Chamadas de Sistema (system calls) - Controle de processos: ✓ Programa pode terminar sua execução de forma normal ou anormal. ✓ Se o programa termina de forma anormal (system call ou erro), uma exceção é gerada e um dump de memória é geralmente feito em disco. ✓ Após finalização, controle é transferido para o interpretador de comandos que irá executar o próximo trabalho da fila. www.decom.ufop.br/vicente Componentes de um SO * Chamadas de Sistema (system calls) - Controle de processos: ✓ Importante: Um processo pode requerer a execução de outro processo. ✓ Quando o segundo programa terminar, para onde deve ser retornado o controle do mesmo? ‣ Se o controle retorna para o programa existente: Programa à parte foi executado com sucesso. ‣ Se ambos continuam sua execução de forma concorrente, então foi criado um novo processo. www.decom.ufop.br/vicente Componentes de um SO * Chamadas de Sistema (system calls) - Controle de processos: ✓ Finalização de um processo: ‣ Espera por tempo; (wait) ‣ Espera por evento. (wait/signal) ✓ Exemplo: Controle de processos no MS-DOS ‣ É um sistema mono-tarefa. ‣ Interpretador de comandos é invocado quando o SO é carregado. ‣ Executa um programa e não cria um novo processo à partir do mesmo. ‣ Através de um mecanismo de redirecionamento de interrupções, o mesmo emula a execução concorrente (TSR - Terminate and stay resident). www.decom.ufop.br/vicente Componentes de um SO * Chamadas de Sistema (system calls) - Controle de processos no MS-DOS: www.decom.ufop.br/vicente Componentes de um SO * Chamadas de Sistema (system calls) - Controle de processos: ✓ Exemplo: Controle de processos no FreeBSD (unix-like) ‣ É um sistema multitarefa. ‣ Quando usuário é autenticado, o interpretador de tarefas escolhido pelo usuário é automaticamente iniciado (ex.: shell). ‣ Interpretador de comandos continua rodando enquanto outro programa é executado (fork / exec). www.decom.ufop.br/vicente Componentes de um SO * Chamadas de Sistema (system calls) - Controle de processos: Unix executando diversos programas www.decom.ufop.br/vicente Componentes de um SO * Chamadas de Sistema (system calls) - Gerenciamento de Arquivos: ✓ Suporte a criação e deleção de arquivos. ✓ Arquivos normalmente tem 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. ✓ Mesmos conceitos se aplicam aos diretórios. www.decom.ufop.br/vicente Componentes de um SO * Chamadas de Sistema (system calls) - Gerenciamento 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. ✓ Arquivos podem ser enxergados pelo SO como sendo dispositivos virtuais. ✓ Em sistemas multi-usuários, a requisição pelo recurso se faz necessária. www.decom.ufop.br/vicente Componentes de um SO * Chamadas de Sistema (system calls) - Manutenção da Informação: ✓ Algumas chamadas de sistema servem somente para transferência de informação entre SO/progs. de usuário. (date / time, etc). ✓ SOs mantém informação sobre cada processo em execução. ✓ System calls para alterar e obter os valores correntes dos atributos dos processos. ✓ Em Unix: /proc. www.decom.ufop.br/vicente Componentes de um SO * Chamadas de Sistema (system calls) - Comunicação: ✓ Envio de mensagens. ✓ Compartilhamento de memória. Msg'Passing' www.decom.ufop.br/vicente Shared'Memory' Componentes de um SO * Programas do Sistema (comandos) - Um nível de abstração/funcionalidade adicional. - Acabam por contribuir na definição do SO na visão dos usuários: ✓ Manipulação de arquivos: Criação, cópia, deleção, etc. ✓ Infos. de status do sistema: Espaço disponível, data, hora... ✓ Modificação de arquivos:Vi, emacs, edit, ... ✓ Suporte a linguagens de programação: Compiladores, assemblers, linkers, ... www.decom.ufop.br/vicente Componentes de um SO * Programas do Sistema (comandos) - Acabam por contribuir na definição do SO na visão dos usuários: (cont.) ✓ Controle e execução de programas: Carregadores do programa em memória (loaders), link-editores, absolute loaders, ... ✓ Comunicação: Conexões virtuais entre os processos, usuários e outros sistemas computacionais -> Envio/recepção de mensagens, processamento de páginas web, etc... www.decom.ufop.br/vicente Diferentes Estruturas de SO www.decom.ufop.br/vicente Diferentes Estruturas de SO * Introdução - Sistemas operacionais estão entre os sistemas de software mais complexos existentes atualmente. - No passado, eram escritos como um único programa, em linguagem de máquina. - O aumento da complexidade levou à busca por outras formas de organização interna: ✓ Camadas; ✓ Módulos; ✓ Micro-kernel; ✓ Máquinas virtuais. www.decom.ufop.br/vicente Diferentes Estruturas de SO * Estrutura do MS-DOS - Escrito para microprocessadores simples, com poucos recursos de proteção: ✓ Máximo de funcionalidade no menor espaço. ✓ Não é divido em camadas ou módulos. ✓ Apesar de possuir alguma estrutura, interfaces e níveis de funcionalidade não são bem definidos nem isolados: Inclusive por limitações dos computadores nos quais executava). www.decom.ufop.br/vicente Diferentes Estruturas de SO * Estrutura do MS-DOS www.decom.ufop.br/vicente Diferentes Estruturas de SO * Estrutura do Unix - Unix original foi talvez o primeiro SO a ser escrito em uma linguagem de “alto nível”, C. - Originalmente limitado pelo HW da época, com o tempo foi crescendo, gerando diferentes versões. - O Linux é derivado conceitualmente do Unix, apesar de ter sido desenvolvido separadamente. - Originalmente, duas partes principais apenas: ✓ O núcleo do sistema, ou kernel; e ✓ Programas do sistema: shells, editores, etc. www.decom.ufop.br/vicente Diferentes Estruturas de SO * Estrutura do Unix www.decom.ufop.br/vicente Diferentes Estruturas de SO * Enfoque em camadas - O SO é 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. - Com a modularidade, cada nível se torna mais fácil de construir, usando as funções dos níveis inferiores. www.decom.ufop.br/vicente Diferentes Estruturas de SO * Enfoque em camadas www.decom.ufop.br/vicente Diferentes Estruturas de SO * Estrutura em camadas do Linux www.decom.ufop.br/vicente Diferentes Estruturas de SO * Estrutura em camadas do Android www.decom.ufop.br/vicente Diferentes Estruturas de SO * Estrutura em micro-kernel - 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. - Tarefas são executadas por processos que trocam mensagens: ✓ Menos código em modo protegido (kernel); ✓ Mais fácil estender (novos processos); ✓ Mais fácil de portar para outras arquiteturas. www.decom.ufop.br/vicente Diferentes Estruturas de SO * Estrutura em micro-kernel do MAC OS-X www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Virtualização está na moda www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - Por que utilizar? ✓ Melhor aproveitamento da estrutura existente. ✓ Parque de máquinas menor: Necessidade de menor custo de manutenção. ✓ Gerenciamento centralizado. ✓ Implementação mais rápida: Infra-estrutura já está instalada. ✓ Uso de sistemas legados: Manter sistemas antigos funcionando sem deixar de atualizar-se. www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - Por que utilizar? www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - Extensão do enfoque em camadas: ✓ SO pode ser colocado sobre outra camada que o separa do hw. - Uma máquina virtual é uma abstração de sw e hw fornecida para um SO como se fosse a máquina real onde ele espera executar. - Diversos SOs podem executar de forma protegida uns dos outros. www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - O nível inferior (que cria as máquinas virtuais) oferece uma interface equivalente ao hw. - Os recursos do computador real são compartilhados entre as máquinas virtuais. ✓ Escalonamento da CPU pode dar a impressão que cada SO tem seu próprio processador. ✓ Recursos restritos podem ser virtualizados de forma que cada SO veja um recurso só seu. www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * O que é um ambiente virtual? Ambiente Tradicional! Ambiente Virtual! www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Quando a virtualização era novidade... www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização 1972! www.decom.ufop.br/vicente Isolation! Máquinas Virtuais e Virtualização Monitor para ! gerenciar ! o ambiente! O enfoque era ! Time sharing! www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - Conceito originalmente utilizado em mainframes IBM (VM) ✓ 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. www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - Máquinas virtuais são completamente isoladas do hw real e das demais máquinas. - A camada de virtualização adiciona overheads. - Não é possível compartilhar recursos de forma flexível - cada máquina tem sua cota de recursos. - Útil para pesquisa e desenvolvimento de SOs: não exige um hardware isolado para desenvolvimento e testes. www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - Implementação é difícil devido ao esforço necessário para isolar e duplicar o hardware. - Existem diversos tipos de virtualização dependendo de como a abstração é criada: ✓ Interpretadores: Programas (sw) que processam cada instrução que seria entregue ao hw. ✓ Paravirtualização: O SO que executa na máquina virtual sabe da virtualização e colabora com o nível inferior de virtualização (hipervisor). www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais ✓ Panaevirtualização: O núcleo do SO é virtualizado (várias máquinas virtuais com um único SO). ✓ Virtualização com apoio do hardware: Processadores mais novos oferecem proteção para máquinas virtuais. www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais Virtualização Pura! Paravirtualização! www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - Virtualização pura: ✓ Não requer alterações no SO, mas é mais lenta. ✓ Ambientes mais conhecidos: ‣ VMWare,Virtual PC,VirtualBox e QEMU. - Paravirtualização: ✓ Requer mudanças no SO, mas não nas aplicações. ✓ Problema resolvido com criação de hardware especial. ‣ Conjunto de instruções próprio para ser aplicado neste ambiente. ‣ Intel (Vanderpool ou IVT) e AMD (Pacífica). www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - Paravirtualização: (cont.) ✓ Ambientes mais conhecidos ‣ Xen (livre e de código aberto) ‣ VMWare ESX Server ‣ Denali (apenas uma aplicação por máquina virtual). - Outros tipos de virtualização ✓ VServers (utilizados em grids). ✓ KVM (kernel-based) incluído no kernel 2.6.20 do Linux. www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - Para que serve um ambiente virtual? ✓ Recursos logísticos ‣ Backups, checkpoints, migração de serviços, etc. ✓ Replicação de hardware ‣ Ex.: 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. www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - Para que serve um ambiente virtual? ✓ 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. www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - Para que serve um ambiente virtual? ✓ Consolidação de servidores ‣ Melhor aproveitamento de recursos: Pesquisa da HP revela que 50% dos servidores possuem utilização <= 10% e 80% <= 25%. www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - Para que serve um ambiente virtual? ✓ Virtual datacenters ‣ Terceirização de serviços em ambientes virtuais: Utility computing. www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - Para que serve um ambiente virtual? ✓ Virtual datacenters ‣ Ambiente flexível e auto-adaptativo. ‣ Política de punião e recompensa via SLA (Service Level Agreement). www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * 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 na VMM, 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. Ex.: Sistemas dependentes do conjunto de instruções. www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquinas Virtuais - Desvantagens ✓ 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 pára, 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. www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquina Virtual Java - Máquina virtual do tipo interpretado. - Programas Java são compilados para instruções (bytecodes) de uma máquina virtual Java (JVM). - Um interpretador que emula a JVM em cada hw precisa ser desenvolvido e inclui um carregador e um verificador de classes compiladas. - Compiladores JIT (Just In Time): Transformam bytecodes em instruções da máquina real. www.decom.ufop.br/vicente Máquinas Virtuais e Virtualização * Máquina Virtual Java www.decom.ufop.br/vicente Exercícios 1) Descreva o que é um processo e qual o papel do mesmo no sistema operacional. 2) Diferencie memória primária de memória secundária. Quais as principais características e papéis de cada uma? 3) O que são e para que servem as chamadas de sistema (System Calls)? 4) Apresente as áreas de um SO nas quais atuam as chamadas de sistema. 5) Qual o principal papel desenvolvido pelo gerenciador do sistema de arquivos? 6) Apresente com suas palavras as principais vantagens/desvantagens da virtualização. www.decom.ufop.br/vicente Exercícios 7) Cite exemplos de ambientes virtuais presentes no mercado atualmente. www.decom.ufop.br/vicente