Upload
hoangtuong
View
215
Download
0
Embed Size (px)
Citation preview
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