Seminário de MAC 5755 Sistemas Operacionais Distribuídos

Slides:



Advertisements
Apresentações semelhantes
Projeto de Sistemas de Software Luana Lachtermacher
Advertisements

Programando com Threads em C
2008 LCG/UFRJ. All rights reserved. 1 Standard Template Library STL Claudio Esperança Paulo Roma Cavalcanti.
Char Drivers Alexandre Madeira Taciano Rodolfo Programação de Periféricos Eduardo Augusto Bezerra 30/06/2005.
Sistemas Operacionais
Técnicas e Projeto de Sistemas André Mesquita Rincon Processo de Software Técnico Subsequente – Módulo III.
Técnicas e Projeto de Sistemas
Técnicas e Projeto de Sistemas
FORTRAN 90 Denise Yumi Takamura.
INTRODUÇÃO À COMPUTAÇÃO PARALELA
Modularização de Código. Modularizar código Construção do algoritmo em um módulo único (Início...Fim/ Program... End) Único arquivo.
Container Managed Persistent Bean Kellyton Brito Projeto Compose
Universidade Federal da Bahia – Centro de Processamento de Dados – Preview Computadores 1 Uma Ferramenta Orientada a Modelos para Geração de Aplicações.
Treinamento GP3 USP – GEFIM Abril de 2004 Alcides Pietro, PMP.
Sistemas Operacionais
Arquiteturas de 4, 3, 2, 1 e 0 endereços.
Teste Funcional de Software
Compressão por Hardware
Modelando com UML CMP 231 – Sistemas Embarcados
Gerência de Dados em Grades Motivação: – 1a geração de suporte a dados em Grades: ferramentas para transferência e catalogação de réplicas: Globus: GridFTP,
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - julho 2005 Serviço Worb Treinamento no GRADEp Serviço Worb WorbDemo.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço Collector Treinamento no GRADEp Serviço Collector CollectorDemo e.
Servidores e Programação Web Redes de Computadores.
Mais sobre classes Baseada no Livro: Deitel&Deitel - C++ How To program Cap. 7 Prentice Hall 1994 SCE 213 Programação Orientada a Objetos, ICMC - USP 2.
Introdução A fim de preparar a geração de código, deve-se relacionar o fonte estático do programa às ações em tempo de execução. Durante a execução, o.
Geração de Código Algoritmo de Escalonamento de instruções – List Scheduling.
O Fluxo de Testes © Alexandre Vasconcelos
1 Rejane Ramos Uma Estrutura para Protocolos Maleáveis de Roteamentos na Internet CURITIBA 2004 Trabalho apresentada à Disciplina de Comunicação de Dados.
Introdução Software para Laboratórios de Análises Clínicas
Funções de um computador
CT-300 – Seminário de Tese 1/25 Um Framework Padrão para Simulação de Modelos de Robôs Móveis de Robôs Móveis Juliano A. Pereira Prof. Carlos H. C. Ribeiro.
CES-11 LAB 03 Bitmap Quadtree
Segurança de Dados no MAER.
ITA - Instituto Tecnológico de Aeronáutica Aula #1.1 – Tutorial de Web Services utilizando o NetBeans 5.5 Disciplina: CE 262 – Ontologias e Web Semântica.
Capítulo VII – Tipos Enumerativos e Estruturas 7.1 – Tipos enumerativos 7.2 – A necessidade de estruturas 7.3 – Manipulação dos campos de uma estrutura.
1.3 – Interpretadores – Compiladores versus Interpretadores
Capítulo I – Conceitos Primários 1.1 – Estrutura de um computador 1.2 – Informações manipuladas por um computador 1.3 – Evolução das linguagens de programação.
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Aula 1 – 10/09 Introdução ao Curso Marcelo Paiva
III – Uso da Infraestrutura Tecnológica Tecnologias de Informação e Comunicação em Desenvolvimento de Produtos III – Uso da Infraestrutura Tecnológica.
I – Informação Digital – Tema de Discussão Escola Politécnica da USP MBA EPUSP em Gestão e Engenharia do Produto EP018 O Produto Internet e suas Aplicações.
I – Comunicação – Redes – Segurança Escola Politécnica da USP MBA EPUSP em Gestão e Engenharia do Produto EP-018 – O Produto Internet e suas Aplicações.
Construindo Mundos em. Construindo Mundos em X3D.
I – Informação Digital – Trabalho Grupo Escola Politécnica da USP MBA EPUSP em Gestão e Engenharia do Produto EP-018 – O Produto Internet e suas Aplicações.
FUNDAÇÃO CARLOS CHAGAS
Implementação Do JXTA Como Protocolo De Transporte Do JacORB
Business Process Management e Workflow - jBPM Aluno: Filipe Ferraz Salgado Orientador: Francisco Reverbel Novembro 2006.
TE 043 CIRCUITOS DE RÁDIO-FREQÜÊNCIA
Organização de Sistemas de Computadores
Desempenho A rápida taxa de melhoria na tecnologia de computadores veio em decorrência de dois fatores: avanços na tecnologia utilizada na construção.
UERJ - Agosto 2000© Oscar Luiz Monteiro de Farias1 Bancos de Dados Mestrado em Engenharia de Computação área de concentração Geomática.
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Linguagens Formais e Tradutores Linguagens Regulares (Revisão)
Capítulo 1 Introdução 1.1 O que é um sistema operacional
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Recursividade Estrutura de Dados.
The Data Warehouse Toolkit
LINGUAGENS DE PROGRAMAÇÃO
Internet Aula 03. Histórico Durante a guerra fria, os EUA tiveram a necessidade de interligar laboratórios que trabalhavam para os militares; Essa interligação.
Sistemas Operacionais e Windows XP Aula 04 – DCA0302.
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes.
Programação Concorrente com Thread Java
Comunicação CLP através do Driver OPC
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
1 2 Observa ilustração. Cria um texto. Observa ilustração.
CALENDÁRIO SEXY Ele & Ela. CALENDÁRIO SEXY Ele & Ela.
Administração e Exploração Avançada de Bases de Dados Mestrado em Engenharia de Sistemas Braga, 2014.
Rio Verde - Goiás - Brasil
Sistemas Distribuídos Anderson Biudes Guilherme Henrique
Transcrição da apresentação:

