Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Capítulo 2: Estruturas do Sistema Operacional
2.2 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.3 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.4 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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), e Batch
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
2.5 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.6 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.7 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Visão dos serviços do sistema operacional
2.8 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.9 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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)
2.10 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Bourne Shell Command Interpreter
2.11 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
The Mac OS X GUI
2.12 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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?
2.13 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Exemplo de chamada de sistema
Sequência de chamadas ao sistema para copiar o conteúdo de um arquivo para outro
2.14 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.15 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.16 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
API – System Call – OS Relationship
2.17 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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()
2.18 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.19 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Passagem de parâmetro via tabela
2.20 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.21 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.22 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Exemplos de chamadas de sistema no Windows e no Unix
2.23 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.24 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.25 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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.
2.26 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.27 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Estrutura tradicional do sistema UNIX
2.28 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.29 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Sistema operacional em camadas
2.30 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.31 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Estrutura do Mac OS X
2.32 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.33 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Abordagem modular do Solaris
2.34 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.35 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.36 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.37 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Máquinas virtuais
Diversos níveis e tipos de virtualização
Determinado por qual camada está sendo virtualizada
2.38 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.39 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.40 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Máquinas virtuais
(a) Nonvirtual machine (b) virtual machine
2.41 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Paravirtualização
Sistemas convidados adaptados para a virtualização
Assume uma interface de hardware modificada
Objetivo
Aumentar o desempenho no tratamento das instruções privilegiadas
2.42 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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
2.43 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Solaris 10 with Two Containers
2.44 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
VMware Architecture
2.45 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
The Java Virtual Machine
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition
Fim do Capítulo 2
2.47 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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?
2.48 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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?
2.49 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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?
2.50 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
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.
2.51 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Exercícios
O que é uma chamada de sistema?
Explique a relação entre modo kernel, modo usuário e as chamadas de sistema.
Um programa de usuário faz uma chamada que é referenciada no sistema operacional pelo número 10. Essa chamada possui três parâmetros com o tamanho de uma palavra de memória cada.
Faça um esquema e explique sucintamente o funcionamento dessa ação, representando os fluxos de dados, as interfaces, o programa do usuário e o tratamento de chamadas do sistema operacional.
Faça um esquema e explique representando a passagem de parâmetros via tabela, representando registradores, a memória, na qual deve constar o programa do usuário, o sistema operacional e qualquer outra estrutura que seja importante para o processo.
2.52 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Exercícios
Faça um desenho simplificado dos dois modelos com apenas uma máquina virtual
Supondo um desenvolvimento adequado e bem planejado, qual modelo permite um maior desempenho?
2.53 Adaptado de Silberschatz, Galvin and Gagne ©2009Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
Exercícios
Em que sentidos a propriedade isolamento é essencial para um sistema virtualizado?
É possível ter isolamento em um sistema paravirtualizado?
Top Related