visão geral: estruturas do sistema operacional

43
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

Upload: alexandre-duarte

Post on 01-Jul-2015

5.487 views

Category:

Education


1 download

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 inicializado

TRANSCRIPT

Page 1: Visão Geral: Estruturas do Sistema Operacional

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

Page 2: Visão Geral: Estruturas do Sistema Operacional

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

Page 3: Visão Geral: Estruturas do Sistema Operacional

Serviços do sistema operacional

Page 4: Visão Geral: Estruturas 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

Page 5: Visão Geral: Estruturas do Sistema Operacional

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

Page 6: Visão Geral: Estruturas do Sistema Operacional

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

Page 7: Visão Geral: Estruturas do Sistema Operacional

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

Page 8: Visão Geral: Estruturas do Sistema Operacional

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)

Page 9: Visão Geral: Estruturas do Sistema Operacional

Interpretador de comando bash

Page 10: Visão Geral: Estruturas do Sistema Operacional

GUI do Mac OS X

Page 11: Visão Geral: Estruturas do Sistema Operacional

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?

Page 12: Visão Geral: Estruturas do Sistema Operacional

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

Page 13: Visão Geral: Estruturas do Sistema Operacional

Relação entre API e chamada de sistema

Page 14: Visão Geral: Estruturas do Sistema Operacional

Exemplo: biblioteca padrão de C

Programa em C invocando a funç ão printf(), que utiliza a chamada de sistema write()

Page 15: Visão Geral: Estruturas do Sistema Operacional

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

Page 16: Visão Geral: Estruturas do Sistema Operacional

Passagem de parâmetros via tabela

Page 17: Visão Geral: Estruturas do Sistema Operacional

Tipos de chamadas de sistema

Controle de processos

Gerencia de arquivos

Gerencia de dispositivos

Manutenç ão da informaç ão

Comunicaç ão

Proteç ão

Page 18: Visão Geral: Estruturas do Sistema Operacional

Exemplos de chamadas de sistema do Windows e Linux

Page 19: Visão Geral: Estruturas do Sistema Operacional

Execução do MS-DOS

Apó s o boot Rodando um processo

Page 20: Visão Geral: Estruturas do Sistema Operacional

FreeBSD rodando múltiplos processos

Page 21: Visão Geral: Estruturas do Sistema Operacional

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

Page 22: Visão Geral: Estruturas do Sistema Operacional

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

Page 23: Visão Geral: Estruturas do Sistema Operacional

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

Page 24: Visão Geral: Estruturas do Sistema Operacional

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

Page 25: Visão Geral: Estruturas do Sistema Operacional

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

Page 26: Visão Geral: Estruturas do Sistema Operacional

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

Page 27: Visão Geral: Estruturas do Sistema Operacional

Estrutura em camadas do MS-DOS

Page 28: Visão Geral: Estruturas do Sistema Operacional

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

Page 29: Visão Geral: Estruturas do Sistema Operacional

Camadas de um sistema operacional

Page 30: Visão Geral: Estruturas do 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

Page 31: Visão Geral: Estruturas do Sistema Operacional

Estrutura de um sistema UNIX tradicional

Page 32: Visão Geral: Estruturas do Sistema Operacional

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

Page 33: Visão Geral: Estruturas do Sistema Operacional
Page 34: Visão Geral: Estruturas do Sistema Operacional
Page 35: Visão Geral: Estruturas do Sistema Operacional
Page 36: Visão Geral: Estruturas do Sistema Operacional

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

Page 37: Visão Geral: Estruturas do Sistema Operacional

Abordagem em módulos do Solaris

Page 38: Visão Geral: Estruturas do Sistema Operacional

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

Page 39: Visão Geral: Estruturas do Sistema Operacional

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

Page 40: Visão Geral: Estruturas do Sistema Operacional

Máquinas virtuais

Page 41: Visão Geral: Estruturas do Sistema Operacional

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

Page 42: Visão Geral: Estruturas do Sistema Operacional

Arquitetura do VMWare

Page 43: Visão Geral: Estruturas do Sistema Operacional

A máquina virtual Java