mc714 – sistemas distribuídosleandro/ensino/mc714/1s2016/aulas/processos.pdfnos sistemas...

76
Leandro Villas MC714 - Sistemas Distribuídos

Upload: dokhanh

Post on 10-Dec-2018

232 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

MC714 - Sistemas Distribuídos

Page 2: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Processos e Threads

Comunicação

Aula de Hoje

Page 3: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

O que é um Processo

Um processo é uma atividade (ou tarefa) de um programa, que contém o código e dados de uma atividade

Atividades: leitura de dados, escrita de dados, cálculos no processador, comunicação com o usuário, comunicação com um BD, comunicação com a rede interna ou externa, entre outras

Page 4: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Processo

Um processo é uma entidade a nível de kernel, que possui um espaço de endereçamento

O único modo para seu programa acessar a dados na estrutura (contexto) de um processo, consultar ou mudar seu estado, é via uma chamada de sistema

Page 5: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Contexto de um Processo

Um identificador do processo Um segmento de código Um segmento de dados Os valores dos registradores da CPU Um contador de programa lógico Uma pilha de execução O estado do processo Informações para escalonamento (prioridade, tempo) Dados para contabilização de uso Recursos alocados: arquivos, portas, eventos, outros

Page 6: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Processos

Troca de Contexto

Page 7: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Processos

Troca de Contexto

Transfere o controle da CPU

de um processo para outro

Page 8: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Processos

Troca de Contexto

Transfere o controle da CPU

de um processo para outro

Tempo gasto

Page 9: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Processos

Troca de Contexto

Transfere o controle da CPU

de um processo para outro

Tempo gasto

Desempenho

Page 10: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Processos

Desempenho Threads

Page 11: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Surgimento de Threads

Com o surgimento de processadores de mais alto desempenho, uma nova unidade de processamento concorrente pode ser definida dentro do próprio processo, novos fluxos de execução e assim pode-se ter múltiplos fluxos de execução (múltiplas threads) num mesmo processo

Cada fluxo de execução é chamada Thread

Page 12: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

É uma forma de um processo dividir a si mesmo em

duas ou mais tarefas que podem ser executadas

concorrencialmente

Threads

Page 13: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

É uma forma de um processo dividir a si mesmo em

duas ou mais tarefas que podem ser executadas

concorrencialmente

Cada thread tem o mesmo contexto de software e

compartilha o mesmo espaço de memória (endereçado

a um mesmo processo-pai), porém o contexto de hardware é diferente

Threads

Page 14: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

É uma forma de um processo dividir a si mesmo em

duas ou mais tarefas que podem ser executadas

concorrencialmente

Cada thread tem o mesmo contexto de software e

compartilha o mesmo espaço de memória (endereçado

a um mesmo processo-pai), porém o contexto de

hardware é diferente

Um dos benefícios do uso das threads advém do fato do processo poder ser dividido em várias threads

Threads

Page 15: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Threads

Atualmente, um processo consiste em um ambiente de execução, contendo uma ou mais threads

Thread: unidade de processamento concorrente nos sistemas operacionais atuais, dentro de um processo

Page 16: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Contexto de uma Thread

Um identificador da Thread Um segmento de código Um segmento de dados Os valores dos registradores da CPU O contador de programa Uma pilha de execução O estado da Thread Informações para escalonamento (prioridade, ...) Dados para contabilização de uso Recursos alocados que pertencem a processos: arquivos, portas, eventos, outros

Page 17: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Threads

Definição:

Threads (linhas de execução) são atividades (tarefas internas) concorrentes executadas dentro de um processo

Um processo pode ter uma ou mais threads

Page 18: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Três Processos - cada um com uma Thread

Cada thread tem seu espaço de endereçamento

Contador de Programa

Thread

Processo

Page 19: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Um Processo com três Threads

Todas num mesmo espaço de endereçamento

Multiplas Threads

Processo

Page 20: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Processos e Threads

Um confeiteiro

O confeiteiro é o processador

Um Livro de Receitas é um processo

Uma receita corresponde a uma Thread

Fazer um bolo de aniversário

