Cap. 5 Objetos Distribuídos e Invocação Remota

Tamanho: px
Começar a partir da página:

Download "Cap. 5 Objetos Distribuídos e Invocação Remota"

Transcrição

1 1 Cap. 5 Objetos Distribuídos e Invocação Remota Aplicação distribuída: conjunto de processos que cooperam entre si; Precisam invocar operações em processos remotos para realizar serviços. Modelos de programação usados: Chamada de procedimentos: extendida no RPC para permitir a chamada de procedimentos remotos; Invocação de métodos: extendida no RMI para permitir a invocação de métodos em objetos remotos; Programação orientada a eventos: permite a objetos receber notificações de eventos em objetos onde registraram interesse. Extendida para permitir notificação sobre eventos distribuídos. Middleware Aplicações RMI, RPC e eventos Protocolo request reply Representação externa de dados Sistema operacional Middleware Aspectos importantes: Transparência de localização: no RPC, quem chama uma função não sabe se ela é local ou não, se roda no mesmo processo ou num diferente. Se for remota, não se sabe onde está o processo que vai ser executado. Recebendo um evento distribuído, o processo não sabe onde está o processo que o gerou. Protocolos: são independentes do sistema de comunicação básico. Diferenças de hardware: são encobertas por operações de marshalling com EDR. Sistema operacional: a aplicação que usa o middleware não depende do SO local. Linguagens diferentes: alguns middlewares permitem independência de linguagem. Um objeto escrito numa linguagem pode invocar métodos em objetos escritos em outra Interfaces Na programação por módulos, o relacionamento entre módulos é feito via uma interface. Nela, relaciona-se quais métodos estão disponíveis para acessar determinado módulo. Enquanto a interface permanecer igual, o acesso ao módulo não é alterado, mesmo que a implementação mude. Interfaces em SDs Num programa distribuído, um módulo não pode acessar variáveis de outro. A interface de um módulo não pode especificar acesso a variáveis. O IDL do CORBA permite especificar atributos, mas o acesso não é direto. A plataforma insere funções de consulta e atualização de variáveis automaticamente. Os mecanismos de passagem de parâmetros das chamadas locais não se aplicam em programas distribuídos (passagem por valor ou por referência). Na interface, a especificação de parâmetros indica apenas input e/ou output:

2 Input: parâmetros passados para a função invocada que fornecem valores para o seu algoritmo; Output: parâmetros que recebem resultados da função invocada. Ponteiros não podem ser usados em invocações de funções. 2 Diferença entre RPC e RMI: Interface de serviço: conjunto de funções disponíveis para acessar os serviços de um servidor no modelo cliente-servidor; Interface remota: métodos de um objeto disponíveis para invocação por outros objetos; o Define parâmetros e forma de acesso; o Aceita passagem de objetos como argumentos; o Permite passagem de referências para objetos. 5.2 Comunicação entre objetos distribuídos Modelo de Objetos Exceções Tipos de erros que um processo pode encontrar durante sua execução: Erros controláveis: valores inconsistentes de argumentos, falha em encontrar um dado num BD, etc. Erros externos: falha em acessar arquivos ou sockets, etc. Erros internos: divisão por zero, endereços de memória inválidos, etc. Erros de dependência: ocorrem em processos hierarquicamente superiores. O modelo de objetos permite colocar tratamento de erros através de comandos throw. Isso evita que o programador insira todos os testes no meio do código de um serviço. O tratamento é colocado em blocos separados e a execução desvia para esses blocos quando um evento é catched pelo programa. Garbage collection Objetos ocupam espaço e devem ser liberados quando não são mais necessários. Algumas linguagens (ex. Java) possuem mecanismos para liberar objetos quando não são mais referenciados. Outras não possuem e obrigam o programador a fazer esse controle (ex. C++). Operação sujeita a erros Objetos distribuídos Objetos distribuídos podem se organizar de várias formas. A invocação de seus métodos segue modelos previamente estudados. Um dos pontos importantes é verificar se um determinado objeto (ou método) pode ser invocado concorrentemente (+ de uma invocação no mesmo intervalo uma invocação feita antes da anterior ser executada). O fato de que os dados de um objeto são acessados apenas pelos seus métodos permite aplicar técnicas de controle: Ex.: Java - métodos sinchronized;

3 Objetos podem ser copiados para caches locais, sendo acessados diretamente; Invocação via RMI permite acesso ao mesmo objeto por plataformas diferentes possíveis conversões são feitas por EDR O modelo de objetos distribuídos Tipos de invocação: Local: feitas dentro do mesmo processo; Remota: feita entre processos diferentes podem residir ou não em máquinas diferentes. Para ser acessado remotamente, um objeto deve ter uma referência remota. Cada objeto remoto deve ter uma interface remota, que especifica quais dos seus métodos podem ser acessados remotamente. Referência a objeto remoto Identificador que permite acessar um objeto remotamente. É único no sistema inteiro e permite identificar um objeto determinado, independente de sua localização. Seu formato é diferente de uma referência local. Referências remotas podem ser passadas como argumentos. Interfaces remotas A classe de um objeto remoto implementa os métodos de sua interface remota. Outros objetos só podem invocar métodos de um objeto que pertencem a sua interface remota Quetões de projeto para RMI Diferenças entre chamadas locais e remotas: Chamadas locais são executadas exatamente 1 vez; sobre chamadas remotas já não é sempre assim; O nível de transparência do RMI precisa ser definido. Semânticas de invocação RMI Escolhas sobre protocolos request-reply: Mensagens retry: até quando retransmitir uma requisição, antes de receber a resposta ou assumir que o servidor falhou; Filtro de duplicados: com a possibilidade de retransmissões, se o servidor deve usar um filtro; Retransmissão de resultados: se um histórico deve ser mantido em vez de re-executar sempre cada comando; Medidas de tolerância a falhas Filtro de duplicados Retransmitir requisições Não Não aplicável Re-executar ou retransmitir reply Não aplicável Semânticas de invocação Maybe

4 Sim Não Re-executar At-least-once Sim Sim Retransmite At-most-once 4 Obs.: para invocação de métodos locais, a semântica é exactly-once! Transparência No RPC, certas atividades (marshalling, envio de mensagens, retransmissão da requisição após um timeout) são escondidas do programador e realizadas de forma transparente. Com objetos distribuídos, isso é extendido para localizar e contactar objetos remotos. Invocações remotas são diferentes das locais porque envolvem redes. Pode haver falhas de rede ou máquina sem que se possa distinguir uma da outra. A grande questão é se a máquina destino recebeu a msg e se conseguiu executá-la. Isso obriga os objetos remotos a tratamentos para recuperação de cada caso. O atraso de uma invocação remota é enorme comparado a uma operação local. Então, é interessante minimisar esse custo. Apesar de se procurar por transparência, é interessante que a diferença entre invocações locais e remotas sejam explícitas, já que as implicações são grandes. Ex.: Corba repassa ao programa erros de comunicação como exceção; A IDL também permite especificar o tipo de semântica que se deseja isso informa o projetista sobre que tipo de operação o objeto deve realizar; Java RMI separa invocações locais de remotas Implementação de RMI Módulo de comunicação Executa o protocolo request-reply; Especifica tipo de msg, requestid, referência remota; Determina a semântica; No servidor, seleciona o dispatcher. Módulo de referência remota Tradução entre referências remotas e locais; Cria referências remotas; Mantém uma tabela de objetos remotos: o Entradas para todos os objetos remotos relacionados ao processo; o Entradas para cada proxy local. Software RMI Camada entre objetos da aplicação e módulos de comunicação e referência remota. Função de seus componentes: Proxy: o Torna transparente para o cliente as invocações (comporta-se como um objeto local, mas repassa as invocações para os objetos remotos);

