visão geral: estruturas do sistema operacional
DESCRIPTION
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 inicializadoTRANSCRIPT
Visão Geral: Estruturas do Sistema Operacional
Sistemas Operacionais I
Prof. Alexandre Duarte : http://alexandrend.comCentro 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
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
Serviços do sistema operacional
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
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
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
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
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)
Interpretador de comando bash
GUI do Mac OS X
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?
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
Relação entre API e chamada de sistema
Exemplo: biblioteca padrão de C
Programa em C invocando a funç ão printf(), que utiliza a chamada de sistema write()
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
Passagem de parâmetros via tabela
Tipos de chamadas de sistema
Controle de processos
Gerencia de arquivos
Gerencia de dispositivos
Manutenç ão da informaç ão
Comunicaç ão
Proteç ão
Exemplos de chamadas de sistema do Windows e Linux
Execução do MS-DOS
Apó s o boot Rodando um processo
FreeBSD rodando múltiplos processos
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
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
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
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
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
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
Estrutura em camadas do MS-DOS
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
Camadas de um sistema operacional
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
Estrutura de um sistema UNIX tradicional
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
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
Abordagem em módulos do Solaris
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
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
Máquinas virtuais
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
Arquitetura do VMWare
A máquina virtual Java