Ingredientes: farinha, ovos, açucar, ...

Os ingredientes são os dados

Page 21: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Processo e Thread

O processo é a atividade que consiste em nosso confeiteiro ler a receita (Thread), buscar os ingredientes (Thread), bater o bolo (Thread) e cozinhar o mesmo (Thread)

Page 22: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Alternando para outro processo

Confeiteiro, Filho do confeiteiro, Abelha

Ferrada da abelha no filho do confeiteiro

Confeiteiro precisa socorrer o filho

O confeiterio registra onde estava na receita (o estado e o contexto do processo são salvos)

Page 23: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Alternando para outro processo

Confeiteiro procura um livro de pronto-socorro (outro processo)

Segue a orientações do livro

O Confeiteiro alterna do processo (Livro de Receitas para Fazer o Bolo) para outro, de prioridade mais alta (Livro de Pronto Socorro), cada um sendo um processo diferente (receita e livro)

Page 24: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Processo “Livro de Pronto Socorro”

Threads ???

Ler o procedimento médico

Desinfetar o local da picada

Colocar curativo

Page 25: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Processo é uma atividade

Quando a picada for tratada, o confeiteiro volta a fazer o seu bolo, continuando do ponto onde parou, quando abandonou o processo (Fazer o Bolo) A ideia é que processo é um tipo de atividade que é concorrente a outros processos E em cada atividade (Livro de Receitas / Livro Pronto-Socorro) existem tarefas, para “Fazer um Bolo” ou “Um Atendimento Médico”, que correspondem às threads

Page 26: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Escalonamento de Threads

Todo SO tem um programa chamado Scheduler (o escalonador do SO) que seleciona, num dado instante, uma thread que deve ser executada pelo processador, alternando este entre threads

Page 27: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Algoritmo de Escalonamento

Define a ordem de execução de processos/ threads com base em uma fila ou prioridade da thread

Processos/Threads do sistema SO e de aplicações críticas exigem maior prioridade Em geral, os sistemas operacionais adotam uma política para atender a todas os processos/threads de maneira justa

Page 28: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Escalonamento por Time-Slicing

Fracionamento de tempo do processador

Divide o tempo do processador entre threads de igual prioridade

Implementado por um Timer (hardware) o qual interrompe o processamento periodicamente, para permitir o scheduler buscar uma outra thread para executar

Page 29: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Escalonamento Time-Slicing

Por Processo: escalonador aloca tempo para

execução dos processos, os quais definem como

usar este tempo para executar suas threads

P1 P2 P3

t11 t12 t21 t22 t23 t31 t32

Por Thread: escalonador aloca tempo e define a ordem na qual as threads serão executadas

t11 t31 t21 t32 t23 t12 t22

Page 30: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Escalonamento Pre-Emptivo

Baseado nas prioridades dos processos/threads

Deve ser implementado para garantir que um processo/thread de alta prioridade possa executar logo que torna-se pronto, mesmo que signifique suspender a execução de um processo de mais baixa prioridade

Page 31: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Ciclo de Vida de um Processo/Thread

Criado

Pronto

Rodando

Morto

Suspenso

Page 32: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Estados de um Processo/Thread Pronto: pronto para ser executado, mas sem o direito de usar o processador

Rodando: sendo executado pelo processador

Suspenso: aguarda operação de I/O, liberação de um recurso ou fim de tempo de espera em uma fila

Dormindo: em espera temporária

Bloqueado: aguarda I/O

Em Espera: aguarda uma condição ser satisfeita

Page 33: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Mudança de Estado de um Processo

Processos/Threads trocam de estado de acordo com o:

Algoritmo de escalonamento

Troca de mensagens entre esses

Interrupções de hardware ou software

Page 34: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Threads

Da mesma forma que os processos

Cada thread tem seu estado e segue um

ciclo de vida particular

A vida da thread depende do seu processo

Page 35: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Troca de Contexto

Quando duas threads de um mesmo processo

se alternam no uso do processador, ocorre

uma troca de contexto parcial

Numa troca parcial, o contador de programa,

os registradores e a pilha devem ser salvos

