estrutura de s.o.hostel.ufabc.edu.br/~marcelo.nascimento/bc1518/aulas... · 2010-05-31 ·...

27
BC1518 BC1518 - Sistemas Sistemas Operacionais Operacionais Estrutura Estrutura de S.O. de S.O. Aula Aula 02 02 2° Quadrimestre uadrimestre de 2010 de 2010 Prof. Marcelo Z. do Prof. Marcelo Z. do Nascimento Nascimento Email: Email: [email protected] [email protected] Roteiro Serviço do sistema operacional Interface Chamadas de sistemas (System Call) Programas do sistema Projeto e Implementação Estrutura do SO Máquinas Virtuais Leitura Sugerida

Upload: hoangtuong

Post on 08-Dec-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

BC1518 BC1518 -- SistemasSistemas OperacionaisOperacionais

EstruturaEstrutura de S.O.de S.O.AulaAula 0202

22°°°°°°°° QQuadrimestreuadrimestre de 2010de 2010

Prof. Marcelo Z. do Prof. Marcelo Z. do NascimentoNascimentoEmail: Email: [email protected]@ufabc.edu.br

Roteiro

• Serviço do sistema operacional

• Interface

• Chamadas de sistemas (System Call)

• Programas do sistema

• Projeto e Implementação

• Estrutura do SO

• Máquinas Virtuais

• Leitura Sugerida

Serviço do SO

• Objetivo: Um conjunto de serviços para fornecer

funções úteis aos usuários.

• Interface de usuário:

• Linha de comando => utililiza comandos em modo texto;

• Batch => comandos e diretivas para controlar esses comandos

são introduzidos em arquivos para execução;

• Interface gráfica => (graphic user interface – GUI) sistema de

janela com apontamento para direcionar E/S.

• Exemplo: Linux, Windows, etc.

Serviço do SO

• Execução de programa:

• Capaz de carregar um programa para a memória e executar

esse programa;

• Encerrar sua execução.

• Operações de E/S

• Funções especiais desejadas a um determinado dispositivo não

podem ser controladas pelo usuário;

• S.O. => precisa prover meios de realizar operações de E/S.

Serviço do SO

• Manipulação de arquivos:

• Programas precisam ler e gravar arquivos e diretórios;

• Programas incluem gerência de permissões para permitir ou

negar o acesso aos arquivos;

• Comunicações:

• Processos precisam trocar informações com outros processos;

• Usa memória compartilhada ou troca de mensagens;

Serviço do SO

• Detecção de erro:

• O SO precisa estar ciente dos possíveis erros;

• Podem ocorrer nos recursos de hardware ou programa do

usuário;

• SO precisa tratar de forma apropriada para garantir

eficiência máxima nas requisições (interrupções).

Serviço do SO

• Para garantir a operação eficiente do próprio sistema.

• Alocação de recurso:

• O SO controla tipos diferentes de recursos e alguns podem

ter código de alocação especial (ciclo da CPU, memória) e

outros podem ter código de requisição e liberação (E/S);

• Exemplo: a CPU -> rotina de escalonamento que considerará a

velocidade da CPU na manipulação dos processos.

Serviço do SO

• Contabilidade:

• O tempo de uso de um recurso e quais recursos foram

utilizados pelos usuários => registros (log de sistema).

• Proteção e segurança:

• Vários processos sendo executados ao mesmo tempo não

podem interferir uns com os outros, ou com o próprio SO.

• Garantir controle de acesso aos recursos:

• Ex. Autenticação de usuário (login e password);

Interface

• Interpretador de comando: recebe e executa o próximo comando especificado pelo usuário;

• SO => pode incluir o interpretador no kernel ou tratarcomo um programa especial que é executado quando o usuário entra no sistema;

• Exemplo: Shells =>Konsole;

• Implementação: O próprio interpretador contém o código para executar o comando.

• Exemplo: Tarefa ->Excluir um arquivo (salta para uma seçãode seu código que define os parâmetros e faz uma chamada(system call));

Interface

• Interpretador => Implementação:

• Os comandos são executados por meio de programas do sistema;

• O Interpretador não entende o comando => identifica um arquivo e carrega para memória e executa. Código do arquivo “função” que define as ações solicitadas.

• Exemplo: Unix => rm aula1.txt (procura o arquivo rm e carrega para memória e executa com os parâmetros de aula1.txt). O interpretador não precisa ser modificado paranovos comandos.