5 5 SD Cap. 5-6 o Esconde detalhes da referência remota, marshalling, unmarshalling, envio e recepção de msgs; o Um proxy para cada objeto remoto que o processo usa. Dispatcher: o Servidores possuem um dispatcher e um skeleton para cada classe de objetos remotos; o Recebe requisições; methodid diz que método deve ser chamado; passa a requisição. Skeleton: o Implementa os métodos de uma interface; o Faz unmarshall da requisição e invoca o método correspondente do objeto remoto; o Faz marshall do resultado (e exceções); o Passa a msg reply para o proxy para transmissão. Métodos fábricas Interfaces não incluem construtores; Assim, objetos remotos não podem ser criados por invocação remota; São criados na inicialização de processos ou em métodos de interfaces remotas; Um método fábrica é aquele que cria objetos remotos; Objeto fábrica é aquele que possui métodos fábricas. Binder Serviço de um SD que mantém tabelas de mapeamento entre nomes de serviços e referências remotas. Permite aos servidores se registrarem e aos clientes procurar um serviço. Corba: Corba Name Service; Java: RMIregistry. Ativação de objetos remotos As aplicações necessitam que as informações sejam mantidas por longos períodos. Isso não justifica manter objetos em processos se eles não são necessários todo o tempo. Assim, os processos são disparados quando necessário. Um objeto remoto que pode ser invocado é chamado de ativo. Se ele não está ativo, mas pode ser ativado, é chamado de passivo. Um objeto passivo: Implementação dos métodos; Seu estado na forma marshalled. Processos que disparam servidores para manter objetos remotos são chamados de ativadores. Armazéns de objetos persistentes Objeto persistente: pode manter seu estado e informações entre períodos de ativação. Ex.: Serviço de objetos persistentes Corba; Java Persistente. O processo de ativação é transparente. O estado dos objetos é salvo periodicamente em pontos íntegros para fins de tolerância a falhas.

6 6 SD Cap. 5-6 Duas abordagens para decidir se um objeto é persistente ou não: Raízes persistentes: objetos acessíveis através de uma raiz persistente é um objeto persistente. Ex.: Java Persistente e PerDis; Classes persistentes: objetos persistentes são instâncias dessas classes ou derivados delas. Ex.: Arjuna. Alguns armazéns permitem a ativação de objetos em caches dos clientes. Ex.: PerDis e Khazana. Isso exige um protocolo de consistência de caches. 5.3 Remote Procedure Calling - RPC Programa distribuído: Conjunto de componentes de software; Executam sobre um número de computadores da rede. Modelo cliente-servidor: Uma aplicação pode ser cliente de qualquer serviço da rede; Um servidor pode ser cliente de outros serviços; Cada serviço possui um conjunto de operações que podem ser invocadas pelos clientes; A comunicação entre clientes e servidores é baseada no protocolo requisição-resposta; O cliente sempre espera pela resposta para continuar, mesmo que não haja retorno de valor (pode haver erro!). RPC: Integração entre clientes e servidores de forma conveniente; Clientes se comunicam com servidores através da chamada de procedimentos; A chamada é feita no programa local; A execução ocorre num programa remoto. Serviço ao nível RPC: Uma interface que é exportada para os programas de um sistema; Conjunto de funções que operam sobre certos dados ou recursos; Aspectos semânticos de RPC: Parâmetros de entrada e saída: Parâmetros de entrada são passados para o servidor; Valores enviados na requisição e copiados nas variáveis do servidor; Parâmetros de saída são enviados para o cliente na resposta; Substituem as variáveis da chamada; Parâmetros podem ser I/O. Parâmetros de entrada ~ passagem por valor Se passagem por referência (ptr em C): Indicar se é I, O ou I/O; Motivo para uma linguagem de definição de interface. Procedimento remoto: Executado em ambiente diferente de quem chama; Não pode acessar dados do cliente (ex.: globais); Endereços de memória do cliente não tem significado para o servidor;

7 7 Conclusão: parâmetros não podem incluir ponteiros! Referência opaca: Referência que o cliente passa para o servidor; Endereço do servidor; Não tem significado para o cliente. Estruturas complexas podem ser serializadas: Ex.: uma árvore pode ser convertida em uma expressão. Questões de projeto Histórico: Xerox Courier RPC: padrão de desenvolvimento de aplicações remotas; Birrel e Nelson: RPC para o ambiente de programação Cedar; Datagramas sobre a Internet da Xerox; Linguagem Mesa. Classes de RPC: 1. o mecanismo RPC é integrado com uma linguagem específica; inclui uma notação de definição de interface; ex.: Cedar, Argus, Arjuna; pode incluir construções específicas para RPC (ex.: exceções); 2. linguagem de definição de interfaces (pré-compilador?!). ex.: SUN RPC (base do NFS); Matchmaker (Jones e Rashid, 1986): pode ser usado com C, Pascal, LISP, MIG (Mach Interface Generator); Não é ligado a um ambiente particular. Linguagem de definição de interfaces: Especifica as características do servidor que são visíveis para o cliente; Nomes de procedimentos, tipos dos parâmetros; Tipo de acesso a um parâmetro: I, O ou I/O; O acesso indica se o valor precisa ser encapsulado na requisição ou na resposta (marshaling); Compiladores de interfaces podem gerar descrições que podem ser usadas em diferentes linguagens, permitindo a comunicação de clientes e servidores de plataformas diferentes. Tratamento de exceções: Qualquer RPC pode falhar: Falha no servidor; Sobrecarga do servidor (atraso na resposta). RPC deve devolver erros: Timeouts (inerente à distribuição); Erros de execução (FD inválido, leitura após EOF, divisão por zero, etc.). Erros detectados pelos procedimentos (códigos inválidos, datas erradas, etc.).

8 8 Obs.: na falta de um mecanismo de indicação de erros (como exceções em JAVA), o sistema pode usar um método bem definido de indicação de problemas (retorno de 0 ou 1 em UNIX). Garantia de entrega: Implementações possíveis do DoOperation: Repetição da requisição: até receber uma resposta ou assumir que o servidor falhou; Filtro de duplicados: usado com retransmissão, para evitar duplicação no servidor; Retransmissão da resposta: evita a reexecução de uma requisição. Garantia de Entrega Repete Req. Filtra Duplic. N - S N S S Reexec/Retra ns - Reexecuta Retransmite Semântica RPC Maybe At-least-once At-most-once Tipos de semânticas RPC: 1. Maybe: sem tolerância a falhas. Não há garantias de que o procedimento foi executado. Não se pode saber se o servidor executou a requisição ou se a resposta foi perdida. 2. At-least-once: o cliente é informado de que um timeout ocorreu e retransmite a requisição. Eventualmente o servidor receberá uma requisição duplicada. Se ele for projetado para executar operações idempotentes, não há problema. 3. At-most-once: o servidor filtra requisições duplicadas e retransmite as respostas. Transparência: O modelo Birrel e Nelson garante que a chamada a procedimentos remotos é igual à chamada dos locais; RPC Cedar: identifica os procedimentos remotos; acrescenta o código necessário para o marshalling e unmarshalling; faz retransmissão da requisição após um timeout; a duração de uma chamada é indefinida desde que o servidor permaneça ativo. RPC é mais vulnerável do que chamadas locais: envolve redes, outros computadores e outro processos; consome muito mais tempo do que chamadas locais; deve tratar erros que não acontecem nas chamadas locais. Implementação O software de suporte ao RPC tem 3 funções: Processamento da interface: marshalling e unmarshalling; despacho das requisições. Tratamento da comunicação: Transmitir requisições e receber as respostas; Binding: Localização de um servidor para um serviço qualquer.

