Capítulo 2: Estruturas do
Sistema Operacional
Operating System Concepts – 8th Edition
Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.2
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.3
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.4
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
–

Ação diferenciada para cada tipo de erro
–

Podem ocorrer na CPU, memória, dispositivos de I/O e
programas
Garantia de computação correta e consistente
Depuração pode aumentar as habilidades de usuários e
programadores para usar eficientemente o sistema
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.5
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.6
Adaptado de Silberschatz, Galvin and Gagne ©2009
Visão dos serviços do sistema
operacional
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.7
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.8
Adaptado de Silberschatz, Galvin and Gagne ©2009
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)
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.9
Adaptado de Silberschatz, Galvin and Gagne ©2009
Bourne Shell Command Interpreter
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.10
Adaptado de Silberschatz, Galvin and Gagne ©2009
The Mac OS X GUI
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.11
Adaptado de Silberschatz, Galvin and Gagne ©2009
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?
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.12
Adaptado de Silberschatz, Galvin and Gagne ©2009
Exemplo de chamada de sistema
 Sequência de chamadas ao sistema para copiar o conteúdo de um arquivo
para outro
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.13
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.14
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.15
Adaptado de Silberschatz, Galvin and Gagne ©2009
API – System Call – OS Relationship
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.16
Adaptado de Silberschatz, Galvin and Gagne ©2009
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()
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.17
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.18
Adaptado de Silberschatz, Galvin and Gagne ©2009
Passagem de parâmetro via tabela
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.19
Adaptado de 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 arquivos

create file, delete file

open, close file

read, write, reposition

get and set file attributes
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.20
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.21
Adaptado de Silberschatz, Galvin and Gagne ©2009
Exemplos de chamadas de sistema no
Windows e no Unix
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.22
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.23
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.24
Adaptado de Silberschatz, Galvin and Gagne ©2009
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.
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.25
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.26
Adaptado de Silberschatz, Galvin and Gagne ©2009
Estrutura tradicional do sistema UNIX
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.27
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.28
Adaptado de Silberschatz, Galvin and Gagne ©2009
Sistema operacional em camadas
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.29
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.30
Adaptado de Silberschatz, Galvin and Gagne ©2009
Estrutura do Mac OS X
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.31
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.32
Adaptado de Silberschatz, Galvin and Gagne ©2009
Abordagem modular do Solaris
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.33
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.34
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.35
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.36
Adaptado de Silberschatz, Galvin and Gagne ©2009
Máquinas virtuais
 Diversos níveis e tipos de virtualização

Determinado por qual camada está sendo virtualizada
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.37
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.38
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.39
Adaptado de Silberschatz, Galvin and Gagne ©2009
Máquinas virtuais
(a) Nonvirtual machine
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.40
(b) virtual machine
Adaptado de Silberschatz, Galvin and Gagne ©2009
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.41
Adaptado de Silberschatz, Galvin and Gagne ©2009
Implementação da virtualização
 Desafios para implementação

Criar uma duplicata exata da máquina física


–
Simulação do modo kernel
–
Interceptação das instruções privilegiadas feitas em modo kernel
virtual
Temporização


Duplicata funciona em modo usuário
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
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.42
Adaptado de Silberschatz, Galvin and Gagne ©2009
Solaris 10 with Two Containers
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.43
Adaptado de Silberschatz, Galvin and Gagne ©2009
VMware Architecture
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.44
Adaptado de Silberschatz, Galvin and Gagne ©2009
The Java Virtual Machine
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.45
Adaptado de Silberschatz, Galvin and Gagne ©2009
Fim do Capítulo 2
Operating System Concepts – 8th Edition
Silberschatz, Galvin and Gagne ©2009
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?
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.47
Adaptado de Silberschatz, Galvin and Gagne ©2009
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?
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.48
Adaptado de Silberschatz, Galvin and Gagne ©2009
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?
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.49
Adaptado de Silberschatz, Galvin and Gagne ©2009
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.
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.50
Adaptado de Silberschatz, Galvin and Gagne ©2009
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.
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.51
Adaptado de Silberschatz, Galvin and Gagne ©2009
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?
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.52
Adaptado de Silberschatz, Galvin and Gagne ©2009
Exercícios
 Em que sentidos a propriedade isolamento é essencial para um sistema
virtualizado?
 É possível ter isolamento em um sistema paravirtualizado?
Fundamentos de Sistemas Operacionais – Natalia C. Fernandes
2.53
Adaptado de Silberschatz, Galvin and Gagne ©2009
Download

Serviços do sistema operacional