Este documento fornece uma visão geral das estruturas dos sistemas operacionais e descreve os principais serviços e componentes de um sistema operacional, incluindo:
1) Os serviços que um sistema operacional oferece aos usuários, processos e outros sistemas.
2) As diferentes maneiras de estruturar um sistema operacional, como camadas e módulos.
3) Como um sistema operacional é instalado, customizado e inicializado.
1. Visão Geral: Estruturas do Sistema
Operacional
Sistemas Operacionais I
Prof. Alexandre Duarte : http://alexandrend.com
Centro de Informática | Universidade Federal da Paraíba
Estes slides são baseados no material que acompanha o livro Operating
Systems Concepts de Silberschatz, Galvin and Gagne
2. Objetivos
Descrever os serviç os que o sistema
operacional oferece para usuários, processos e
outros sistemas
Discutir as várias maneiras de estruturar um
sistema operacional
Explicar como um sistema operacional é
instalado, customizado e inicializado
4. Serviços do sistema operacional:
comodidade do usuário
Interface do usuário
Quase todo sistema operacional oferece uma
Varia entre interface de linha de comando (CLI), interface gráfica (GUI) e Batch
Execuç ão de programas
O sistema deve ser capaz de carregar um programa na memó ria e iniciar e
finalizar sua execuç ão com ou sem sucesso (indicando caso ocorra um erro)
Operaç ões de E/S
Um programa em execuç ão pode precisar realizar E/S, o que pode envolver um
arquivo ou algum dispositivo de E/S
Manipulaç ão do Sistema de Arquivos
O sistema de arquivos é de particular interesse. Obviamente, programas
precisam realizar uma série de operaç ões envolvendo arquivos e diretó rios,
incluindo: ler, gravar, criar, apagar, localizar, listar informaç ões e gerenciar
permissões
5. Serviços do sistema operacional:
comodidade do usuário
Comunicaç ão
Processos podem trocar informaç ão em um mesmo computador
ou através de uma rede
A comunicaç ão pode ser realizada através de uma memó ria
compartilhada ou por troca de mensagens
Detecç ão de erros
O SO precisa estar constantemente ciente sobre possíveis erros
Podem ocorrer na CPU, no hardware de memó ria, nos
dispositivos de E/S ou em um programa do usuário
Para cada tipo de erro o SO deve tomar a medida apropriada
para garantir uma computaç ão correta e consistente
Mecanismos de depuraç ão podem melhorar significativamente a
habilidade do usuário de fazer uso eficiente do sistema
6. Serviços do sistema operacional: operação
eficiente do sistema
Alocaç ão de recursos
Quando múltiplos usuários ou múltiplos jobs utilizam o sistema de forma
concorrente os recursos precisam ser alocados para cada um deles
Contabilidade
Controlar quanto de cada tipo de recurso os usuários utilizam
Proteç ão e Seguranç a
Os donos da informaç ão armazenada em um sistema com múltiplos usuários ou
em um computador conectado a rede podem desejar controlar o uso da
informaç ão
Proteç ão envolve garantir que todo acesso a qualquer recurso do sistema é
controle
Seguranç a do sistema contra intrusos requer autenticaç ão e se estende para
proteger dispositivos de E/S externos contra acessos inválidos
7. Interface do usuário: CLI
Uma interface de linha de comando (CLI) ou
interpretador de comandos permite o
fornecimento direto de comandos ao sistema
Algumas vezes são implementados no núcleo, algumas
vezes são implementados como programas do usuário
Algumas vezes têm-se muitas variaç ões: shells
Inicialmente recebe um comando do usuário e o executa
Os comandos podem ser comandos internos do SO ou
apenas nomes de programas
No segundo caso, adicionar novas funcionalidades ao
sistemas não requer alteraç ões no shell
8. Interface do usuário: GUI
Uma metáfora mais amigável para a interface com o usuário
(desktop)
Geralmente inclui mouse, teclado e monitor
Icones representam arquivos, programas, aç ões ,etc
Diferentes botões do mouse causam aç ões diferentes no objetos
da interface
Conceito criado no Xerox PARC
Muitos sistemas incluem tanto CLIs quanto GUIs
Microsoft Windows tem uma GUI com um shell de comando
Mac OS X da Apple usa a GUI “Aqua” com um kernel UNIX por
baixo e vários shells disponíveis
Solaris tem uma CLI como GUIs opcionais (Java Desktop, KDE)
11. Chamadas de sistema
Interface de programaç ão para os serviç os oferecidos pelo SO
Geralmente escrita em uma linguagem de alto nível (C, C++)
Na maioria das vezes são utilizadas pelos programas através de
uma Application Program Interface (API) de mais alto nível ao invés
de serem chamadas diretamente
As três APIs mais comuns são Win32 API do Windows, POSIX API
para sistemas POSIX-based (incluindo praticamente todas as
versões do UNIX, Linux, e Mac OS X), e a API Java para a Java
Virtual Machine (JVM)
Por que usar APIs ao invés de chamadas de sistema?
12. Implementação de chamadas de
sistema
Tipicamente, cada chamada de sistema possui um número
associado
A interface de chamada de sistemas mantém uma tabela
indexada com esses números
A interface de chamada de sistema invoca a chamada
desejada no kernel do SO e retorna o estado e valores de
retorno para o usuário
Quem faz a chamada não precisa ter qualquer informação
sobre como a chamada de sistema foi implementada
Precisa apenas conhecer a interface e saber o que o SO fará
como resultado da chamada
A maioria dos detalhes do SO ficam escondidos dos usuários
atrás de APIs
14. Exemplo: biblioteca padrão de C
Programa em C invocando a funç ão printf(), que utiliza a
chamada de sistema write()
15. Passagem de parâmetros em chamadas de
sistema
Frequentemente a execuç ão de uma chamada de
sistema requer mais do que a identificaç ão da chamada
desejada
Existem três métodos comuns para passagem de
parâmetros para o SO
Mais simples: passar os parâmetros em registradores
Parâmetros armazenados em um bloco ou tabela na memó ria e
o endereç o do bloco passado através de um registrador
Parâmetros inseridos em uma pilha pelo programa e
desempilhados pelo sistema operacional
O método do bloco e da pilha não limitam o número ou
tamanho dos parâmetros
17. Tipos de chamadas de sistema
Controle de processos
Gerencia de arquivos
Gerencia de dispositivos
Manutenç ão da informaç ão
Comunicaç ão
Proteç ão
21. Programas de sistema
Programas de Sistema fornecem um ambiente conveniente para o
desenvolvimento e execuç ão de programas.
Podem ser divididos em 7 categorias:
Manipulaç ão de arquivos
Informaç ões de estado
Modificaç ão de arquivos
Suporte a linguagens de programaç ão
Carga e execuç ão de programas
Comunicaç ão
Aplicativos
A visão que a maioria dos usuários tem do SO é definido pelos programas
de sistema e não pelas chamadas de sistema
22. Programas de sistema
Fornecem um ambiente conveniente para desenvolvimento e execuç ão
de programas
Alguns são apenas interfaces para chamadas de sistema; outros são
consideravelmente mais complexos
Gerencia de arquivos: criar, remover, copiar, renomear, imprimir, listar,
e manipular arquivos e diretó rios
Informaç ões de estado
Consulta de informaç ões do sistema: data, hora, quantidade de memó ria
disponível, espaç o em disco, número de usuários
Informaç ões detalhadas de desempenho, registro de execuç ão e depuraç ão
Tipicamente estes programas formatam e imprimem informaç ões na saída
padrão
Alguns sistemas podem implementar um registro, utilizado para armazenar
informaç ões de configuraç ão
23. Programas de sistema
Modificaç ão de arquivos
Editores de texto para criar e modificar arquivos
Comandos especiais para localizar conteúdo em arquivos e realizar
transformaç ões no texto
Suporte a linguagens de programaç ão
Compiladores, montadores, depuradores, interpretadores
Carga e execuç ão de programas
Carregadores absolutos, carregadores com relocaç ão, editores de ligaç ão
Comunicaç ão
Prover mecanismos para criar conexões virtuais entre processos, usuários e
sistemas computacionais
Permitir que usuários enviem mensagens para outros usuários, naveguem
em páginas na web, se conectem remotamente, transfiram arquivos de um
máquina para outra, etc
24. Projeto e implementação de sistemas
operacionais
Não háuma soluç ão única universalmente aceita para o projeto e
desenvolvimento de sistemas operacionais mas algumas
abordagens têm sido utilizadas com sucesso
A estrutura interna dos sistemas operacionais pode variar
amplamente
Inicia-se pela definiç ão de objetivos e especificaç ões
Afetada pela escolha do hardware e pelo tipo do sistema
Requisitos do usuário e Requisitos do Sistema
Requisitos do usuário: o SO deve ser conveniente, fácil de
aprender, confiável, seguro e rápido
Requisitos do sistema: o SO deve ser fácil de projetar,
implementar e manter e também flexível, confiável, sem erros e
eficiente
25. Projeto e implementação de sistemas
operacionais
Um princípio importante é separar política de
mecanismo
Política: O que seráfeito?
Mecanismo: Como fazer ?
Mecanismos determinam como fazer algo,
políticas decidem o que deve ser feito
A separaç ão de política de mecanismo é importante
pois permite uma maior flexibilidade caso decisões
políticas precisem ser alteradas mais tarde
26. Estrutura simples
MS-DOS – escrito para prover o máximo de
funcionalidade utilizando o mínimo possível de
memó ria
Não foi dividido em mó dulos
Apesar de o MS-DOS ter alguma estrutura, suas
interfaces e funcionalidades não são bem
separadas
28. Abordagem de camadas
O sistema operacional é dividido em um número
de camadas (níveis), cada uma construída sobre
camadas inferiores.
A camada mais baixa (camada 0) é o hardware
A camada mais alta (camada N) é a interface do
usuário
Como modularidade, camadas são selecionadas
de forma que uma cada só utilize serviç os e
funç ões de camadas de nível inferior
30. UNIX
Por conta de limitaç ões na funcionalidade do
hardware, o UNIX original tinha estruturaç ão
limitada.
O UNIX é composto por duas partes distintas
Programas de sistema
Núcleo (kernel)
Formado por tudo localizado abaixo da interface de
chamada de sistemas e acima do hardware
Fornece o sistema de arquivos, escalonamento de CPU,
gerenciamento de memó ria, e outras funç ões do SO
Um número muito grande de funç ões para um único nível
32. Estrutura de microkernel
Move o máximo possível de funcionalidades do kernel para o
espaço do usuário
Utiliza mecanismos de comunicação por troca de mensagens
para permitir a interoperação dos mó dulos
Benefícios:
Mais fácil estender um microkernel
Mais fácil portar o sistema operacional para novas arquiteturas
Mais confiável (menos có digo rodando em modo kernel)
Mais seguro
Desvantagens:
Perda de desempenho por conta da comunicaç ão entre os
mó dulos em modo kernel e modo usuário
33.
34.
35.
36. Módulos
A maioria dos sistemas operacionais
modernos implementam mó dulos de kernel
Abordagem orientada a objetos
Cada componente chave é separado dos demais
Conversam entre si através de interfaces bem
definidas
Cada um pode ser carregado no kernel apenas
quando necessário
De forma geral é similar ao uso de camadas
mas mais flexível
38. Máquinas virtuais
Uma máquina virtual leva a abordagem de camadas ao seu
limite. Ele trata o hardware e o kernel do sistema operacional
como se fossem ambos hardware
A interface de uma máquina virtual fornece uma interface
idêntica ao hardware
O sistema operacional hospedeiro (host) cria a ilusão de que
um processo tem seu pró prio processador e memó ria
Cada convidado (guest) recebe sua pró pria có pia (virtual)
do computador
39. Histórico e benefícios das máquinas virtuais
Apareceram inicialmente em 1972 em mainframes da IBM
Consiste, fundamentalmente, em múltiplos ambientes de
execuç ão (sistemas operacionais diferentes) compartilhando o
mesmo hardware
Protege um ambiente do outro
Permite compartilhamento de arquivos
Se comunicam entre si e com outros sistemas através da rede
Consolidaç ão de muitos sistemas com pouca demanda de
recursos em poucos computadores com muitos recursos
Muito útil para desenvolvimento e testes
O padrão “Open Virtual Machine Format”, permite que uma
máquina virtual possa ser executada por diferentes
plataformas de virtualização
41. Para-virtualização
Apresenta aos guests uma visão similar mas
não idêntica do hardware
Os guests precisam ser modificados para
rodar em hardware para-virtualizado