560 likes | 761 Vues
Capítulo 2: Estruturas do Sistema Operacional. Objetivos. Descrever os serviços providos pelos sistemas operacionais para os usuários, processos e outros sistemas Discutir as diversas formas de estruturação dos sistemas operacionais. Serviços do sistema operacional.
E N D
Objetivos • Descrever os serviços providos pelos sistemas operacionais para os usuários, processos e outros sistemas • Discutir as diversas formas de estruturação dos sistemas operacionais
Serviços do sistema operacional • Sistemas operacionais provêem um ambiente para execução de programas e serviços para programas e usuários • Dois conjuntos de serviços do sistema operacional • Funções que são úteis para o usuário • Funções que são úteis para a eficiência do sistema
Serviços do sistema operacional • Funções que são úteis para o usuário: • Interface do usuário – Quase todos os sistemas operacionais possuem uma interface de usuário • Varia entre Command-Line (CLI), Graphics User Interface (GUI), eBatch • Execução de programas – O sistema deve estar apto a carregar um programa na memória e executá-lo, tanto normalmente quanto anormalmente (indicando o erro) • Operações de entrada e saída (E/S) - Um programa em execução pode requisitar operações de E/S, as quais envolvem um arquivo ou um dispositivo de entrada e saída • Manipulação do sistema de arquivos - O sistema de arquivos é de interesse particular. Os programas precisam ler e escrever em arquivos e diretórios, criar e deletá-los, buscá-los, listar a informação de arquivos e gerenciamento de permissão
Serviços de sistemas operacionais • Funções que são úteis para o usuário (cont.): • Comunicação – Processos podem trocar informações em um mesmo computador ou entre computadores • Memória compartilhada • Troca de mensagens • Pacotes enviados pelo sistema operacional • Detecção de erros • Monitoração constante de erros pelo sistema operacional • Podem ocorrer na CPU, memória, dispositivos de I/O e programas • Ação diferenciada para cada tipo de erro • Garantia de computação correta e consistente • Depuração pode aumentar as habilidades de usuários e programadores para usar eficientemente o sistema
Serviços de sistemas operacionais • Outro conjunto de funções que garantem a eficiência da operação do sistema através do compartilhamento de recursos • Alocação de recursos • Alocação de recursos na presença de múltiplos usuários ou múltiplos jobs concorrentes • Diferentes tipos de recursos • Alguns recursos como ciclos de CPU, memória e sistema de arquivos podem ter um código de alocação especial • Recursos como dispositivos de E/S podem ter um código de alocação genérico • Responsabilização • Registrar quantos e quais recursos cada usuário utilizou • Proteção e segurança • Proteção envolve a garantia de que o acesso aos recursos do sistema são controlados • Segurança garante que usuários de fora do sistema precisem se autenticar para utilizar os recursos do sistema
Interfaces com o usuário do sistema operacional - CLI • Command Line Interface (CLI) ou interpretador de comandos • Execução direta de comandos • Implementado no kernel ou como programa do sistema • Diversas implementações – shells • Funcionamento • Recebe comando do usuário e executa • Built-in commands (ex: cd) • Outros programas – modificações independentes do shell
Interfaces com o usuário do sistema operacional - GUI • Graphical User Interface (GUI) • Interface metafórica do desktop amigável ao usuário • Usualmente, mouse, teclado e monitor • Ícones representam arquivos, programas, ações, etc. • Inventada pela Xerox PARC • Muitos sistemas incluem ambas as interfaces CLI e GUI • Microsoft Windows • Apple Mac OS X • “Aqua” GUI interface • Kernel do UNIX com os respectivos shells • Solaris • CLI com GUI opcional (Java Desktop, KDE)
Chamadas de sistema • Interface de programação para os serviços providos pelo sistema operacional • Tipicamente escrita em linguagem de alto nível (C ou C++) • Em geral, acessado por programas por meio de Application Program Interface (API) de alto nível ao invés de uso direto • Três tipos mais comuns de APIs • Win32 API • Windows • POSIX API • Sistemas baseados em POSIX • Todas as versões de UNIX, Linux e Mac OS X • Java API • Java virtual machine (JVM) • Por que usar APIs ao invés de usar as chamadas diretamente?
Exemplo de chamada de sistema • Sequência de chamadas ao sistema para copiar o conteúdo de um arquivo para outro
Exemplo de API padrão • Considere a função ReadFile () da API Win32 para ler um arquivo: • Descrição dos parâmetros passados para a função ReadFile() • HANDLE file—arquivo a ser lido • LPVOID buffer— um buffer a partir do qual os dados serão lidos ou no qual os dados serão escritos • DWORD bytesToRead—número de bytes a serem lidos do buffer • LPDWORD bytesRead—número de bytes lidos durante a última leitura • LPOVERLAPPED ovl—Indica dados sobre o tipo de entrada e saída
Implementação da chamada de sistema • Tipicamente, um número é associado a cada chamada de sistema • A interface de chamada ao sistema mantém uma tabela indexada de acordo com esses números • A interface da chamada de sistema invoca a referida chamada no kernel do sistema operacional • A interface retorna o status da chamada de sistema e outros valores retornados • Quem faz a chamada de sistema não precisa saber nada sobre como ela é implementada • Só é necessário obedecer a API e entender os resultados gerados pelo sistema operacional • Maior parte dos detalhes da interface são escondidos do programador pela API
Exemplo usando a biblioteca padrão de C • Programa em C chamando a função de biblioteca printf(), a qual invoca a chamada de sistema write()
Passagem de parâmetros para a chamada de sistema • Três métodos gerais para a passagem de parâmetros para o sistema operacional • Mais simples possível: passagem dos parâmetros em registradores • Problema: em alguns casos, existem mais parâmetros do que registradores • Parâmetros armazenados em um bloco ou tabela na memória e o endereço correspondente é colocado em um registrador • Método usado por Linux e Solaris • Parâmetros são colocados (pushed) em uma pilha pelo programa e retirados dessa pilha (popped) pelo sistema operacional Não limitam o número de parâmetros que podem ser passados
Tipos de chamadas de sistema • Controle de processo • end, abort • load, execute • create process, terminate process • get process attributes, set process attributes • wait for time • wait event, signal event • allocate and free memory • Gerenciamento de arquivos • create file, delete file • open, close file • read, write, reposition • get and set file attributes
Tipos de chamadas de sistema • Gerenciamento de dispositivos • request device, release device • read, write, reposition • get device attributes, set device attributes • logically attach or detach devices • Informação de manutenção • get time or date, set time or date • get system data, set system data • get and set process, file, or device attributes • Comunicação • create, delete communication connection • send, receive messages • transfer status information • attach and detach remote devices
Programas do sistemas • Programas do sistema provêem um ambiente conveniente para o desenvolvimento e a execução de programas • Podem ser divididos em: • Manipulação de arquivos • Informação de status • Modificação de arquivos • Suporte a linguagem de programação • Programas para carregar e executar • Comunicações • Aplicações • A maior parte da visão do usuário sobre o sistema operacional é definida pelos programas do sistema e não pelas chamadas de sistema de fato
Programas do sistema • Provêem um ambiente conveniente para o desenvolvimento e execução de programas • Alguns são interfaces simples para chamadas de sistema e outros são consideravelmente mais complexos • Gerenciamento de arquivos – Criar, apagar, copiar, renomear, imprimir, despejar, listar e manipular arquivos e diretórios • Informação de estado • Alguns perguntam ao sistema sobre informações como data hora, quantidade de memória disponível, espaço de disco e número de usuários • Outros provêem informação detalhada de desempenho, de registro (logging) e de depuração • Tipicamente, esses programas formatam e imprimem a saída para o terminal e outros dispositivos de saída
Programas do sistema • Modificação de arquivos • Editores de texto • Comandos especiais para buscar conteúdo de arquivos ou realizar transformações no texto • Suporte de linguagem de programação • Compiladores, assemblers, debuggers e interpretadores • Carregamento e execução de programas • Comunicações • Mecanismos para criar conexões virtuais entre processos, usuários e sistemas de computadores • Mecanismos para garantir que usuários troquem mensagens, naveguem na web, enviem e-mails, façam login remoto, transfiram arquivos, etc.
Sistemas operacionais em camadas • Sistema operacional dividido camadas • Menor camada (Camada 0) – harware • Maior camada (Camada N) – Interface do usuário • Camadas selecionadas de tal forma a usar funções apenas da camadas inferiores
UNIX • Sistema operacional UNIX consiste de duas partes • Programas do sistema • Kernel • Consiste de tudo entre a interface de chamada de sistema e o hardware • Sistema de arquivos • Escalonamento de CPU • Gerenciamento de memória • Outras funções do sistema operacional
Estrutura de sistema microkernel • Mover o máximo possível de funções do kernel para o espaço do usuário • Vantagens: • Mais simples para fazer extensões • Mais simples portar o sistema para novas arquiteturas • Mais confiável (menos código rodando em modo kernel) • Mais seguro • Desvantagem: • Sobrecarga de desempenho do espaço de usuário para comunicação do espaço de usuário para espaço de kernel
Sistemas operacionais em módulos • Maioria dos sistemas operacionais modernos é implementada em módulos do kernel • Utiliza abordagem orientada a objetos • Cada componente do núcleo é separado • Comunicação entre módulos por interfaces bem conhecidas • Cada módulo é carregado de acordo com a necessidade no kernel • De forma geral, mais flexível que camadas
Máquinas virtuais • Virtualização • Consolidação • Multiplexação do uso do hardware • Vários ambientes virtuais sendo executados sobre o mesmo hardware físico
Máquinas virtuais • Máquina virtual • Simulação do hardware físico para o sistema operacional • Interface idêntica à interface provida pelo hardware • Ilusão de que o sistema operacional possui processador, memória, e outros dispositivos próprios
Máquinas virtuais • Entidades • Hospedeiro (host) • Convidado (guest) • Histórico • Criado para os mainframes da IBM em 1972 • Hardware sub-utilizado • União dos sistemas de diversas máquinas em uma única máquina física
Máquinas virtuais • Diversos níveis e tipos de virtualização • Determinado por qual camada está sendo virtualizada
Máquinas virtuais • Conceitos • Fundamentalmente, diversos ambientes, com diferentes sistemas operacionais, podem compartilhar o mesmo hardware • Isolamento • Idealmente, semelhante ao “Show de Truman” • Compartilhamento de arquivos pode ser permitido, desde que seja controlado • Comunicação entre máquinas virtuais e outros sistemas externos através da rede • Rede virtual entre máquinas virtuais
Máquinas virtuais • Utilização da virtualização • Consolidação de servidores • Computação verde • Manutenção e gerenciamento de servidores • Teste e desenvolvimento • Educação
Máquinas virtuais (a) Nonvirtual machine (b) virtual machine
Paravirtualização • Sistemas convidados adaptados para a virtualização • Assume uma interface de hardwaremodificada • Objetivo • Aumentar o desempenho no tratamento das instruções privilegiadas
Implementação da virtualização • Desafios para implementação • Criar uma duplicata exata da máquina física • Duplicata funciona em modo usuário • Simulação do modo kernel • Interceptação das instruções privilegiadas feitas em modo kernel virtual • Temporização • Tempo na máquina virtual é mais lento do que na máquina real • Suporte via hardware • Instruções para virtualização • Ex: AMD provê modos hospedeiro e convidado
Exercícios • A Figura a seguir representa um esquema geral de um sistema operacional em camadas. Explique cada uma das camadas e as interfaces entre camadas destacadas. • Como seria esse esquema se o SO fosse modular ao invés de ser em camadas? Qual a diferença entre um sistema modular e um sistema em camadas?
Exercícios • Diferencie os conceitos de monotarefa e multitarefa. Por que os sistemas evoluíram de monotarefa para multitarefa? • Em que contexto seria mais interessante ter um sistema monotarefa ao invés de um multitarefa? • Diferencie um sistema multitarefa preemptivo de um sistema multitarefa cooperativo. • A cooperação é utilizada em sistemas operacionais de tempo real ao invés da preempção. Por que a cooperação não pode ser utilizada em sistemas operacionais de propósito geral?
Exercícios • Um sistema operacional multitarefa preemptivo está executando dois processos, P1 e P2, que possuem a mesma prioridade. A execução de P1 exige no mínimo 5 slots de tempo de execução ativa na CPU, enquanto que a execução de P2 exige, no mínimo, 3 slots de tempo. P1 faz uma chamada de E/S durante o seu primeiro e durante o seu quarto slot de execução ativa na CPU, enquanto que P2 faz uma chamada de E/S durante o seu primeiro slot de execução. O processamento da atividade de E/S dura pelo menos 2 slots de tempo e o processamento da interrupção dura 1 slot de tempo. • Faça uma linha do tempo para a CPU e uma para o dispositivo de E/S representando: • O momento que cada processo é executado • O tempo de processamento das interrupções • Os pedidos de E/S e as interrupções OBS: As duas linhas do tempo devem estar correlacionadas • Qual o perfil de um processo P3 para que a eficiência da CPU aumente? Se a execução do E/S durasse apenas 1 slot de tempo, essa afirmação ainda seria válida?
Exercícios • Imagine um computador muito simples com um cache que possui espaço para 3 palavras de memória, uma memória com 10 endereços e um disco magnético. Suponha também que inicialmente o cache e a memória estejam vazios e que a política de substituição seja a de eliminar a entrada mais antiga. O programa executado realiza as seguintes requisições: • Leia o endereço de 1 a 10 do disco • Modifique o conteúdo do endereço 2 do disco • Leia os endereços 13 e 14 do disco • Modifique os endereços 13 e 3 do disco • Leia o endereço 15 do disco. • Diga qual o estado da memória principal e do cache da CPU após cada uma das requisições. Explique o porquê de cada configuração de acordo com os princípios do caching.