Capítulo 2: Estruturas de Sistemas Operacionais Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne ©2009 Capítulo 2: Estruturas de Sistemas Operacionais Serviços de Sistemas Operacionais Interface entre o Usuário e o Sistema Operacional Chamadas de Sistema Tipos de Chamada de Sistema Programas de Sistema Projeto e Implementação de Sistema Operacional Estrutura de Sistema Operacional Máquinas Virtuais Depuração do Sistema Operacional Geração do Sistema Operacional Inicialização do Sistema Operating System Concepts – 8th Edition 2.2 Silberschatz, Galvin and Gagne ©2009 Objetivos Descrever os serviços que um sistema operacional fornece para usuários, processos e outros sistemas Discutir as diversas maneiras de estruturar um sistema operacional Explicar como os sistemas operacionais são instalados e personalizados e como são inicializados Operating System Concepts – 8th Edition 2.3 Silberschatz, Galvin and Gagne ©2009 Serviços do Sistema Operacional SO fornece um ambiente para execução de programas e serviços para os programas e usuários Um conjunto de serviços do SO fornece funções que são úteis para o usuário: Interface do Usuário – Quase todos os SOs têm uma interface de usuário (UI – User interface). Vária entre linha de Comando - Command-Line (CLI), Interface Gráfica de Usuário - Graphics User Interface (GUI), Batch Execução de Programa – O sistema deve ser capaz de carregar um programa na memória e executar esse programa , finalizando a sua execução, normalmente ou anormalmente (indicando o erro). Operações de I/O - Um programa em execução pode precisar de operações de I/O, que pode envolver um arquivo ou um dispositivo de I/O Manipulação de Sistema de arquivo - O sistema de arquivo é de particular interesse. Programas têm de ler e escrever arquivos e diretórios, criar e deletá-los, pesquisar, listas informações do arquivo, gerenciar permissões. Operating System Concepts – 8th Edition 2.4 Silberschatz, Galvin and Gagne ©2009 Serviços do Sistema Operacional (Cont.) Comunicações – Processo precisa trocar informações. No mesmo computador ou entre computadores da rede Comunicações pode ser via memória compartilhada ou por passagem de mensagem (pacotes movidos pelo SO) Detecção de Erros – SO tem que ter ciência das possibilidades de erros Pode ocorrer na CPU, no hardware de memória, em dispositivos de I/O, no programa do usuário Para cada tipo de erro, o SO deve disparar ações apropriadas para garantir a correção e computação consistência Recursos de depuração podem melhorar muito a possibilidades de uso eficiente do sistema pelo usuário e pelo programador Operating System Concepts – 8th Edition 2.5 Silberschatz, Galvin and Gagne ©2009 Serviços do Sistema Operacional (Cont.) Existe também um conjunto de funções do SO cujo objetivo é assegurar a operação eficiente do próprio sistema, via compartilhamento de recurso Alocação de Recurso – Quando há múltiplos usuários ou jobs ativos executando concorrentemente, os recursos devem ser alocados para cada um deles Vários tipos de recursos – Alguns (tais como ciclos de CPU, memória principal e armazenamento de arquivo) pode ter código de alocação especial, outros (tais como, dispositivos de I/O) pode ter um código muito mais genérico de solicitação e liberação. Contabilização – Controla quais usuários utilizam que quantidade e que tipo de recursos do computador Proteção e Segurança – Os proprietários de informações armazenadas no sistema computacional de rede ou multiusuário pode querer controlar o uso da informação, de maneira que processos concorrentes não interfiram na execução dos outros Proteção garante que todos os acessos aos recursos do sistema sejam controlados Segurança do sistema contra ataques externos exigem a autonticação do usuário, estendendo à defesa de dispositivo externos de I/O de tentativas de acessos inválidos Para um sistema ser protegido e seguro, preocupações devem ser tomadas em toda a sua extensão. Operating System Concepts – 8th Edition 2.6 Silberschatz, Galvin and Gagne ©2009 Uma visão de Serviços dos SO Operating System Concepts – 8th Edition 2.7 Silberschatz, Galvin and Gagne ©2009 Interface do Sistema Operacional - CLI Interface de linha de Comando (CLI) ou interpretador de comando permite que os usuários insiram diretamente os comandos Alguns implementados no kernel, em outros em Programas Programas especiais – shells Primeiramente, captura um comando do usuário e executa – Duas abordagens: (1) o próprio intepretador executa os comandos, (2) os comandos são implementados como programas do sistema Operating System Concepts – 8th Edition 2.8 Silberschatz, Galvin and Gagne ©2009 Interface do Sistema Operacional - GUI Interface de usuário gráfica – simulando uma área de trabalho (desktop) Integram mouse, teclado, e monitor Icons representa os arquivos, programas e ações, etc Várias botões do mouse sobre o objetos desencadeiam ações diferentes Desenvolvido inicialmente pela Xerox PARC Vários sistemas incluem interfaces CLI and GUI Microsoft Windows é GUI com CLI o shell “command” Apple Mac OS X interface GUI com linha de comando do kernel UNIX Solaris é CLI com interface GUI opcional (Java Desktop, KDE) Operating System Concepts – 8th Edition 2.9 Silberschatz, Galvin and Gagne ©2009 Interpretador de Comando Bourne Shell Operating System Concepts – 8th Edition 2.10 Silberschatz, Galvin and Gagne ©2009 The Mac OS X GUI Operating System Concepts – 8th Edition 2.11 Silberschatz, Galvin and Gagne ©2009 Chamadas de Sistema Interface de Programação para os serviços providos pelo SO Geralmente, escrito em linguagem de alto nível (C or C++) Normalmente acessados pelos programas via Application Program Interface (API) de alto nível, ao invés de diretamente usar as chamadas de sistema Três APIs mais comuns Win32 API para Windows, POSIX API para sistemas POSIX (incluindo todas as versões de UNIX, Linux, e Mac OS X), and API Java API para Máquina Virtual Java (JVM) Operating System Concepts – 8th Edition 2.12 Silberschatz, Galvin and Gagne ©2009 Exemplos de Chamadas de Sistema Sequência de chamada de sistema para copiar o conteúdo de um arquivo para outro Operating System Concepts – 8th Edition 2.13 Silberschatz, Galvin and Gagne ©2009 Exemplo de API Padrão Considere a função ReadFile() na Win32 API—uma função para leitura de de arquivo Descrição dos parâmetros passados para ReadFile() HANDLE file—o arquivo a ser lido LPVOID buffer—um buffer onde o dado ser lido e escrito DWORD bytesToRead—o número de bytes a ser lido para o buffer LPDWORD bytesRead—o número de bytes lido durante a última leitura LPOVERLAPPED ovl—indica se overlapped I/O está sendo usado Operating System Concepts – 8th Edition 2.14 Silberschatz, Galvin and Gagne ©2009 Iimplementação de Chamada de Sistema Geralmente, um número associado a cada chamada de sistema A interface de Sistema mantêm uma tabela indexada de acordo com estes números A interface de chamada de sistema invoca a chamada de sistema associada no kernel do SO e retorna o status da chamada de sistema e o valor de retorno O chamador não necessita conhecer com as chamada de sisetma são implementadas Necessita respeitar a API e conhecer o que o SO faz como resultado da chamada Muitos detalhes da interface do SO são ocultados do programador pela API Gerenciado pela biblioteca de suporte de run-time (conjunto de funções incluído com o compilador) Operating System Concepts – 8th Edition 2.15 Silberschatz, Galvin and Gagne ©2009 API – Chamada de Sistema – Relacionamento SO Operating System Concepts – 8th Edition 2.16 Silberschatz, Galvin and Gagne ©2009 Exemplo de Biblioteca C padrão Programa C invocando a chamada de biblioteca printf(), que chama a chamada de sistema write() Operating System Concepts – 8th Edition 2.17 Silberschatz, Galvin and Gagne ©2009 Passagem de Parâmetro via Chamada de Sistema Frequentemente, mais informações são necessárias além de identificar simplesmente a chamada desejada O tipo exato e a quantidade de informção varia de acordo com o SO e a chamada Três métodos são usados para passar parâmetros para o SO Mais simples: passar os parâmetros nos registradors Em alguns casos, pode ter mais parâmetros do que registradores Parâmetros armazenados em um bloco, ou tabela, na memória, e o endereço do bloco é passado como parâmetro em um registrador Esta abordagem é adotada pelo Linux e Solaris Parâmetros colocados no stack pelo programa e retirados do stack pelo SO Métodos de bloco e stack não estão limitados pelo número ou tamanho dos parâmetros Operating System Concepts – 8th Edition 2.18 Silberschatz, Galvin and Gagne ©2009 Passagem de Parâmetro via Tabela Operating System Concepts – 8th Edition 2.19 Silberschatz, Galvin and Gagne ©2009 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 Arquivo create file, delete file open, close file read, write, reposition get and set file attributes Operating System Concepts – 8th Edition 2.20 Silberschatz, Galvin and Gagne ©2009 Tipos de Chamadas de Sistema (Cont.) Gerenciamento de Dispositivo request device, release device read, write, reposition get device attributes, set device attributes logically attach or detach devices Manutenção de Informação get time or date, set time or date get system data, set system data get and set process, file, or device attributes Comunicações create, delete communication connection send, receive messages transfer status information attach and detach remote devices Operating System Concepts – 8th Edition 2.21 Silberschatz, Galvin and Gagne ©2009 Exemplos do Windows e Chamada de Sistema UNIX Operating System Concepts – 8th Edition 2.22 Silberschatz, Galvin and Gagne ©2009 Exemplo: MS-DOS Única tarefa O Shell é invocado quando o sistema é bootado Método simples para executar um programa Nenhum processo é criado Um único espaço de memória Carrega o programa na memória, sobrepondo todos menos o kernel Programa exit -> shell recarregado Operating System Concepts – 8th Edition 2.23 Silberschatz, Galvin and Gagne ©2009 Execução do MS-DOS (a) At system startup (b) running a program Operating System Concepts – 8th Edition 2.24 Silberschatz, Galvin and Gagne ©2009 Exemplo : FreeBSD Variante do Unix Multitasking User login -> invoca o shell escolhido pelo usuário Shell executa o chamada de sistema fork() para criar o processo Executa o exec() para carregar o programa para o processo Shell espera pelo fim do processo ou continua com os comandos dos usuários Processo sai com código 0– nenhum erro ou > 0 – código de erro Operating System Concepts – 8th Edition 2.25 Silberschatz, Galvin and Gagne ©2009 Programas Múltiplos executando em FreeBSD Operating System Concepts – 8th Edition 2.26 Silberschatz, Galvin and Gagne ©2009 Programas de Sistema Programas de sistema provém um ambiente conveniente para desenvolvimento de programa e execução. Podem ser divididos em: Manipulação de Arquivo Informação de Status Modificação de Arquivo Suporte a linguagem de Programação Carregamento de execução de Programa Comunicações Programas de aplicação A visão do usuário do SO é definida pelos programas de sistema, não pelas chamadas de sistema Operating System Concepts – 8th Edition 2.27 Silberschatz, Galvin and Gagne ©2009 Programas de Sistemas Provêm um ambiente para o desenvolvimento e execução de programa Alguns deles são interfaces para as chamadas de sistema; outras são mais complexas Gerenciamento de Arquivo - Create, delete, copy, rename, print, dump, list, e geralmente manipulate arquivos e diretórios Informação de Status Solicita informações do sistema - date, time, quantidade de memória disponível, disk space, número de usuários Outras provêm informações de performance, logging, and debugging Geralmente, estes programas formatam e imprimem a saída para o terminal ou outros dispositivos de saída Alguns sistemas implementam um registrador – usado para armazenar e recuperar informação de configuração Operating System Concepts – 8th Edition 2.28 Silberschatz, Galvin and Gagne ©2009 Programas de Sistemas (Cont.) Modificação de Arrquivo Editores de texto para criar e modificar arquivos Comandos especiais para pesquisar conteúdo de arquivos ou executar transformações do texto Suporte a linguagem de Programação - Compilers, assemblers, debuggers and interpreters Carregamento de Programa e execução - Absolute loaders, relocatable loaders, linkage editors, and overlay-loaders, debugging systems for higher-level and machine language Comunicações – Provêm mecanismos para criar conexões virtuais entre processos, usuários e sistemas computacionais Permite aos usuários enviar mensagens para outros através de tela, browse web pages, send electronic-mail messages, log in remotely, transfer files from one machine to another Operating System Concepts – 8th Edition 2.29 Silberschatz, Galvin and Gagne ©2009 Projeto de Implementação de Sistema Operacional Não existe consenso no Projeto e implementação de OS, mas algumas abordagem tem prevalecido Estrutura interna dos SOs diferem Iniciando pelos objetivos e especificações Afetados pela escolha de hardware, tipo de sistema Objetivos do User e Objetivos do System Objetivos do Usuário – o SO deve ser conveniente para usar, facil de aprender , confiável, seguro e rápido Objetivos do sistema – o SO deve ser fácil de projetar, implementar e manter, bem como ser flexível, confiável, livre de erro e eficiente. Operating System Concepts – 8th Edition 2.30 Silberschatz, Galvin and Gagne ©2009 Projeto de Implementação de Sistema Operacional (Cont.) Princípios importantes a serem separados Política: O quê deve ser feito? Mecanismo: Como será feito? Mecanismos determinam como fazer alguma coisa, política define o que ser feito A separação da política do mecanismo é um importante princípio, ele permite a flexibilização se a decisão da política mudar mais tarde. Operating System Concepts – 8th Edition 2.31 Silberschatz, Galvin and Gagne ©2009 Estrutura Única MS-DOS – escrito para prover as funcionalidades em um espaço mínimo Não divido em módulos Embora o MS-DOS tenha alguma estrutura, suas interfaces e níveis de funcionalidades não são bem separadas Operating System Concepts – 8th Edition 2.32 Silberschatz, Galvin and Gagne ©2009 Estrutura em Camada MS-DOS Operating System Concepts – 8th Edition 2.33 Silberschatz, Galvin and Gagne ©2009 Abordagem em Camada O SO é dividido em vários camadas (níveis), cada um construído no topo do nível mais baixo. A cada de baixo (camada 0), é o hardware e a mais alta (camada N) é a interface do usuário. Com modularidade, as camadas são selecionadas de maneira que cada uma usa as funções (operacões) e serviços da camada imediatamente inferior Operating System Concepts – 8th Edition 2.34 Silberschatz, Galvin and Gagne ©2009 Estrutura do sistema do Sistema UNIX Tradicional UNIX Operating System Concepts – 8th Edition 2.35 Silberschatz, Galvin and Gagne ©2009 UNIX UNIX – limitado pelas funcionalidades de hardware, o SO UNIX original tinha uma estrutura limitada. O SO UNIX consiste de duas partes separadas Programas de sistema O kernel Consiste de tudo que está abaixo da interface de chamada de sistema e acima do hardware Provém o sistema de arquivo, escalonamento de CPU, gerenciamento de memória e outros funções do SO Operating System Concepts – 8th Edition 2.36 Silberschatz, Galvin and Gagne ©2009 Sistema Operacional em Camada Operating System Concepts – 8th Edition 2.37 Silberschatz, Galvin and Gagne ©2009 Estrutura de Sistema Microkernel Move tudo que não é kernel para o espaço do usuário Comunicações são realizadas entre os módulos usuários usando passagem de mensagem Benefícios: Facil de estender um microkernel Mais fácil de portar um SO para novas arquiteturas Mais confiável (menos código está executando em modo kernel) Mais seguro Desvantagens: Overhead de desempenho na comunicação do espação do usuário para o espaço kernel Operating System Concepts – 8th Edition 2.38 Silberschatz, Galvin and Gagne ©2009 Estrutura do Sistema Mac OS X Operating System Concepts – 8th Edition 2.39 Silberschatz, Galvin and Gagne ©2009 Módulos Muito dos Sistemas Operacionais modernos implementam módulos de kernel Usam abordagem orientada a objeto Cada componente core é separado Cada um interage com os outros com interfaces bem conhecidas Cada módulo é carregado quando necessário Em linhas gerais é similar a camadas mas mais flexível Operating System Concepts – 8th Edition 2.40 Silberschatz, Galvin and Gagne ©2009 Abordagem Modular Solaris Operating System Concepts – 8th Edition 2.41 Silberschatz, Galvin and Gagne ©2009 Máquinas Virtuais Máquina Virtual é uma evolução lógica da abordagem de camada. Ela tata o hardware e o kernel do SO como se tudo fosse hardware Uma máquina virtual provém uma interface indêntica para o hardware. O SO cria a ilução que um processo tem seu próprio processador e memória virtual Cada guest é provido com uma cópia (virtual) do computador Operating System Concepts – 8th Edition 2.42 Silberschatz, Galvin and Gagne ©2009 Máquinas Virtuais (Cont.) (a) Nonvirtual machine (b) virtual machine Operating System Concepts – 8th Edition 2.43 Silberschatz, Galvin and Gagne ©2009 Máquina Virtual Java Operating System Concepts – 8th Edition 2.44 Silberschatz, Galvin and Gagne ©2009 Depuração de Sistema Operacional Debugging é realizado para encontrar e fixar os erros, ou bugs OS geram arquvivos de log contendo informação de erro Falhas de uma aplicação pode gerar arquivo de core dump que captura a memória dos processos Falha do SO pode gerar arquivo de crash dump contendo a memória do kernel Operating System Concepts – 8th Edition 2.45 Silberschatz, Galvin and Gagne ©2009 Chamada de Sistema dtrace Operating System Concepts – 8th Edition 2.46 Silberschatz, Galvin and Gagne ©2009 Geração do Sistema Operacional SO são projetados para ser executados em qualquer classe de máquina; o sistema deve ser configurado para cada computador específico Programa SYSGEN obtém informação relacionada a configuração específica do hardware Booting – inicia uma computador por meio do carregamento do kernel Programa Bootstrap program – código armazenado em ROM que é capaz de localizar o kernel, carregá-lo na memória, e iniciar sua execução Operating System Concepts – 8th Edition 2.47 Silberschatz, Galvin and Gagne ©2009 System Boot SO deve estar disponível para cada hardware Parte pequena de código – bootstrap loader, localiza o kernel, carrega na memória, e inicia Algumas vezes existem dois processos um o bloco de boot é fixado em uma localização e carrega o botstrap Quando o sistema é iniciado, a execução inicia em um local fixo da memória Firmware é usado para carregar o código inicial Operating System Concepts – 8th Edition 2.48 Silberschatz, Galvin and Gagne ©2009 Fim do capítulo 2 Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne ©2009