Um cliente de cada vez:



Documentos relacionados
Introdução ao Modelos de Duas Camadas Cliente Servidor

Disciplina de Sistemas Distribuídos. Sincronização em SD. Prof. M.Sc. Alessandro Kraemer Kraemer

Ferramentas de Modelação e Análise de Sistemas baseadas em Redes de Petri (RdP)

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

Grupo I [4v] executaprograma();

Sistemas Distribuídos. Aleardo Manacero Jr.

Sistemas Operacionais Processos e Threads

Profs. Deja e Andrei

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Grupo I [4v] b. [0,6v] De que forma é que o escalonador do Linux tenta minimizar o impacto desta limitação?

Visão do Usuário da DSM

Sistemas Operativos /2006. Trabalho Prático v1.0

5 Estudo de caso: utilizando o sistema para requisição de material

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

Tipos de Servidores. Servidores com estado

Arquitetura de Sistemas Operacionais

Fundamentos de Banco de Dados

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais

Java Mail Server. Manual do Utilizador

Sistemas Operacionais. Conceitos de um Sistema Operacional

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Impressão e servidores de impressão

Universidade da Beira Interior. Sistemas Distribuídos

Engenharia de Software Sistemas Distribuídos

Licenciatura em Engenharia Informática Sistemas Distribuídos I 2ª chamada, 6 de Julho de º Semestre, 2004/2005

Programação de Sistemas

Programação de Sistemas

Arquitetura de Sistemas Operativos

Consistência Eventual - Sistemas Distribuidos e Tolerância a Falhas

Sistemas Cliente-Servidor

Bases de Dados. Lab 1: Introdução ao ambiente

Agendamento de Produtos de Uso Contínuo

Escalonamento no Linux e no Windows NT/2000/XP

Ter um site na internet traz muitas vantagens para uma confeitaria:

Sistemas Operacionais

How TO: Proteger o seu PC com o Veeam Endpoint Protection

5. Métodos ágeis de desenvolvimento de software

Cálculo utilizando variáveis do tipo DATA

XD Fase B - Novas Implementações

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Guia de utilização. Gestão de Mensagens. Março 2009

Sincronização e Comunicação entre Processos. Adão de Melo Neto

Processos. Paulo Sérgio Almeida 2005/2006. Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho

LEIC/LERC 2012/13 2º Teste de Sistemas Operativos 15/Janeiro/2013

Processos. Estados principais de um Processo: Contexto de um Processo. Nível de um Processo.

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

Documento de Análise e Projeto VideoSystem

Ciência de Computadores Sistemas Distribuídos e Móveis

Alta Disponibilidade na IPBRICK

Processos e Threads (partes I e II)

Sincronização. Cooperação entre Processos

Escola Superior de Tecnologia de Setúbal. Projecto Final

Disciplina de Banco de Dados Introdução

Máquina de estados UNIX O

Regulamento de Vigilâncias de Provas Escritas de Avaliação do DEEC

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

Manual Gespos Passagem de Dados Fecho de Ano

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 04 - Concorrência. Cursos de Computação

ENHANCED SERVER FAULT- TOLERANCE FOR IMPROVED USER EXPERIENCE. André Esteves nº3412 David Monteiro

Análises Geração RI (representação intermediária) Código Intermediário

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Sistema de arquivos. Prof. Valeria M. Bastos Prof. Antonio Carlos Gay Thomé 13/06/2012 1

1. Discute as vantagens e desvantagens dum sistema de memória paginada, indicando também a importância do sistema dispôr duma memória cache.

SISTEMAS OPERACIONAIS

7 Processos. 7.1 Introdução

Programação Concorrente em java - Exercícios Práticos Abril 2004

Roteamento em Redes de Computadores

Padrões Arquiteturais e de Integração - Parte 1

MANUAL UTILIZADOR SERVIÇO FTP

Serviço de Localização Celular Manual de utilização do cartão

Manual do Aluno. O Moodle é um sistema que gerencia ambientes educacionais de aprendizagem que podem ser denominados como:

Manual UNICURITIBA VIRTUAL para Professores

Sistemas Operativos. 4ª Geração (a partir de 70 )

COMPETÊNCIAS BÁSICAS EM TIC NAS EB1

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Ao ligar o equipamento, você verá a mensagem abaixo, o objetivo dela é fazer a configuração mínima para LOGAR ao servidor da Internet.

GESTÃO DE INFORMAÇÃO PESSOAL OUTLOOK (1)

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 1. Prof. Rafael Dias Ribeiro. M.Sc.

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.

Udesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Alexandre Veloso

Programação Concorrente

Entendendo como funciona o NAT

SISTEMAS OPERACIONAIS

Replicação de servidores

TOTVS Série 1 Varejo (Simples) - Módulo e-commerce

Transcrição:

