INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

30
INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1

Transcript of INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

Page 1: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

1

INFERNO OSSistemas Distribuídos

Anderson BiudesGuilherme Henrique

Page 2: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

2

Introdução

O que é o inferno? Sistema Operacional que fornece

facilidades para o desenvolvimento e a execução de:

Serviços DistribuídosAplicações de Rede

Desenvolvido por Lucent Technologies' Bell Labs

Page 3: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

3

Alguns requisitos

Sistemas pequenos 1MB RAM

Sistemas médios 4MB RAM

Sistemas maiores 16MB RAM

Page 4: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

4

Principais características

Portabilidade: Intel, SPARC, MIPS, PowerPC Design Distribuído Adaptabilidade Dinâmica Aplicações portáteis Utilizado das seguintes maneiras:

Sistema Operacional Nativo Hospedado dentro dos seguintes sistemas:

WindowsUnix (Irix, Solaris, FreeBSD, Linux, AIX, HP/UX)Plan 9

Page 5: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

5

Influência

Influência do sistema operacional Plan 9 (três princípios):

Recursos como arquivos

Espaço de nomes

Protocolo de comunicação padrão

Page 6: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

6

Recursos como arquivos

Todo recurso é visto como um arquivo Não importa se é local ou remoto

Acesso a recursos através das operações: open, close, read, write

Principais vantagens Interface simples e bem definida Alta portabilidade Segurança

Page 7: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

7

Recursos como arquivos

Interface de rede: /dev/tcp, /dev/udp, etc Informações de processos: /prog Sistema de janelas: /dev/draw Informações: /dev/user, /dev/time,

/dev/sysname, /dev/random Cada diretório tipicamente contém dois

arquivos: data ctl

Page 8: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

8

Espaço de Nomes (Namespace) Representação uniforme de recursos

Cada conjunto de arquivos é visto como uma estrutura hierárquica

Espaços de nomes podem ser Importados Exportados

Uso do protocolo Styx Transparência de localização

Page 9: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

9

Espaço de Nomes (Namespace) Principal vantagem

Aplicações podem usar recursos de maneira totalmente transparente

Exemplo de uso: depuração remota de programas Um depurador gráfico poderia ler

informações presentes em /prog Detalhe: /prog pode ser local ou remoto

No caso de depuração remota, importa-se o espaço de nomes /prog

Page 10: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

10

Protocolo de Comunicação

Styx Protocolo para apresentação de recursos Variação do protocolo 9P desenvolvido para

o Plan 9 Idéia básica: codificar operações de arquivos

em mensagens para serem transmitidas via rede

Transparência completa de recursos Usuários (desenvolvedores de aplicações)

não vêem o protocolo, mas apenas aquivos Acima e independente da camada de

comunicação (TCP/IP, ATM, PPP, etc)

Page 11: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

11

Protocolo de Comunicação

É o Styx quem provê:

Visão hierárquica de recursos

Informações de acesso: permissões, tamanhos e datas de arquivos (recursos)

Semântica para leitura e escrita

Page 12: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

12

Protocolo de Comunicação

Modelo OSI (Open System Interconnection):

7 - Aplicação 6 - Apresentação 5 - Sessão <======= Styx 4 - Transporte 3 - Rede 2 - Enlace 1 - Física

Page 13: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

13

Protocolo de Comunicação

Resolvendo nomes:

echo www.ime.usp.br > /net/dns

cat /net/dns

143.107.45.20

Page 14: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

14

Protocolo de Comunicação

Estabelecendo uma conexão: Ler o conteúdo de /net/tcp/clone

Resultado: /net/tcp/43 Escreva a mensagem a seguir em

/net/tcp/43/ctl :connect 8080 143.107.45.20

Em seguida, a comunicação com www.ime.usp.br é feita através da leitura e escrita sobre o arquivo /net/tcp/43/data

Page 15: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

15

Limbo

Limbo é a linguagem de programação para o Inferno

Sintaxe influenciada pelo C e Pascal Compilador do Limbo semelhante ao

do Java Código objeto gerado (bytecode - aquivo

.dis) é independente de máquina Interpretação do código por uma

Máquina Virtual (Dis) - Segredo da portabilidade das aplicações

Page 16: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

16

Limbo

Programação modular Um programa limbo é composto por um conjunto

de módulos que cooperam para realizar uma tarefa

Um módulo consiste basicamente de duas partes: Especificação das interfaces públicas (funções, constantes,

tipos abstratos de dados, etc)Código que implementa as interfaces

Módulos são carregados dinamicamente (load) Checagem de tipagem rígida em tempo de

execução e compilação Tipos de dados abstratos

Page 17: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

17

Limbo

Alguns tipos dados presentes na linguagem: Byte unsigned (8-bits) int signed (32-bits) big signed (64-bits) real long float (64-bits) list,array String channel (para comunicação entre processos) adt (análogo ao struct presente em C) pick (análogo ao union presente em C) module

Page 18: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

18

Limbo

implement Hello;include "sys.m";sys: Sys;include "draw.m";Hello: module{

init: fn(ctxt: ref Draw->Context, argv: list of string);};init(ctxt: ref Draw->Context, argv: list of string) {

sys = load Sys Sys->PATH;sys->print("hello, world\n");

}

Page 19: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

19

Dis

Dis é a Máquina Virtual (MV) do Inferno Desenvolvido também para compilação

on-the-fly (just-in-time) Uso dos bytecodes para produzir código

nativo O design da MV envolve:

Conjunto de instruções Sistema de módulos

Page 20: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

20

Dis

Instruções seguem o modelo CISC (Complex Instruction Set Computer): OP src1, src2, dst Exemplo: c = a + b

add a, b, c

Existência de instruções paraAlocar memória, carregar módulos, criar

processosSincronização e comunicação entre

processos

Page 21: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

21

Segurança

O Inferno provê segurança de: Comunicação Controle de recursos Integridade de Sistema

Existência do conceito de canais de comunicação entre processos Mensagens criptografadas Mecanismos que evitam mensagens

corrompidas

Page 22: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

22

Segurança

Os recursos são acessados somente por chamadas de módulos

Adição e remoção de recursos de um espaço de nomes é controlada Presença de mecanismos de autenticação

Alguns algoritmos de criptografia presentes: SHA, MD4, MD5, Elgamal (assinaturas), RC4,

DES, Diffie-Hellman (chave pública) Criptografia das mensagens é

transparente para as aplicações

Page 23: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

23

Inferno/Limbo vs. JavaOS/Java Limbo vs Java

Ambos possuem sintaxe influenciada pelo C Utilização de uma máquina virtual por

ambos Java usa o conceito de objetos Limbo é um pouco mais simples, entretanto

provê alguns tipos de dados sofisticados, como o channel (comunicação), além de mecanismos para controle de concorrência, autenticação, segurança, etc

Biblioteca gráfica do Inferno (Tk) mais completa que o AWT

Page 24: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

24

Inferno/Limbo vs. JavaOS/Java Máquina virtual

A arquitetura do inferno segue o modelo de transferência de memória (memory-to-memory)

As instruções do Dis são traduzidas para uma única instrução de máquina (CISC)

Já a JVM (Java Vitual Machine) usa a arquitetura de pilha

Utizando o exemplo c = a + b, teriamos:push a push b add store c

Page 25: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

25

Visão geral da arquitetura

Page 26: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

26

Ambiente gráfico

Page 27: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

27

Aplicações

Page 28: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

28

Ferramentas

Page 29: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

29

Jogos

Page 30: INFERNO OS Sistemas Distribuídos Anderson Biudes Guilherme Henrique 1.

30

Plug-in