• Exemplo: shells => bash e csh.

Interface

• Interface gráfica (GUI): para ativar um programa énecessário apenas clicar em um botão ou ícone com o mouse;

• Surgiu em 1970 na instalação de PARC da Xerox;

• A grande maioria dos sistema inclui as interfaces: interpretador de comandos e GUI;• Exemplos:

• MAC OS X tem GUI “Aqua” com kernel UNIX e usainterpretador shell;

• Solaris tem interpretador com interfaces GUI (KDE).

Chamadas de Sistema

• Provêem uma interface com os serviços disponíveis emum SO;

• Estão disponíveis como rotinas em C ou C++;• São utilizados pelos desenvolvedores de aplicação por

meio de uma Application Program Interface (API), quepermitem o uso de uma chamada ao sistema;• Exemplo:• Win32 API para Windows;

• POSIX API para sistemas baseados em POSIX (Portable

Operating System Interface ) incluem as versões do UNIX, Linux e Mac OS X;

• Java API para Java virtual machine (JVM).

Chamadas de Sistema

Método read( )

• byte[] b – buffer onde os dados são lidos• int off – offset inicial em b onde os dados são escritos• int len – o número máximo de bytes

Exemplo da API Java Padrão

Chamadas de Sistema

Porque usar uma API para fazer chamada em vez de um system call?

• Portabilidade do programa => qualquer sistema que admite a

mesma API permite que o programa seja compilado e executado;

•System Call mais difícil de se trabalhar do que API

•Exemplo: API POSIX e Win32;

Implementação -> System Call• Um número é associado a cada system call;• Uma interface mantém uma tabela indexada de acordo

com cada número;– A interface de system call solicita uma chamada no kernel do

SO e retorna o estado da chamada e o valor de retorno;– A solicitação não precisa saber como o system call do SO é

implementado;• Obedece à API e entende o que o SO fará como resultado

• Os detalhes da interface do SO é escondido do programador pela API:– Controlada pela biblioteca de suporte em tempo de execução

Chamadas de Sistema

Implementação -> System Call => Open

Chamadas de Sistema

• Exemplo: um programa em C invocando uma chamada a biblioteca printf, a qual solicita a system call write( )do SO.

Chamadas de Sistema

• Exemplo:

• Um programa emC => read ( ) do SO.

Chamadas de Sistema

http://www.linux.it/~rubini/docs/ksys/ksys.html

Passagem de parâmetros:

•Outras informações devem ser passadas: – Não apenas a identificação que pode variar de acordo com cada

SO ou chamada;

• Há 3 formas de passar os parâmetros para o SO:– Simples: por meio de registradores;

– Pode ter mais parâmetros que registradores:

• Bloco ou tabela na memória e o endereço do bloco é passadocomo parâmetro em um registrado;

• Ex. Aproximação adotada no Linux e Solaris.

Chamadas de Sistema

Chamadas de Sistema

– Simples: por meio de registradores

Passagem de parâmetros:

– Pilha: programas colocados na pilha e retirados pelo SO. Não

limita o número ou extensão dos parâmetros.

– Java: método java invoca um código em C ou C++ que seja nativo

à arquitetura em que o programa está sendo executado;

• Feito por meio de Java Native Interface (JNI).

Chamadas de Sistema

Linux:

• Acesse o seguinte arquivo:$cat /usr/include/bits/syscall.h

– Para verificar a lista de system call suportado

•Veja também o arquivo:$cat /usr/src/linux/arch/i386/kernel/entry.S

Chamadas de Sistema

Exemplo: strace em Linux

Num PC com SO Linux execute o seguinte comando:$ strace -c ls

– Mostra um sumário dos system call solicitado durante a execução do comando “ls”

$ strace -o teste1.out ls

– Mostra o sumário do system call solicitado durante a execuçãodo “ls” e salva no arquivo ‘teste1.out’

$ man strace

– Mostra informações (manual) do camando strace

� Controle de Processos (end, abort, load, execute, create and terminate process, wait, ...);� Exemplo: Interromper um programa;

� Administração de Arquivos (create and delete file, open, close, read, write, ...);

� Administração de Dispositivos (request and release device, read, write, ...);

� Manutenção de informação (get and set time or date, get or set system data, get process, file or device attributes, ...);

� Comunicações (create and delete conections, send, receive messages, transfer status information, ...).

Tipos de Chamadas de Sistema