Page 36: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Processos x Threads

Troca de Contexto: Completa | Parcial

Comunicação: Inter-Processo | Inter-Threads

Suporte em S.O.’s: Quase todos | Os mais atuais

Suporte em Linguagem de Programação: Quase todas | As mais recentes

Page 37: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

É atrativa dado que facilitam muito a comunicação

Possibilidade de manter múltiplas conexões lógicas ao

mesmo tempo

Threads em Sistemas Distribuídos

Page 38: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

É atrativa dado que facilitam muito a comunicação

Possibilidade de manter múltiplas conexões lógicas ao

mesmo tempo

Cliente

Esconder atrasos de comunicação

Iniciar comunicação e prosseguir com processamento

independente

Ex. browsers web

Começam exibir dados enquanto eles ainda estão entrando

Threads em Sistemas Distribuídos

Page 39: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Conforme vimos, sistemas distribuídos que operam em

redes de grandes distância, devem buscar algum

mecanismo de ocultar a latência de obtenção de

informações → Transparência!

Consideremos um cliente Web...

Como implementar multithreading?

Clientes Multithreads

Page 40: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Em um browser Web...

Um documento Web consiste em um grande número de objetos

A busca de cada objeto de uma página HTML será feita após

estabelecimento de uma conexão TCP

Estabelecimento e leitura de dados são operações

bloqueadoras

Com uma conexão persistente com paralelismo:

Requisições são feitas sem que os objetos precedentes tenham

chegados no cliente

Cliente é capaz de manipular diversos fluxos em paralelo → Threads

Clientes Multithreads

Page 41: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Caso os dados estejam espalhados por diversas

réplicas de servidores ...

A utilização de threads possibilita os clientes estabelecerem

diversas conexões, em paralelo, com o objetivo de

disponibilizar um único documento

Determina efetivamente que o documento Web inteiro seja

totalmente exibido em tempo muito menor do que com um

servidor não replicado

Clientes Multithreads

Page 42: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

• Simplifica consideravelmente o código do servidor

• Facilita o desenvolvimento paralelo

Servidores Multithreads

Page 43: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

• Simplifica consideravelmente o código do servidor

• Facilita o desenvolvimento pararelo

• Exemplo: servidor de arquivos

Servidores Multithreads

Page 44: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

• Simplifica consideravelmente o código do servidor

• Facilita o desenvolvimento pararelo

• Exemplo: servidor de arquivos

Servidores Multithreads

Page 45: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Comunicação

Page 46: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

• “Coração” de qualquer Sistema Distribuído

Comunicação entre Processos

Page 47: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

• “Coração” de qualquer Sistema Distribuído

• Como processos em diferentes máquinas trocam

informações?

• Devido à ausência de memória compartilhada, toda

comunicação em SDs é baseada no envio e recebimento

de mensagens (de baixo nível)

Comunicação entre Processos

Page 48: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

• “Coração” de qualquer Sistema Distribuído

• Como processos em diferentes máquinas trocam

informações? • Processo A monta uma MSG em seu próprio espaço de

endereçamento

• Executa uma chamada de sistema, SO envia a MSG pela rede até o

Processo B

• A e B precisam concordar com significado de bits

Comunicação entre Processos

Page 49: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

• “Coração” de qualquer Sistema Distribuído

• Como processos em diferentes máquinas trocam

informações? • Processo A monta uma MSG em seu próprio espaço de

endereçamento

• Executa uma chamada de sistema, SO envia a MSG pela rede até B

• A e B precisam concordar com significado de bits enviados

• Vários acordo: • Quantos volts são necessários para sinalizar um bit 0 e um bit 1?

• Como o receptor sabe qual é o último bit da mensagem?

• Como o receptor pode detectar se uma msg foi danificada ou perdida?

• Qual é o comprimento dos números, cadeias e outros itens de dados, e

como eles são representados?

Comunicação entre Processos

Page 50: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

International Organization for Standardization – ISO

Modelo de referência para interconexão de sistemas

abertos (ISO OSI ou Modelo OSI)

Modelo OSI