Um cliente de cada vez: envia-recebe resposta pedido recebe trata envia o cliente bloqueia-se até que: o servidor receba a mensagem, a trate e lhe responda outros clientes aguardam pela vez Clientes: enviam pedidos aos servidores, aguardam resposta (ou não) Servidor: aguarda pedidos dos clientes, trata cada pedido recebido, envia resposta (ou não) os clientes vão pondo pedidos, independentes do ritmo a que o servidor os trata o servidor trata um pedido de cada vez Pode ser programada por: um modelo de comunicação baseada em mensagens (quer o sistema seja centralizado ou distribuído) um modelo de comunicação baseada em memória partilhada (só se o sistema for centralizado mono- ou multiprocessador) Os pedidos dos clientes e as respostas dos servidores são enviados através da invocação das operações de troca de mensagens: envia(mensagem, ) recebe(mensagem, ) Cliente: /*pedir*/ /*msgpedido*/ envia(msg); Servidor: /*aguardar*/ recebe(msgp); /*pedidomsgp*/ tratar(); /*se há resposta */ /*msgresposta*/ recebe(msgr); envia(msg); /*respostamsgr*/

Fila de pedidos em memória partilhada: reservar memória e associá-la ao processo (shmget, shmat no Unix) implementar funções para inserir e remover pedido, numa fila nessa memória estas permitem implementar operações equivalentes às envia e recebe ~ envia P(exmut); insere-pedido(); V(exmut); V(pedidos); /*aguarda resposta*/ P(pedidos); P(exmut); remove-pedido(); V(exmut); tratar(); /*responde*/ ~ recebe Uma Fila de Pedidos em Memória Partilhada Semáforo contador: pedidos, inicial 0 Semáforo exclusão mútua: exmut inicial 1 Pseudo-código do ciclo principal: //efectua serviço: a não ser que o tratamento de cada pedido seja "imediato" por exemplo, envolva apenas a simples consulta de uma estrutura em memória o tratamento sequencial dos pedidos pode originar apreciáveis tempos de espera Exemplo: pedidos concorrentes de 10 clientes, cada um demora 1s a tratar o primeiro é atendido em 1s o último demora 10s!! 1. pedidos de tratamento "imediato" 2. pedidos que demoram um tempo apreciável, mas dentro de limites conhecidos (p.ex. quando envolvem acessos a disco) 3. pedidos cujo tempo de tratamento é indeterminado. Exemplos: operações que dependem do próprio pedido ou de entidades externas ao serviço serviços que envolvem outros Exemplo: um cliente faz um pedido a um servidor S1 S1, por sua vez, precisa de pedir a um outro servidor S2 que realize uma parte do tratamento pedido o servidor S2 pode demorar um tempo imprevisível a responder a S1 por exemplo, devido a sobrecarga de pedidos no sistema, num dado momento.

cliente 1 cliente 2 pedido recebe trata envia operação demorada p.ex. entidade externa Um servidor sequencial: quando tratam um pedido, todos os pedidos de outros clientes ficam pendentes (mesmo que tenham pedidos "imediatos") Solução: usar a concorrência na implementação do servidor o servidor é um programa concorrente: conjunto de cada processo trata um pedido em concorrência com os restantes pedidos clientes " O servidor como um conjunto de concorrentes, que cooperam, distribuindo entre si o tratamento dos pedidos feitos por múltiplos clientes. C 1 C 2 C 3 pedidos pendentes Serv 1 Serv 2 servidores # Usando mensagens fila de mensagens (caixa de correio), gerida pelo SO Usando memória partilhada fila de pedidos em memória partilhada, gerida por todos com o auxílio de semáforos C 4 $ Como organizar os vários quando são criados como distribuem os pedidos quando terminam Várias abordagens criação dinâmica dos, quando necessário criação de um conjunto de logo no início etc % & Uma organização possível: um processo "vigilante" está atento à chegada de novos pedidos para cada pedido cria um "trabalhador", que atende o pedido depois de tratar o pedido, o processo "trabalhador" termina pedidos concorrentes são tratados por trabalhadores concorrentes

Pseudo-código do ciclo principal: if (fork() == 0) //efectua serviço: exit(0) Vantagens é fácil distribuir os pedidos pelos o servidor adapta-se aos pedidos concorrentes existentes Desvantagens a criação de um processo tem um custo pode estar constantemente a criar e terminar pode levar a que tenha muitos em execução & Outra possível organização do servidor: No início são criados N trabalhadores A distribuição dos pedidos pode ser: por um processo vigilante que distribui os pedidos via o próprio mecanismo de comunicação (p.ex. uma fila de mensagens de onde todos lêem) Cada trabalhador executa um ciclo de tratamento de pedidos, sem terminar Pseudo-código do ciclo principal: for (i=0; i<n-1; i++) if ( fork()==0 ) break; //efectua serviço: ' & Vantagens os já estão criados são reaproveitados Desvantagens a distribuição de trabalho pode ser complicada qual o número de trabalhadores ideal? poucos menos pedidos tratados muitos desperdício de recursos Outras possibilidades, exemplo: começar com poucos trabalhadores conforme o número de pedidos que afluem ao servidor esteja num crescendo ou num diminuendo, assim: vão-se criando novos trabalhadores ou vão-se deixando terminar alguns.

Estes servidores têm de se manter coerentes (partilham informação) pode ser difícil se há alterações nos dados do serviço Partilham memória? ficheiros/bd? sincronizam-se? Podemos por em causa, para certos casos, o uso de independentes Processos em que todos os recursos se mantém partilhados: memória, I/O, etc OU várias execuções dentro do mesmo processo: vários PC, Stack Isto é: Processos leves ou fluxos de execução (em inglês: threads)