9 Processamento da interface: 9 Requisição Cliente Servidor Chamad Marshall Send Receive Unmarsh Executa a. Seleção! Retorno Unmarsh Receive Send Marshall Retorno Resposta Cada procedimento de uma interface é numerado com um número único (0, 1, 2, 3,...). Construindo um programa cliente: Stub: converte chamada local em remota; faz o casamento dos parâmentros. Construindo o programa servidor: entregador (despatcher); conjunto de stubs servidores. Compilador de interfaces: processa as definições de uma IDL. 1. Gera os stubs do cliente; 2. Gera os stubs do servidor; 3. Gera as operações de marshall e unmarshall; 4. Fornece os cabeçalhos das funções (o corpo o que a função faz deve ser fornecido pelo programador). Binding Mapeamento de um nome para um objeto determinado (identificador de comunicação). Ex.: no Unix, um socket com número IP e Porta. Ex.: Mach, Chorus e Amoeba, uma porta independente de localização. Evita a recompilação dos clientes quando o servidor muda de porta. Se o endereço inclui a identificação do host, o cliente precisa ser recompilado toda vez que o servidor mudar de host. Num sistema distribuído, o binding é um serviço separado que mantém tabelas associando nomes de serviços com portas de servidores. Ex.: o próprio Binding, DNS, etc. Funções: Register(serviço: string, porta: port, versão: integer); Withdraw(serviço: string; pota: port; versão: integer); LookUp(serviço: string; versão: integer): port. Quando um servidor inicia seus serviços, ele envia uma mensagem para o Binding para se registrar. Quando ele encerra suas atividades, ele pede para ser retirado das tabelas do Binding. Quando um cliente quer usar um serviço, manda uma mensagem ao Binding para descobrir o endereço do servidor. Se o servidor falha, o cliente pode requisitar ao Binding a porta de outro servidor do mesmo serviço.

10 10 SD Cap. 5-6 Se o sistema usa portas independentes de localização, um servidor pode se mover para outro host sem informar o Binding. Os clientes não são afetados pela mudança. Se o identificador de porta inclui o host, o Binding deve ser informado toda vez que o servidor for movido. Os clientes vão ter requisições ignoradas. Eles devem contatar o Binding para descobrir o novo endereço do serviço. Serviço único: todos os outros dependem dele: Tolerante a falhas (ex.: salvando as tabelas em arquivos toda vez que elas são alteradas); Um sistema distribuído dependente de um único Binder não é escalável: As tabelas podem ser particionadas (maior desempenho); Também podem ser replicadas em um grupo de Binders (tolerância a falhas). Alguns serviços são representados por múltiplos servidores, cada um rodando em um host diferente: Cada um deles é uma instância de um serviço; Um Binder deve ser capaz de registrar as várias instâncias de um serviço; Se o Binder não usa a instância de um serviço, o cliente deve informar qual delas ele quer usar (número seqüencial); Numa falha, o cliente pega a próxima instância. Se o Binder usar a instância, ele pode distribuir os clientes pelas diversas instâncias de um serviço (balanceamento de carga) Exportação: registro de um nome de interface associado com a porta de um servidor. Importação: pergunta ao Binder pelo nome de um serviço retornando um número de porta. Localização do Binder: Endereço bem definido, compilado em todos os clientes; Clientes e servidores precisam ser recompilados se o Binder for mudado; O Kernel informa o endereço do Binder (ex.: variável de ambiente). Permite a relocação ocasional do Binder; Quando clientes ou servidores iniciam, mandam mensagens de broadcast para localizar o Binder (ex.: no Unix, o Binder fica numa porta bem conhecida. Num broadcast, o Binder que receber informa qual é o seu host). RPC Assíncrono Ex.: sistema de janelas X-11 Utiliza uma forma assíncrona de RPC: X-11 é um servidor de janelas; As aplicações que querem mostrar alguma coisa na tela (texto, gráficos, etc.) são os clientes. Características: Para gerar ou atualizar a informação de uma janela, o cliente envia várias requisições ao servidor, cada uma delas com uma pequena quantidade de informações: Strings, troca de fonte, um caracter. O cliente não recebe respostas para suas requisições; Cliente e servidor trabalham em paralelo;

11 11 SD Cap. 5-6 Algumas requisições podem exigir intensa computação - há ganhos em realizá-las enquanto o servidor atende requisições anteriores; O servidor pode manipular requisições de vários clientes; Ou mesmo de dispositivos; O servidor tem uma performance melhor se ele não precisa enviar respostas para as requisições. RPC sem respostas e sem bloqueio é chamado de assíncrono. Comparação: No RPC síncrono, não existe paralelismo; No RPC assíncrono, o cliente faz todas as requisições de que necessita; só então espera pelos resultados; A espera no lado do cliente se resume ao intervalo entre a última requisição e a recepção da primeira resposta; Se não houver necessidade de resposta às requisições, o tempo de espera não existe. Otimização possível: Armazenar as requisições no lado do servidor até que ocorra um timeout ou que o cliente peça uma resposta; Só então as requisições são enviadas como uma comunicação só; Isto reduz a latência de rede. Requisições paralelas para vários servidores Ex.: considere um banco com vários servidores, cada um responsável por registrar os lançamentos feitos em uma agência. Para saber o saldo de uma conta, é preciso consultar os lançamentos de todas as agências; RPC síncrono: O cliente faz requisições para um servidor de cada vez, esperando a resposta; Só após chegar uma resposta, ele manda a requisição para o próximo. RPC assíncrono: O cliente envia as requisições para todos os servidores em seqüência e depois espera por todas as respostas; Os servidores trabalham em paralelo. Comparação entre RPC síncrono e assíncrono:

12 12 RPC síncrono argumentos marshall send receive unmarshall processa argumentos marshall send receive unmarshall processa receive unmarshall transmissão executa marshall send receive unmarshall executa marshall send Cliente Servidor RPC assíncrono argumentos marshall send argumentos marshall send receive unmarshall processa receive unmarshall executa marshall send receive unmarshall executa marshall send receive unmarshall

13 processa 13 Cliente Servidor RPC assíncrono no sistema Mercury Otimizações necessárias no paradigma RPC: Se não há necessidade de resposta, o cliente pode fazer um RPC e continuar sua execução; Se não há necessidade de resposta, várias requisições podem ser armazenadas e enviadas no mesmo send; Se há necessidade de resposta, o cliente pode processar até que ela seja necessária para só então requisitá-la. Sistema Mercury MIT, 1988: Call-stream: combina RPC síncronos e assíncronos; As diferenças nos métodos de comunicação não são visíveis para os servidores: Eles só recebem requisições e devolvem respostas. Simplifica o projeto dos servidores; O cliente determina o método que vai utilizar; Diferente de outros sistemas onde a interface define o método e o servidor precisa ser projetado de acordo; Se o cliente não precisa da resposta a uma requisição, o call-stream não a devolve para o cliente. Promessas Liskov e Shrira, 1988; Uma promessa é criada no momento de uma chamada a um servidor; Pode assumir dois estados possíveis: Bloqueado; Pronto. Quando criada, a promessa fica no estado bloqueado; Uma promessa é associada com uma requisição específica; Quando chega a resposta a essa requisição, ela é armazenada na promessa correspondente; Neste caso, o estado da promessa passa para pronto; Funções: claim(): extrai a resposta de uma promessa; se ela estiver no estado bloqueado, o cliente bloqueia até que a promessa passe para o estado de pronto ou que ocorra uma exceção. ready(): testa o estado de uma promessa. 5.4 Eventos e notificações