Cada camada lida com um aspecto específico

• Problema quebrado em pedaços gerenciados independentemente

Cabeçalhos são adicionados em cada nível

Transmissão pela camada física

Cada camada retira e examina seu próprio cabeçalho

Modelo OSI

Page 51: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Pilha de protocolos

Modelo referência != protocolos utilizados

• Protocolos desenvolvidos para internet (TCP/IP) são

os mais usados

• 3 camadas inferiores implementam funções básicas

de rede

• Camada Física

• Camada de Enlace

• Camada de Rede

Modelo OSI

Page 52: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Responsável pelo envio de bits

Questões fundamentais na camada física

Quantos volts usar para 0 e para 1

Quantos bits por segundo

Ambas as direções simultaneamente?

Tamanho/forma do conector, número de pinos...

Trata da padronização das interfaces elétrica, mecânica e

de sinalização

Camada Física

Page 53: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Agrupar bits em unidades (quadros) e providenciar

para que cada quadro seja corretamente recebido

Camada de Enlace

Page 54: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Agrupar bits em unidades (quadros) e providenciar

para que cada quadro seja corretamente recebido

Coloca padrão especial de bits no início e no final de

cada quadro

Camada de Enlace

Page 55: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Agrupar bits em unidades (quadros) e providenciar

para que cada quadro seja corretamente recebido

Coloca padrão especial de bits no início e no final de

cada quadro e calcula uma soma de verificação

Quando o quadro chega, o receptor soma novamente

a soma de verificação dos dados e compara com a

soma anexada

Camada de Enlace

Page 56: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Agrupar bits em unidades (quadros) e providenciar

para que cada quadro seja corretamente recebido

Coloca padrão especial de bits no início e no final de

cada quadro e calcula uma soma de verificação

Quando o quadro chega, o receptor soma novamente

a soma de verificação dos dados e compara com a

soma anexada

Número no cabeçalho para identificar sequencia

Camada de Enlace

Page 57: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Em uma LAN, em geral não há necessidade de o

remetente localizar o receptor

Remetente coloca quadro na rede e o receptor o retira

Em uma rede de longa distância?

Para ir do remetente até o receptor, uma mensagem talvez

tenha de fazer alguns saltos escolhendo, em cada um, uma

linha de saída para usar.

A questão de como escolher o melhor caminho é

denominada roteamento e é, em essência a tarefa primária

da camada de rede.

Camada de Enlace

Page 58: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Redes diferentes: mensagem pode fazer saltos

Como definir um caminho entre um par origem-

destino?

Camada de Rede

Page 59: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Redes diferentes: mensagem pode fazer saltos

Como definir um caminho entre um par origem-

destino?

Roteamento: tarefa primária da camada de rede

Rota mais curta nem sempre a melhor

Camada de Rede

Page 60: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Redes diferentes: mensagem pode fazer saltos

Como definir um caminho entre um par origem-

destino?

Roteamento: tarefa primária da camada de rede

Rota mais curta nem sempre a melhor

Mais utilizado: IP – internet protocol

Roteamento independente, por pacote

Pacote – termo para uma mensagem na camada de rede

Camada de Rede

Page 61: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Responsável pela comunicação lógica entre diferentes

processos sendo executados em diferentes hosts

(fim-a-fim)

Quebra mensagem, numera e envia

Conexões de transporte confiáveis: rede orientada a

conexão ou não – sequencia correta garantida ou

não. Camada de transporte ordena.

Transmission Control Protocol – TCP – conexão

Universal Datagram Protocol – UDP – sem conexão

Camada de Transporte

Page 62: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

• Internet agrupou camadas superiores (apresentação,

sessão, aplicação) em uma única camada

• Sessão: controle de diálogo – sincronização – pontos

de verificação em transferências

• Apresentação: significado dos bits – definir campos

da mensagem

• Aplicação: um conjunto de aplicações padronizadas

• Engloba qualquer aplicação que não se ajuste a uma das

camadas subjacentes

• Da perspectiva do modelo OSI, middlewares são

aplicações

Camadas adicionais

Page 63: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Camada de software que é situada logicamente entre