Inferno http://www.vitanuova.com/ Seminário de MAC 5755 Sistemas Operacionais Distribuídos Cleber Miranda Barboza cleberc@linux.ime.usp.br

Introdução O que é o inferno? Sistema Operacional que fornece facilidades para o desenvolvimento e a execução de: Serviços Distribuídos Aplicações de Rede Desenvolvido por Lucent Technologies' Bell Labs

Alguns requisitos Sistemas pequenos Sistemas médios Sistemas maiores 1MB RAM Sistemas médios 4MB RAM Sistemas maiores 16MB RAM

Principais características Portabilidade: Intel, SPARC, MIPS, PowerPC Design Distribuído Adaptabilidade Dinâmica Aplicações portáveis Utilizado das seguintes maneiras: Sistema Operacional Nativo Hospedado dentro dos seguintes sistemas: Windows Unix (Irix, Solaris, FreeBSD, Linux, AIX, HP/UX) Plan 9

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

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

Recursos como arquivos (Cont.) 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

Espaço de Nomes 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

Espaço de Nomes (Cont.) 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 Como importar espaços de nomes?

Espaço de Nomes (Cont.) Importando espaço de nomes: mount tcp!143.107.45.20 /n/remote/camera mount tcp!143.107.45.21 /n/remote/vcr bind /n/remote/camera /homework/camera bind /n/remote/vcr /homework/vcr E para exportar espaço de nomes?

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)

Protocolo de Comunicação (Cont.) É 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

Protocolo de Comunicação (Cont.) Modelo OSI (Open System Interconnection): 7 Application 6 Presentation 5 Session <======= Styx 4 Transport 3 Network 2 Data link 1 Physical

Protocolo de Comunicação (Cont.) Resolvendo nomes: echo www.ime.usp.br > /net/dns cat /net/dns 143.107.45.20

Protocolo de Comunicação (Cont.) 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

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

Limbo (Cont.) 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

Limbo (Cont.) 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

Limbo (Cont.) hello.b) 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"); }

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

Dis (Cont.) 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 para Alocar memória, carregar módulos, criar processos Sincronização e comunicação entre processos

Dis – Gerenciamento de memória (Cont.) O gerenciamento de memória está ligado ao conjunto de instruções da MV Uso de um coletor de lixo híbrido Contagem de referências real-time sweeping (mark-and-sweep), três passos: Para todo objeto no sistema, se ele tem uma marca, ela é limpa Através das pilhas de execução, encontra-se os objetos que estão sendo referenciados, marcando-os No passo final, percorre-se o heap linearmente, removendo todos os objetos que não possuem a marca

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

Segurança (Cont.) Os recursos são acessados somente por chamadas de módulos que os provê 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

Inferno/Limbo vs. JavaOS/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

Inferno/Limbo vs. JavaOS/Java (Cont.) 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

Visão geral da arquitetura

Ambiente gráfico

Exemplos de uso

Inferno - Hoje Hoje o inferno se encontra em sua 4.a edição Desenvolvimento em passos lentos Lista de discussão apresenta por volta de 30 mensagens por mês Talvez se o código fosse aberto… Há planos para realizar integração com o Java

Referências Vitua Nova. Inferno Overview, em: <http://www.vitanuova.com/inferno/papers/bltj.html> Sean Dorward, Rob Pike, David Leo Presotto, Dennis M. Ritchie, Howard Trickey, Phil Winterbottom. The Inferno Operating System, em:<http://www.vitanuova.com/inferno/papers/bltj.html> Rob Pike, Dennis M. Ritchie. The Styx Architecture for Distributed Systems, em: <http://www.vitanuova.com/inferno/papers/styx.html> Dennis M. Ritchie. The Limbo Programming Language, em: <http://www.vitanuova.com/inferno/papers/limbo.html> Phil Winterbottom Rob Pike Bell Labs.The design of the Inferno virtual machine, em: <http://www.vitanuova.com/inferno/papers/hotchips.html>