14 14 SD Cap. 5-6 Objetos que geram eventos numa plataforma distribuída publicam os eventos disponíveis para observação por outros objetos; Objetos que querem receber notificações de eventos publicados assinam tipos de eventos em que têm interesse; Objetos que representam eventos são chamados de notificações. Sistemas baseados em eventos têm 2 características principais: Heterogêneos: permite que objetos não projetados para interoperação trabalhem em conjunto. Um sistema de eventos que permite publicação e assinatura pode permitir trabalho conjunto para objetos que não foram projetados com esse fim; Assíncronos: permite notificação de eventos aos assinantes sem necessidade de sincronismo, o que significa bloqueio dos envolvidos Participantes em notificações de eventos distribuídos Arquitetura que permite independência entre autores e assinantes: Banco de dados com eventos publicados e interesse dos assinantes; Quando ocorre um evento que possui interessados, uma notificação é enviada. Participantes: Objetos de interesse: aqueles que possuem métodos que podem alterar estados isso gera eventos que podem ter interessados; Evento: ocorre como resultado da execução de um método; Notificação: objeto que contém informações sobre um evento: Assinante: assina algum tipo de evento em outro objeto recebe notificações dele; Observadores: objetos que isolam autores de assinantes. Eles monitoram os eventos e notificam aqueles assinados; Autor: objeto que declara que vai gerar notificações de certos tipos de eventos. Pode ser um objeto de interesse ou um observador. Possíveis casos de comportamento em um serviço de eventos: Objetos de Interesse enviam notificações diretamente aos assinantes; OdI enviam notificações via observadores aos assinantes; OdI fora do serviço de eventos. Observadores fazem consultas ao OdI para descobrir quando ocorre um evento. Ele é notificado aos assinantes. Papéis dos observadores Encaminhar notificações para os assinantes de um ou + objetos de interesse. São os objetos de interesse que informam os observadores sobre seus assinantes; Filtros de notificações: aplicados pelos observadores para reduzir a quantidade de notificações. São baseados em regras informadas pelos assinantes. Ex.: num banco, retiradas, mas apenas as maiores que 10000,00; Padrões de eventos: relação de eventos entre si. Ex.: num banco, quero ser informado sempre que houver 3 retiradas sem um depósito; Caixas de correio para notificações: usadas para encaminhar notificações sem que o assinante receba na hora. Ex.: ele não possui uma conexão permanente, ou tornou-se passivo. As notificações são recuperadas mais tarde.

15 15

16 16 Cap. 6 Suporte dos Sistemas Operacionais 6.1 Introdução Função importantes de um SD: compartilhamento de recursos. Clientes invocam operações sobre recursos em outros nós ou outros processos. Middleware: permite a interação entre aplicações clientes e recursos (gerentes). O SO fica abaixo do middleware; O que importa aqui é o relacionamento entre os dois; Como o SO permite ao middleware o acesso aos recursos físicos, como ele implementa políticas de acesso, etc. Abstrações: SO fornece modelos para manipular certos recursos; Ex.: arquivos x blocos de disco; Ex.: sockets x fluxo de redes. Num SO de rede (Unix, NT, etc.), o usuário que precisa executar um programa numa máquina diferente precisa se envolver: Telnet, fornece senha, executa o programa. SO Distribuído: O usuário não se preocupa com o nó em que seu programa executa; Não importa onde estão os recursos; O usuário vê uma única imagem do sistema; A esolha de um nó para executar um programa depende da política de escalonamento. Caracterização de um SOD: Permite a programação de um SD, permitindo a implementação de uma grande gama de aplicações; Apresenta para as aplicações abstrações genéricas e orientadas aos problemas dos recursos do sistema; Num SD aberto, o SOD é implementado como um conjunto de kernels e servidores. Não há uma distinção clara entre os serviços do sistema e as aplicações que rodam no topo do SOD. Exemplos: Mach e Chorus. Resultados de grandes períodos de pesquisa nos anos 80 e 90; Alto nível de interesse técnico e comercial; Outros exemplos técnicos: Amoeba, Clouds, V System; Não aceitos para uso geral; Todos esses projetos empregam microkernel. SOD: Infraestrutura de gerenciamento genérico de recursos e transparente em rede; Recursos de baixo nível: processadores, memória, placas de rede, periféricos em geral;

17 Plataforma para recursos de alto nível: planilhas, troca de mensagens eletrônicas, janelas; Oferecidos aos clientes pelos serviços do sistema; 17 Acesso aos recursos pelo sistema: Feito de forma transparente; Identificadores independentes de localização; Uso das mesmas propriedades; Transparência fornecida no nível mais baixo, para que não precise ser feita em cada serviço; Um SOD deve fornecer ferramentas para encapsular recursos: De forma modular; Modo protegido; Amplo acesso via rede. Encapsulamento de recursos: Interface padronizada implementação escondida do usuário; Concorrência recursos compartilhados por vários usuários; Proteção segurança contra acesso ilegítimo. Os clientes acessam os recursos através da passagem de identificadores como argumentos: Em system calls para o kernel; RPC para um servidor. Invocação: acesso a um recurso encapsulado. Tarefas relacionadas com a invocação de recursos: Resolução de nomes localização; Comunicação para acesso aos recursos; Escalonamento: processamento das invocações no kernel. Middleware x SOs de rede Não há SOs distribuídos em uso corrente hoje; Apenas SOs de rede (Unix, NT, MacOS, etc.); Motivos: o Usuários se preocupam com suas aplicações de uso comum; o Não trocam seus SOs por melhor que seja um outro produto se não puderem executar suas aplicações; o Usuários preferem ter um certo controle sobre suas máquinas; o A idéia de entregar os recursos a outros usuários sem controle é estranha. Por outro lado, o uso de um middleware com um SO de rede é + versátil e aceitável: O usuário consegue rodar seus programas favoritos; Ele tem controle sobre os recursos de sua máquina; Os usuários remotos têm um certo grau de transparência no acesso aos recursos da rede; É possível acessar recursos compartilhados com um certo grau de concorrência. 6.2 Camada de sistema operacional Aplicações, serviços

18 18 Middleware OS1 Processos, threads, comunicação, etc. Hardware do computador e rede OS2 Processos, threads, comunicação, etc. Hardware do computador e rede Nó 1 Nó 2 As interfaces apresentadas por kernels e servidores devem apresentar pelo menos o seguinte: Encapsulamento: conjunto mínimo de operações fornecidas aos clientes. Detalhes de implementação escondidos; Proteção: evita acessos indevidos; Concorrência: clientes devem acessar os recursos de forma concorrente. Isso deve ser transparente para eles. Kernel Kernels e proteção: O Kernel executa com privilégio de acesso total; Ex.: pode controlar a unidade de MM; Pode conceder privilégio de acesso a recursos físicos; Determina o espaço de endereçamento: Permite que os processos se protejam uns dos outros; Evita que um processo invada áreas indevidas. Modo supervisor e usuário: Processos usuários podem rodar em modo supervisor quando tem acesso direto a um dispositivo; System call trap: mecanismo de invocação de recursos gerenciados pelo kernel; Kernel monolítico e microkernel um SOD aberto deve permitir: Executar apenas o suficiente para tornar o ambiente operacional (módulos supérfluos gastam recursos); Alterações no software ou sistema que implementa um serviço, independentemente de outros elementos; Alternativas do mesmo serviço para atender usuários ou aplicações diferentes; Introdução de novos serviços sem prejudicar os existentes. Um certo grau de abertura é obtido com a utilização de kernels tradicionais como base. Ex.: o DCE da OSF usa Unix, VMS, OS/2, etc. Permitem a execução de processos servidores; Suportam protocolos (ex.: RPC); Possuem binding e serviços de nomes; Serviços de tempo (sincronização); Segurança; Threads.