• Os programas do SO fornecem uma interface paradesenvolvimento e execução de aplicativos. – Alguns são interface do usuário para chamadas de sistema.

• Exemplo:

– Gerenciamento de arquivo: create, copy, delete, etc.– Estado do sistema: espaço em disco, memória

utilizada e CPU em uso.• Comandos: $top, $ps, $du, $df, $who

– Linguagem de programação: compiladores e debuggers.

• Comandos: $man gdb (Gnu Debugger), $gcc -v

Programas do sistema

– Comunicação: email, conexão de rede e info IP.

• Comandos:– $pine, – $ping www.ufabc.edu.br, – $host www.mec.gov.br,

– $wget.

Programas do sistema

• No projeto e implementação de um SO não existemsoluções completas para esses problemas;– Empregam técnicas de provaram ter sucesso.

• Define-se: objetivos e especificações;– Pode ser afetado pela escolha do hardware ou tipo de sistema.

• Os requisitos podem ser tratados:– Usuário: SO deve ser conveniente de uso, fácil de aprender e

usar, confiável, rápido e seguro.

– Sistema: SO deve ser fácil de projetar, implementar, manter, livres de erros e eficiente.

Projeto e Implementação do SO

• Um importante princípio é separar:– Política: O que será feito?

Mecanismo: Como fazer algo?

• A separação é importante para flexibilidade– Políticas podem mudar entre lugares e com tempo;

– Mecanismo não sensível a mudança na política (desejável).

– Exemplo:

• Política: programas com uso intenso de E/S devem terprioridade em relação aqueles com uso de CPU

• Mecanismo: implementa um sistema de prioridade com diferentes níveis.

Projeto e Implementação do SO

Implementação do SO

� Tradicionalmente escrito em linguagem assembly, porém agora são escritos em linguagens de mais alto nível (C, C++, ...)

� O código escrito em uma linguagem de alto nível:� Pode ser escrito mais rápido.� É mais compacto.� É mais fácil de entender e depurar.

� Um SO é muito mais fácil de portar (mover para algumoutro hardware) se ele é escrito em uma linguagem de alto nível.

Projeto e Implementação do SO

Implementação do SO

� SO em linguagem de alto nível apresentam velocidades

reduzidas e maiores requisitos de armazenamento.

� A melhoria no desempenho dos SOs tende a ser resultado

de melhores estruturas de dados e algoritmos do que

excelentes códigos em linguagem assembly.

Projeto e Implementação do SO

Estruturas de SO

• Um SO precisa ser arquitetado com cuidado parafuncionar de modo apropriado e ser modificado com facilidade.

• Exemplos:– Simples – monolítico => uma camada

– Em camadas;

– MicroKernel;

– Modular;

– Virtual Machines.

Simples

• MS-DOS escrito paraprover o máximo de funcionalidade no menorespaço;

• Não é dividido emmódulos;

• Apesar do MS-DOS teralguma estrutura, suasinterfaces e níveis de funcionalidade não sãobem separadas.

Estruturas de SO

Simples

� UNIX (original) limitado pela funcionalidade do hardware. Esse UNIX consiste de 2 partes separadas:� Programas do Sistema.� O núcleo (kernel)

� Consiste de tudo abaixo da interface de system call e acima do hardware físico.

� Provê o sistema de arquivos, escalonamento da CPU, administração de memória e outras funções do sistemaoperacional;

� Um grande número de funções para um único nível.

Estruturas de SO

Estruturas de SO

Abordagem em camadas:

� O SO é dividido em um número de camadas (níveis), cada uma construída no topo de uma camada inferior:� A camada mais baixa (camada 0), é o hardware;

� A camada mais alta (camada N) é a interface com o usuário.

� Com modularidade, as camadas são selecionadas taisque cada uma utiliza funções (operações) e serviçossomente de camadas de mais baixo nível;

� Dificuldade diz respeito ao cuidado na definição dascamadas.

Estruturas de SO

Estruturas de SO

Abordagem em camadas:

� Exemplo:� Driver de dispositivo para o espaço em disco utilizado pelo algoritmo de

Memória Virtual, deve estar em nível inferior ao das rotinas de

gerenciamento de memória (espaço em disco);

� Exemplo: Windows NT.

Microkernel

� Estrutura o SO removendo todo os componentes nãoessenciais do kernel e implementa-os como programasde sistema e de nível de usuário:� Pouco consenso quais serviços devem permanecer no kernel;� Geralmente, gerência memória e processo.