uma camada de nível mais alto, composta de

usuários e aplicações e uma camada subjacente, que

consiste de facilidades básicas de comunicação

Inúmeros protocolos para suportar serviços de

middleware:

Autenticação: não estão vinculados a uma aplicação

especifica

Protocolo distribuído de bloqueio de recurso

Comunicação: Serviços de comunicação de alto nível

Camada de Middleware

Page 64: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Camada de Middleware

Page 65: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Quais são as “alternativas de comunicação” entre

processos executando na mesma máquina ou

máquinas diferentes?

Sockets

IPC “tradicionais”

(e.g., pipe, socket,

memória compartilhada,

fila de mensagens, etc)

Middleware

Page 66: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Antes de conhecermos os elementos que

compõem o middleware, vamos ver como

alguns funcionam (visão do programador)

Camada de Middleware

Page 67: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Camada de Middleware

Page 68: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Socket não é middleware, mas pode ser usado para

construir aplicação distribuída (haja disposição!)

Construir aplicação distribuída usando socket é

equivalente a construir aplicações comuns usando

assembly

Socket: ponto final de uma comunicação full-duplex

entre dois processos

Processo → casa / Socket → Porta

Socket: Porta entre o processo da aplicação e o

protocolo de transporte

Vamos começar com Sockets

Page 69: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

São abstrações que representam pontos de

comunicação através dos quais processos se

comunicam

Para que dois computadores possam trocar

informações

Cada um utiliza um socket

Sockets

Processo

socke

t TCP ou UDP Sistema

Operacional

Aplicação Processo

socke

t TCP ou UDP

Rede

Page 70: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Os sockets adotam o paradigma cliente/servidor.

Sockets

Que horas são?

São 10:20 da manhã.

CLIENTE SERVIDOR

Requisita

serviço

Fornece

serviço

Os papeis de clientes e servidores não são fixos em processos:

um servidor pode ser cliente de outro serviço.

Page 71: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Na Internet, cada máquina têm um endereço único:

Endereço IP

Cada endereço IP possui portas associadas, que

representam conexões individuais com este endereço

echo(7) ftp(21) telnet(23) http(80) pop3(110)

Definidas pela IANA (Internet Assigned Numbers Authority)

Para se comunicar com um servidor, um cliente precisa:

• Endereço IP da máquina onde o servidor executa

• Número da porta que o servidor escuta. Ex: 221.13.45.6:80

Binding: quando o socket é criado, uma porta deve ser

associada

Sockets na Internet

Page 72: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Modos de Operação

Orientado a conexão: TCP (Transport Control Protocol)

As mensagens são enviadas através de um canal de comunicação

Canal de Comunicação

Page 73: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Modos de Operação

Orientado a conexão: TCP (Transport Control Protocol)

As mensagens são enviadas através de um canal de comunicação

Sem conexão: UDP (User Datagram Protocol) As mensagens de tamanho fixo (datagramas) são transmitidas individualmente para destinos especificos

Canal de Comunicação

Page 74: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Não existe a transparência de distribuição: toda a

comunicacão está explícita, através de

procedimentos send e receive

Funções mais sofisticadas devem ser feitas na

camada de aplicação

Por que não oferecer comunicação de alto nível,

independente da aplicação?

Sockets

Page 75: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Solução!

Middleware de comunicação

Tipos:

Chamada de Procedimento Remoto

Comunicação orientada a Mensagem

Comunicação Orientada a Fluxo

Tipos de Comunicação

Page 76: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Processos.pdfnos sistemas operacionais atuais, dentro de um processo . Leandro Villas Contexto de uma Thread Um identificador

Leandro Villas

Crie um sistema de chat cliente-servidor com múltiplos

clientes Opcional: linguagem de programação Java utilizando Socket e Thread

Este programa deve ter um servidor que permita que vários cliente se conectem e conversem entre si. Quando o usuário A enviar uma mensagem para o servidor ela deve ser retransmitida para todos os clientes conectados

Enviar a solução por e-mail até 04/04/2016

Assunto: [MC714A] – Teste 03

Teste 03