19 Unix: Monolítico; Sugere um sistema massivo; Executa todas as operações básicas do sistema; 1 MB de código e dados; Não diferenciável: codificado de forma não modular; Intratável: a alteração de um módulo para adequação a novos requisitos é muito difícil. 19 Sn Carregado dinamicamente S1 S2 S3 S1 S2 S3 Kernel monolítico MicroKernel Principais funções de um microkernel: Processos; Memória; IPC; Todos os outros serviços carregados dinamicamente em servidores específicos; Um serviço extra só é carregado na máquina que precisa dele; Acesso via invocação (RPC). O microkernel na hierarquia de um sistema: Serviços abertos processos/objetos das aplicações Suporte de linguagem Suporte de linguagem Microkernel Hardware Emulação de OS Comparação: Abertura; Modularidade; Um kernel pequeno tem mais chances de ter menos bugs; Mais fácil de manter; Kernel monolítico é mais difícil de ser modular; Impossível extrair um módulo para execução remota; Um bug num módulo pode se espalhar para os demais; Alterar um módulo implica em recompilar o kernel e reiniciá-lo; Vantagem: eficiência para realizar as tarefas. Arquitetura de um microkernel

20 Em princípio, não há uma definição clara de quais módulos um microkernel deve ter. Todos os produtos dessa categoria incluem: Gerência de processos; Gerência de memória; Passagem de mensagens local. Tamanho: 10 KB até várias centenas de KB de código e dados estáticos. 20 Microkernels são projetados para serem portáveis: A maior parte de seu código é escrito em linguagem de alto nível (C, C++, etc.); Recursos físicos são agrupados em camadas; Componentes dependentes de máquina são reduzidos: Manipulação do processador, unidade de gerência de memória, registradores da unidade de ponto flutuante; Tratamento de interrupções; Traps; Exceções. A arquitetura de um microkernel geral pode ser visto na figura: Aplicações Gerente de Processos Gerente de Comunicações Gerente de Threads Gerente de Memória Supervisor Hardware Gerente de processos: criação, interface, etc. Gerente de Threads: criação, sincronização, escalonamento. Processadores disponíveis. Política de escalonamento a critério do usuário. Gerente de comunicação: IPC. Gerente de memória: memória física, MMU, caches. Supervisor: tratamento de interrupções, system calls, exceções. 6.4 Processos e threads Unix: 1 processo, 1 atividade de processamento (1980). Processo: recurso caro para criar e manter. O compartilhamento entre atividades relacionadas é caro e complexo. Solução: generalização do conceito de processo. Associar mais de uma atividade ao mesmo processo. Processo: ambiente de execução + 1 ou mais threads. Thread: abstração de atividade do sistema operacional. "Thread of execution". Ambiente de execução: unidade de gerenciamento de recursos. Coleção de recursos gerenciados pelo kernel local, aos quais suas threads têm acesso;

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Comunicação Inter-Processos Sockets e Portas Introdução Sistemas distribuídos consistem da comunicação entre processos

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS CUP Disk Memoey CUP Memoey Disk Network CUP Memoey Disk Comunicação em Sistemas Distribuídos Sumário Modelo Cliente e Servidor Troca de Mensagens Remote Procedure Call Comunicação

Leia mais

Sistemas distribuídos:comunicação

Sistemas distribuídos:comunicação M. G. Santos marcela@estacio.edu.br Faculdade Câmara Cascudo - Estácio de Sá 16 de abril de 2010 Formas de comunicação Produtor-consumidor: comunicação uni-direccional, com o produtor entregando ao consumidor.

Leia mais

3. Comunicação em Sistemas Distribuídos

3. Comunicação em Sistemas Distribuídos 3. Comunicação em 3.1.Troca de mensagens As mensagens são objetos de dados cuja estrutura e aplicação são definidas pelas próprias aplicações que a usarão. Sendo a troca de mensagens feita através de primitivas

Leia mais

Comunicação. Parte II

Comunicação. Parte II Comunicação Parte II Carlos Ferraz 2002 Tópicos Comunicação Cliente-Servidor RPC Comunicação de objetos distribuídos Comunicação em Grupo Transações Atômicas Comunicação Stream 2 Comunicação cliente-servidor

Leia mais

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos RPC x RMI Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Chamada Remota a Procedimento Definição Passagem de Parâmetros STUBS Semântica de Falhas 2 RPC Chamada Remota a

Leia mais

Comunicação em Sistemas Distribuídos. Bruno M. Carvalho Sala: 3B2 Horário: 35T34

Comunicação em Sistemas Distribuídos. Bruno M. Carvalho Sala: 3B2 Horário: 35T34 Comunicação em Sistemas Distribuídos Bruno M. Carvalho Sala: 3B2 Horário: 35T34 Comunicação em Sistemas Distribuídos Protocolos regras que os processos que estão se comunicando tem de seguir Protocolos

Leia mais

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 5 PROCESSOS 1. INTRODUÇÃO Em sistemas distribuídos é importante examinar os diferentes tipos de processos e como eles desempenham seu papel. O conceito de um processo é originário do campo de sistemas

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

Sistemas Operacionais Distribuídos e Multiprocessados

Sistemas Operacionais Distribuídos e Multiprocessados Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes Sumário Teoria: Sistemas Multiprocessados Estudo de caso:k42 Teoria:

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Questões Em uma rede de sobreposição (overlay), mensagens são roteadas de acordo com a topologia da sobreposição. Qual uma importante desvantagem

Leia mais

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS Objetos distribuídos e invocação remota Introdução Comunicação entre objetos distribuídos Chamada de procedimento remoto Eventos e notificações Objetos

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura

Leia mais

OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA

OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA SUMÁRIO Introdução Comunicação entre objetos distribuídos Eventos e Notificações 1.INTRODUÇÃO Middleware oferece: Transparência de localização Independência de protocolos

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários.

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários. Os sistemas computacionais atuais permitem que diversos programas sejam carregados na memória e executados simultaneamente. Essa evolução tornou necessário um controle maior na divisão de tarefas entre

Leia mais

Roteiro. Sistemas Distribuídos. Sistemas de Arquivos Distribuídos. Sistema de arquivos distribuídos

Roteiro. Sistemas Distribuídos. Sistemas de Arquivos Distribuídos. Sistema de arquivos distribuídos Sistemas Distribuídos Sistemas de Arquivos Distribuídos Roteiro Sistema de arquivos distribuídos Requisitos Arquivos e diretórios Compartilhamento Cache Replicação Estudo de caso: NFS e AFS Sistemas Distribuídos

Leia mais

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais Comunicação Inter-Processos Conceitos Iniciais 1 Características para Comunicação Inter-Processos. Passagem de Mensagem pode ser suportada por duas operações de comunicação (send e receive). A comunicação

Leia mais

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Aula passada Threads Threads em SDs Processos Clientes Processos Servidores Aula de hoje Clusters de Servidores Migração de Código Comunicação (Cap. 4) Fundamentos

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Comunicação- Protocolos, Tipos, RPC Capítulo 4 Agenda Protocolos em Camadas Pilhas de Protocolos em Sistemas Distribuídos Tipos de Comunicação