� Fornecer comunicação (troca de mensagem);� Exemplo: Windows NT (Win32).

Estruturas de SO

• SO moderno (Solaris, Linux) implementam os móduloskernel– Usa técnicas de orientação objetos;– Cada componenete é separado;– Kernel possui um conjunto de componentes;– Cada um é carregado de acordo com a necessidade dentro do

kernel.

• Semelhante a estrutura em camada mas com maiorflexibilidade;

• Fácil de manter, atualizar e depurar: foca em um módulo em cada vez;

• Eficiente: módulos podem cada um ao outrodiretamente.

Estruturas de SO

Estrutura de módulo: Solaris

Estrutura de módulo: Linux• Execute:• $ /sbin/lsmod

– exibe uma lista dos módulos carregados no momento.

• $ /sbin/modprobe

– Para carregar um módulo do kernel, use o comando seguido do nome do módulo do kernel.

• $ /sbin/modinfo

– para exibir informações sobre um módulo do kernel.

Estrutura Híbrida: Mac OS X

• Aproximação em camada com uma camada com microkernel:– Mach: gerência de memoria, comunicação interprocesso e

chamada de procedimento remoto.

• BSD: sistema de arquivo, interface de comandos, redes e APIs POSIX;

• Permite desenvolvimentode módulo carregadosdinamicamente.

� A idéia é separar o hardware ou PC em vários ambientesde execução diferentes;

� O SO cria a ilusão de múltiplos processos => cada um executando na seu próprio processador com sua própriamemória (virtual);

� Os recursos do PC são compartilhados para criar as máquinas virtuais.� Escalonamento da CPU pode criar a aparência de que os usuários

têm seus próprios processadores.� Sistema de Arquivos e Spooling provêm impressoras virtuais,

etc.� Um terminal normal de tempo compartilhado de usuário serve

como o console do operador da máquina virtual.

Máquinas Virtuais

Non-virtual Machine Virtual Machine

Máquinas Virtuais

Porque usar máquina virtual?

• Em pesquisas e desenvolvimento:– Testes de SO em MV com várias configurações;

– Tarefa de mudar o SO: mais rápido testar em MV;

– MV fornecem proteção completa dos sistemas pesquisado;

– Cada máquina é isolada de outras e dificilmente compartilharecursos.

• Exemplo:– VMware

– Java Virtual Machine

Máquinas Virtuais (MV)

Arquitetura do VMware

Java

• Especificação para computador abstrato;

• Consistem em um carregador de classes e um interpretador que executa os códigos de bytes independente da arquitetura.

Java

• Pode ser implementado em cima de um sistemaoperacional hospedeiro;

• Independente da arquitetura e portáveis.

Ambiente de Desenvolvimentoem Java

• Ambiente em tempo de compilação;

• Ambiente em tempo de execução.

SO em Java

• JX foi escrito quase totalmente em Java;

• Organizado em domínios => – máquina virtual independente;

– Heap=> aloca memória na criação do objeto e threads;

• O domínio Zero=> inicialização do sistema, estado daCPU:– Feito em linguagem C e Assembly

– Comunicação por meio de portais (semelhante Mach)

SO em Java

• JX;

http://www.jxos.org/publications/jx-usenix.pdf

Aula 02 - Sumário• Temas abordados:• O SO fornece 2 tipos de serviços

• Facilidades para usuário

• Uso eficiente de recursos

• As interfaces com usuário: CLI (shells) or GUI (windows)

• Sistema de chamadas: interface de programação com os serviços do SO

• Normalmente utiliza API

• Programas do sistema: comunicação com SO e pode usar system call

• Compiladores, editores, etc

• Projeto de So: deve tratar separado política e mecanismo

• Estrutura do SO: simples, camadas, microkernel, modular e MV

Leituras Sugeridas

• Silberschatz, A., Galvin, P. B. Gagne, G. Sistemas Operacionais com Java. 7º , edição. Editora, Campus, 2008 .

• Silberschatz, Abraham; Galvin, Peter Baer; Gagne, Greg. Fundamentos de sistemas operacionais. 6 ed. Rio de Janeiro: LTC, 2009.

• http://www.digilife.be/quickreferences/indexe.html

Acesse o link abaixo:

http://hostel.ufabc.edu.br/~marcelo.nascimento/

Obrigado!!!

Nota de Aula