20/9/2010
1
BC1518 BC1518 -- Sistemas Operacionais Sistemas Operacionais
Estrutura de S.O.Estrutura de S.O.Aula 02Aula 02
33°°°°°°°° Quadrimestre de 2010Quadrimestre de 2010
Prof. Marcelo Z. do NascimentoProf. Marcelo Z. do NascimentoEmail: [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
2
20/9/2010
2
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.3
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.
4
20/9/2010
3
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;
55
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).
6
20/9/2010
4
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.
7
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);
8
20/9/2010
5
Interface
• Interpretador de comando: recebe e executa o próximo comando especificado pelo usuário;
• SO => pode incluir o interpretador no kernel ou tratar como 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ção de seu código que define os parâmetros e faz uma chamada (system call));
9
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 para novos comandos.
• Exemplo: shells => bash e csh.
10
20/9/2010
6
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 usa interpretador shell;
• Solaris tem interpretador com interfaces GUI (KDE).1111
Chamadas de Sistema
• Provêem uma interface com os serviços disponíveis em um 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), que permitem 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).12
20/9/2010
7
Chamadas de Sistema
13
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
14
20/9/2010
8
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;
15
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
16
20/9/2010
9
Implementação -> System Call => Open
Chamadas de Sistema
17
• Exemplo: um programa em C invocando uma chamada a biblioteca printf, a qual solicita a system call write( )do SO.
Chamadas de Sistema
18
20/9/2010
10
• Exemplo:
• Um programa em C => read ( ) do SO.
Chamadas de Sistema
http://www.linux.it/~rubini/docs/ksys/ksys.html19
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 é passado como parâmetro em um registrado;
• Ex. Aproximação adotada no Linux e Solaris.
Chamadas de Sistema
20
20/9/2010
11
Chamadas de Sistema
– Simples: por meio de registradores
21
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
2222
20/9/2010
12
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
23
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ção do “ls” e salva no arquivo ‘teste1.out’
$ man strace
– Mostra informações (manual) do camando strace
24
20/9/2010
13
� 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
25
• Os programas do SO fornecem uma interface para desenvolvimento 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
26
20/9/2010
14
• No projeto e implementação de um SO não existem soluçõ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
27
• 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 ter prioridade em relação aqueles com uso de CPU
• Mecanismo: implementa um sistema de prioridade com diferentes níveis.
Projeto e Implementação do SO
28
20/9/2010
15
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 algum outro hardware) se ele é escrito em uma linguagem de alto nível.
Projeto e Implementação do SO
29
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
30
20/9/2010
16
Estruturas de SO
• Um SO precisa ser arquitetado com cuidado para funcionar de modo apropriado e ser modificado com facilidade.
• Exemplos:– Simples – monolítico => uma camada
– Em camadas;
– MicroKernel;
– Modular;
– Virtual Machines.
31
Simples
• MS-DOS escrito para prover o máximo de funcionalidade no menor espaço;
• Não é dividido em módulos;
• Apesar do MS-DOS ter alguma estrutura, suas interfaces e níveis de funcionalidade não são bem separadas.
Estruturas de SO
32
20/9/2010
17
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 sistema operacional;
� Um grande número de funções para um único nível.
Estruturas de SO
33
Estruturas de SO
34
20/9/2010
18
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 tais que cada uma utiliza funções (operações) e serviços somente de camadas de mais baixo nível;
� Dificuldade diz respeito ao cuidado na definição das camadas.
Estruturas de SO
35
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.
36
20/9/2010
19
Microkernel
� Estrutura o SO removendo todo os componentes não essenciais do kernel e implementa-os como programas de 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
37
• SO moderno (Solaris, Linux) implementam os módulos kernel– 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 maior flexibilidade;
• Fácil de manter, atualizar e depurar: foca em um módulo em cada vez;
• Eficiente: módulos podem cada um ao outro diretamente.
Estruturas de SO
38
20/9/2010
20
Estrutura de módulo: Solaris
39
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.
40
20/9/2010
21
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 desenvolvimento de módulo carregados dinamicamente.
41
� A idéia é separar o hardware ou PC em vários ambientes de execução diferentes;
� O SO cria a ilusão de múltiplos processos => cada um executando na seu próprio processador com sua própria memó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
42
20/9/2010
22
Non-virtual Machine Virtual Machine
Máquinas Virtuais
43
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 compartilha recursos.
• Exemplo:– VMware
– Java Virtual Machine
Máquinas Virtuais (MV)
44
20/9/2010
23
Arquitetura do VMware
45
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.
46
20/9/2010
24
Java
• Pode ser implementado em cima de um sistema operacional hospedeiro;
• Independente da arquitetura e portáveis.
47
Ambiente de Desenvolvimento em Java
• Ambiente em tempo de compilação;
• Ambiente em tempo de execução.
48
20/9/2010
25
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
49
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
50
20/9/2010
26
Acesse o link abaixo:
http://hostel.ufabc.edu.br/~marcelo.nascimento/
Obrigado!!!
Nota de Aula
51