Leia mais

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013 MC714 Sistemas Distribuídos 2 semestre, 2013 Tipos de comunicação Middleware: serviço intermediário na comunicação de nível de aplicação. Fig. 67 Ex.: correio eletrônico Comunicação é persistente. Middleware

Leia mais

Sistemas Distribuídos Comunicação entre Processos em Sistemas Distribuídos: Middleware de comunicação Aula II Prof. Rosemary Silveira F. Melo Comunicação em sistemas distribuídos é um ponto fundamental

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br

Leia mais

Tópicos em Sistemas Distribuídos. Modelos de Comunicação

Tópicos em Sistemas Distribuídos. Modelos de Comunicação Tópicos em Sistemas Distribuídos Modelos de Comunicação Comunicação em SD Comunicação entre processos Sockets UDP/TCP Comunicação em grupo Broadcast Multicast Comunicação entre processos Conceitos básicos

Leia mais

Sistemas Distribuídos 59. Sistemas Distribuídos 61. "Receive não-bloqueante:

Sistemas Distribuídos 59. Sistemas Distribuídos 61. Receive não-bloqueante: Comunicação entre processos! Memória Compartilhada: " os processo compartilham variáveis e trocam informações através do uso dessas variáveis compartilhadas COMUNICAÇÃO ENTRE PROCESSOS P1 Área Compartilhda!

Leia mais

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2) Definição de um Sistema Distribuído (1) Introdução Um sistema distribuído é: Uma coleção de computadores independentes que aparecem para o usuário como um único sistema coerente. Definição de um Sistema

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Hardware Sistema de Entrada/Saída Visão Geral Princípios de Hardware Dispositivos de E/S Estrutura Típica do Barramento de um PC Interrupções

Leia mais

Módulo 4: Processos. Conceito de Processo. Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos

Módulo 4: Processos. Conceito de Processo. Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos Módulo 4: Processos Conceito de Processo Escalonamento de processos Operações sobre processos Processos cooperantes Comunicação entre processos 4.1 Conceito de Processo Um Sistema Operacional executa uma

Leia mais

Sistemas Operacionais

Sistemas Operacionais UNIVERSIDADE BANDEIRANTE DE SÃO PAULO INSTITUTO POLITÉCNICO CURSO DE SISTEMAS DE INFORMAÇÃO Sistemas Operacionais Notas de Aulas: Tópicos 7 e 8 Estrutura do Sistema Operacional São Paulo 2009 1 Sumário

Leia mais

Módulo 4: Processos. Conceito de Processo. Diagrama de Estados de Processos. Estados de Processo

Módulo 4: Processos. Conceito de Processo. Diagrama de Estados de Processos. Estados de Processo Módulo 4: Processos Conceito de Processo Conceito de Processo Escalonamento de Processos Operações com Processos Processos Cooperativos Comunicação entre Processos Um sistema operacional executa uma variedade

Leia mais

Universidade Federal de Minas Gerais. Sistemas Operacionais. Aula 23. Sistemas Operacionais Distribuídos

Universidade Federal de Minas Gerais. Sistemas Operacionais. Aula 23. Sistemas Operacionais Distribuídos Aula 23 Distribuídos SOs de Rede Em sistemas operacionais de rede você sabe quando é local e quando é remoto. Assim, o trabalho não muda, com exceção de comandos para acesso remoto: - telnet - ftp - etc.

Leia mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA. INF01151 Sistemas Operacionais II N. Grupo 1 - Sistemas Operacionais Distribuídos

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA. INF01151 Sistemas Operacionais II N. Grupo 1 - Sistemas Operacionais Distribuídos UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INF01151 Sistemas Operacionais II N Grupo 1 - Sistemas Operacionais Distribuídos (Mach) César Q: Discorra brevemente sobre a evolução

Leia mais

Programação Concorrente Processos e Threads

Programação Concorrente Processos e Threads Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por

Leia mais

SISTEMAS DISTRIBUIDOS

SISTEMAS DISTRIBUIDOS 1 2 Caracterização de Sistemas Distribuídos: Os sistemas distribuídos estão em toda parte. A Internet permite que usuários de todo o mundo acessem seus serviços onde quer que possam estar. Cada organização

Leia mais

Sistemas Distribuídos. Coulouris Capítulo 4

Sistemas Distribuídos. Coulouris Capítulo 4 Sistemas Distribuídos Coulouris Capítulo 4 Mensagens Para comunicar-se com outros processos, um processo envia uma MENSAGEM para um DESTINO; um outro processo nesse destino recebe a mensagem. As operações

Leia mais

Sistemas Distribuídos Comunicação. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos Comunicação. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos Comunicação Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Roteiro da Aula Comunicação entre Processos Protocolos Modelo OSI Modelo Cliente Servidor 3 Comunicação entre

Leia mais

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN SISTEMAS OPERACIONAIS Apostila 03 Estrutura do Sistema Operacional UNIBAN 1.0 O Sistema Operacional como uma Máquina Virtual A arquitetura (conjunto de instruções, organização de memória, E/S e estrutura

Leia mais

Considerações no Projeto de Sistemas Cliente/Servidor

Considerações no Projeto de Sistemas Cliente/Servidor Cliente/Servidor Desenvolvimento de Sistemas Graça Bressan Graça Bressan/LARC 2000 1 Desenvolvimento de Sistemas Cliente/Servidor As metodologias clássicas, tradicional ou orientada a objeto, são aplicáveis

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro Introdução Sistemas Operacionais 1 Sistema Operacional: Um conjunto de programas, executado pelo computador como os outros programas. Função: Controlar o funcionamento do computador, disponibilizando seus

Leia mais

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas Arquitetura de Sistemas Operacionais Capítulo 4 Estrutura do Sistema Operacional Cap. 4 Estrutura do Sistema 1 Sistemas Operacionais Pitágoras Fadom Divinópolis Material Utilizado na disciplina Sistemas

Leia mais

Comunicação em Sistemas Distribuídos

Comunicação em Sistemas Distribuídos Comunicação em Sistemas Distribuídos Sockets Aplicações Protocolo de Aplicação FTP, SMTP, HTTP, Telnet, SNMP, etc. sockets TCP, UDP IP Data Link Ethernet, Token Ring, FDDI, etc Física Conjunto de APIs

Leia mais

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor Comunicação em Sistemas Distribuídos Paradigma / Os processos em um SD estão lógica e fisicamente separados. Precisam se comunicar para que possam interagir O desempenho de um SD depende criticamente do

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Comunicação Remota Gustavo Reis gustavo.reis@ifsudestemg.edu.br 1 Comunicação entre processos está no coração de todo sistema distribuído. Não tem sentido estudar sistemas distribuídos

Leia mais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais Arquitetura de Computadores Introdução aos Sistemas Operacionais O que é um Sistema Operacional? Programa que atua como um intermediário entre um usuário do computador ou um programa e o hardware. Os 4

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

Leia mais

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com Sistemas Operacionais 2014 Introdução Alexandre Augusto Giron alexandre.a.giron@gmail.com Roteiro Sistemas Operacionais Histórico Estrutura de SO Principais Funções do SO Interrupções Chamadas de Sistema

Leia mais

Trabalho de Sistemas Distribuídos

Trabalho de Sistemas Distribuídos Cássio de Olivera Ferraz Trabalho de Sistemas Distribuídos Petrópolis 2015, v-1.0 Cássio de Olivera Ferraz Trabalho de Sistemas Distribuídos Trabalho sobre sistemas distribuídos e suas tecnologias. Universidade

Leia mais

Capítulo 2 Processos e Threads Prof. Fernando Freitas

Capítulo 2 Processos e Threads Prof. Fernando Freitas slide 1 Capítulo 2 Processos e Threads Prof. Fernando Freitas Material adaptado de: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3ª edição. Disponível em: http://www.prenhall.com/tanenbaum_br slide

Leia mais

6 - Gerência de Dispositivos

6 - Gerência de Dispositivos 1 6 - Gerência de Dispositivos 6.1 Introdução A gerência de dispositivos de entrada/saída é uma das principais e mais complexas funções do sistema operacional. Sua implementação é estruturada através de

Leia mais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo 4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas

Leia mais

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 6 - ALGORÍTIMOS PARALELOS MPI - Parallel Virtual Machine e PVM - Parallel Virtual Machine 1. INTRODUÇÃO Inicialmente é necessário conceber alguns conceitos para entendimento dos algoritmos paralelos:

Leia mais

Usuários. Aplicativos e programas dos usuários. Kernel gerenciamento de processos, memória, sistema de arquivos, I/O, etc.

Usuários. Aplicativos e programas dos usuários. Kernel gerenciamento de processos, memória, sistema de arquivos, I/O, etc. 1 1.0 Kernel O kernel (núcleo) representa o coração do Sistema Operacional. Atribuições do kernel: - gerenciamento dos arquivos em disco; - inicializar programas e executá-los; - alocar e gerenciar memória

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos I: Threads, virtualização e comunicação via protocolos Prof. MSc. Hugo Souza Nesta primeira parte sobre os Processos Distribuídos iremos abordar: Processos e a comunicação

Leia mais

Máquina de estados UNIX O

Máquina de estados UNIX O Estruturas Processos de Controle (Aula 5) Aula Interrupções Profa. Patricia Gerência fluxo, execução D. O Abstração passada Criação podendo de gerar hw e transição sw (mudança de CostaLPRM/DI/UFES que

Leia mais

Máquina de estados UNIX O. Sistemas Operacionais 2008/1Profa. Patricia S.O. computação: recursos D. S.O S.O. controla eventos no sistema de

Máquina de estados UNIX O. Sistemas Operacionais 2008/1Profa. Patricia S.O. computação: recursos D. S.O S.O. controla eventos no sistema de Estruturas Processos de Controle (Aula 5) Aula Interrupções Profa. Patricia Gerência fluxo, execução D. O Abstração passada Criação podendo de gerar hw e transição sw (mudança de CostaLPRM/DI/UFES que

Leia mais

Remote Procedure Call. Programação distribuída e paralela (C. Geyer) RPC 1

Remote Procedure Call. Programação distribuída e paralela (C. Geyer) RPC 1 Remote Procedure Call Programação distribuída e paralela (C. Geyer) RPC 1 Autoria Autores C. Geyer Local II-UFRGS Versão V11.4 2014-2 Disciplinas SOII Programação distribuída e paralela (C. Geyer) RPC

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Software Sistema de Entrada/Saída Princípios de Software Tratadores (Manipuladores) de Interrupções Acionadores de Dispositivos (Device Drivers)

Leia mais

Estudo de Caso 2: Windows Vista

Estudo de Caso 2: Windows Vista Faculdades Integradas de Mineiros Curso de Sistemas de Informação Sistemas Operacionais II Estudo de Caso 2: Windows Vista Grupo 4 Helder / Wagner / Frantyeis Junho/2010 O Windows usa uma estratégia Just-In-Time

Leia mais

Sistemas Operacionais I Parte III Estrutura dos SOs. Prof. Gregorio Perez gregorio@uninove.br 2007. Roteiro. Componentes do Sistema

Sistemas Operacionais I Parte III Estrutura dos SOs. Prof. Gregorio Perez gregorio@uninove.br 2007. Roteiro. Componentes do Sistema Sistemas Operacionais I Parte III Estrutura dos SOs Prof. Gregorio Perez gregorio@uninove.br 2007 Roteiro Serviços Estrutura dos Sistemas Operacionais Funções do Sistema Operacional Chamadas do Sistema

Leia mais

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 06: Threads Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o conceito de thread Discutir as APIs das bibliotecas de threads Pthreads, Win32

Leia mais

Capítulo 8 Arquitetura de Computadores Paralelos

Capítulo 8 Arquitetura de Computadores Paralelos Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da

Leia mais

Nível 3 Sistema Operacional

Nível 3 Sistema Operacional Nível 3 Sistema Operacional Universidade Tuiuti do Paraná UTP Faculdade de Ciências Exatas - FACET Tecnologia de Análise e Desenvolvimento de Sistemas Organização de Computadores Prof. André Luiz 1 Nível

Leia mais

Remote Procedure Call

Remote Procedure Call Remote Procedure Call O aumento de complexidade das aplicações, torna desejável um paradigma que permite software distribuído ser programado de maneira similar a aplicações convencionais que executam em

Leia mais

Sistemas Distribuídos RPC

Sistemas Distribuídos RPC Sistemas Distribuídos RPC Disciplina: Sistemas Distribuídos Prof.: Edmar Roberto Santana de Rezende Faculdade de Engenharia de Computação Centro de Ciências Exatas, Ambientais e de Tecnologias Pontifícia

Leia mais

1º Estudo Dirigido. Capítulo 1 Introdução aos Sistemas Operacionais

1º Estudo Dirigido. Capítulo 1 Introdução aos Sistemas Operacionais 1º Estudo Dirigido Capítulo 1 Introdução aos Sistemas Operacionais 1. Defina um sistema operacional de uma forma conceitual correta, através de suas palavras. R: Sistemas Operacionais são programas de

Leia mais

Sistemas Operacionais Processos e Threads

Sistemas Operacionais Processos e Threads Sistemas Operacionais Processos e Threads Prof. Marcos Monteiro, MBA http://www.marcosmonteiro.com.br contato@marcosmonteiro.com.br 1 Estrutura de um Sistema Operacional 2 GERÊNCIA DE PROCESSOS Um processo

Leia mais

Padrões Arquiteturais. Sistemas Distribuídos: Broker

Padrões Arquiteturais. Sistemas Distribuídos: Broker Padrões Arquiteturais Sistemas Distribuídos: Broker Sistemas Distribuídos Tendências: Sistemas Comp. com múltiplas CPUs Redes locais com centenas de hospedeiros Benefícios Economia Desempenho e escalabilidade

Leia mais

Paradigma Cliente/Servidor

Paradigma Cliente/Servidor Paradigma Cliente/Servidor Mário Meireles Teixeira UFMA Departamento de Informática Dezembro, 2012 Comunicação em Sistemas Distribuídos! Os processos em um SD estão lógica e fisicamente separados. Precisam

Leia mais

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos Capítulo 8 Sistemas com Múltiplos Processadores 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos 1 Sistemas Multiprocessadores Necessidade contínua de computadores mais rápidos modelo

Leia mais

Modelos de Arquiteturas. Prof. Andrêza Leite andreza.lba@gmail.com

Modelos de Arquiteturas. Prof. Andrêza Leite andreza.lba@gmail.com Modelos de Arquiteturas Prof. Andrêza Leite andreza.lba@gmail.com Agenda Introdução Arquitetura de Sistemas Distribuídos Clientes e Servidores Peer-to-Peer Variações Vários Servidores Proxy Código Móvel

Leia mais

S.O.: Conceitos Básicos

S.O.: Conceitos Básicos S.O.: Conceitos Básicos Camada de software localizada entre o hardware e os programas que executam tarefas para o usuário; Acessa os periféricos Entrada e Saída Esconde os detalhes do hardware para o programador

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Computação Aula 01-02: Introdução 2o. Semestre / 2014 Prof. Jesus Agenda da Apresentação Definição e surgimento de Sistemas Distribuídos Principais aspectos de Sistemas Distribuídos

Leia mais

Um cluster de servidores de email pode ser usado para servir os emails de uma empresa.

Um cluster de servidores de email pode ser usado para servir os emails de uma empresa. CLUSTERS Pode-se pegar uma certa quantidade de servidores e juntá-los para formar um cluster. O serviço então é distribuído entre esses servidores como se eles fossem uma máquina só. Um cluster de servidores

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Modelo cliente e servidor Slide 2 Nielsen C. Damasceno Modelos Cliente - Servidor A principal diferença entre um sistema centralizado e um sistema distribuído está na comunicação

Leia mais

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 03: Estruturas dos SOs Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com OBJETIVOS Descrever os serviços que um sistema operacional oferece aos usuários e outros sistemas

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Prof. Marcelo de Paiva Guimarães 1 Objetivos Apresentar uma visão geral de processamento distribuído, analisando os tópicos mais importantes sobre sistemas operacionais distribuídos,

Leia mais

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 05 Estrutura e arquitetura do SO Parte 1 Referência: MACHADO, F.B. ; MAIA, L.P. Arquitetura de Sistemas Operacionais. 4.ed. LTC,

Leia mais

Prof. Manuel A Rendón M

Prof. Manuel A Rendón M Prof. Manuel A Rendón M Tanenbaum Redes de Computadores Cap. 1 e 2 5ª. Edição Pearson Padronização de sistemas abertos à comunicação Modelo de Referência para Interconexão de Sistemas Abertos RM OSI Uma

Leia mais

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 1- MODELO DE CAMADAS 1. INTRODUÇÃO A compreensão da arquitetura de redes de computadores envolve a compreensão do modelo de camadas. O desenvolvimento de uma arquitetura de redes é uma tarefa complexa,

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: comunicação orientada por mensagem e comunicação orientada por fluxo Prof. MSc. Hugo Souza Continuando o módulo 03 da primeira unidade, iremos abordar sobre

Leia mais

Redes. Pablo Rodriguez de Almeida Gross

Redes. Pablo Rodriguez de Almeida Gross Redes Pablo Rodriguez de Almeida Gross Conceitos A seguir serão vistos conceitos básicos relacionados a redes de computadores. O que é uma rede? Uma rede é um conjunto de computadores interligados permitindo

Leia mais

Aula 3. Sistemas Operacionais. Prof: Carlos Eduardo de Carvalho Dantas (carloseduardoxpto@gmail.com) http://carloseduardoxp.wordpress.

Aula 3. Sistemas Operacionais. Prof: Carlos Eduardo de Carvalho Dantas (carloseduardoxpto@gmail.com) http://carloseduardoxp.wordpress. Sistemas Operacionais Aula 3 Prof: Carlos Eduardo de Carvalho Dantas (carloseduardoxpto@gmail.com) http://carloseduardoxp.wordpress.com Nunca cone em um computador que você não pode jogar pela janela.

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos 1 de 9 Sistemas Distribuídos O que é um sistema distribuído? Um conjunto de computadores autonomos a) interligados por rede b) usando um software para produzir uma facilidade de computação integrada. Qual

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Introdução Aplicações em rede de computadores As redes de computadores atualmente estão em todos os lugares. Ex.: Internet, redes de telefones móveis, redes corporativas, em fábricas,

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com Mecanismos de Comunicação Voltando ao exemplo da calculadora... Rede local

Leia mais

Redes de Computadores (PPGI/UFRJ)

Redes de Computadores (PPGI/UFRJ) Redes de Computadores (PPGI/UFRJ) Aula 1: Apresentação do curso e revisão de interface de sockets 03 de março de 2010 1 2 O que é a Internet 3 4 Objetivos e página do curso Objetivos Apresentar a motivação,

Leia mais

Remote Procedure Calls 1

Remote Procedure Calls 1 3 Remote Procedure Calls 1 Neste capítulo, iremos abordar aspectos subjacentes ao mecanismo de RPCs, tais como: seu funcionamento, peculiaridades, passagem de parâmetros, binding, tratamento de erros,

Leia mais

Capítulo 2. Charm++ 16

Capítulo 2. Charm++ 16 2 Charm++ O Charm++ é uma linguagem orientada a objetos para programação paralela baseada em C++ (34). Ela possui uma biblioteca de execução para suporte a computação paralela que se chama Kernel do Charm

Leia mais

Mac OS X Felipe Gomes Lacerda Pedro Garcia Freitas 23 de novembro de 2009

Mac OS X Felipe Gomes Lacerda Pedro Garcia Freitas 23 de novembro de 2009 Mac OS X Felipe Gomes Lacerda Pedro Garcia Freitas 23 de novembro de 2009 Modelo do kernel Microkernel: Uso mínimo de espaço de kernel Fornece apenas os mecanismos básicos; as políticas ficam a cargo do

Leia mais

Padrões de Projeto Implementados em Infraestrturas de Componentes

Padrões de Projeto Implementados em Infraestrturas de Componentes Padrões de Projeto Implementados em Infraestrturas de Componentes Paulo Pires paulopires@nce.ufrj.br http//genesis.nce.ufrj.br/dataware/hp/pires 1 distribuídas baseadas em componentes Comunicação transparente,

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Aula 4 Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação - UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação - UFJF Migração de Código Em

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Sistemas Operacionais. Alexandre Meslin meslin@inf.puc-rio.br

Sistemas Operacionais. Alexandre Meslin meslin@inf.puc-rio.br Sistemas Operacionais Alexandre Meslin meslin@inf.puc-rio.br Ementa Apresentação do curso Cap1 - Visão Geral Cap2 - Conceitos de Hardware e Software Cap3 - Concorrência Cap4 - Estrutura do Sistema Operacional

Leia mais

Sistemas de Arquivos Distribuídos. Universidade Federal do ABC Prof. Dr. Francisco Isidro Massetto

Sistemas de Arquivos Distribuídos. Universidade Federal do ABC Prof. Dr. Francisco Isidro Massetto Sistemas de Arquivos Distribuídos Universidade Federal do ABC Prof. Dr. Francisco Isidro Massetto Conceitos Dois tipos Stateless Statefull Statefull Mantém informações de estado Nome do arquivo Ponteiro

Leia mais

Cap 03 - Camada de Aplicação Internet (Kurose)

Cap 03 - Camada de Aplicação Internet (Kurose) Cap 03 - Camada de Aplicação Internet (Kurose) 1. Qual a diferença entre um Programa de computador e um Processo dentro do computador? R. Processo é um programa que está sendo executado em uma máquina/host,

Leia mais

SO Sistemas Operacionais

SO Sistemas Operacionais GOVERNO DO ESTADO DO RIO DE JANEIRO FUNDAÇÃO DE APOIO A ESCOLA TÉCNICA ESCOLA TÉCNICA ESTADUAL REPÚBLICA SO Sistemas Operacionais Curso de Informática ETE REPÚBLICA - Rua Clarimundo de Melo, 847, Quintino

Leia mais

COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC. Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla

COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC. Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla 1 1. Conceitos Básicos a. Invocação remota (RPC/RMI)

Leia mais