Please enable JavaScript.
Coggle requires JavaScript to display documents.
Comunicação entre tarefas - Coggle Diagram
Comunicação entre tarefas
Objetivos
Em alguns as instruções sequencias não são as mais eficientes para solucionar problemas, um caminho a ser tomada e implementar tarefas independentess que cooperam entre si.
Uso de computadores multiprocessador:
Programas sequencias executam um fluxo de instrução por vez (não importa o hardware), para aumentar a essa velocidade de execução esse fluxo é quebrado em varias tarefas cooperantes.
Modularidade:
Sistemas grandes são melhores organizados quando são divididos em módulos, assim cada modulo fica responsável por tarefas interdependes e podendo cooperar entre si.
Atender vários usuários simultâneos:
bancos de dados, servidores de e-mail, atenderiam um chamado de cliente por vez, tornaria esse sistema um caos, sendo implementado com vários processos de threads.
Construção de aplicações interativas:
editor de texto, jogos, navegadores são exemplos de aplicações que precisam de de interação em tempo d comando, sendo inviável construi-las de forma sequencial
Tarefas precisam se
comunicar
(para que possam cooperar) compartilhando informações necessárias para realização das tarefas e tarefas precisam ser
coordenas
, para que os resultados sejam os que se espera
Escopo da comunicação
Tarefas cooperantes precisam trocar informações entre si, exemplos:
Em navegadores quando o usuário aperta os botões stop ou reload, o navegador precisa informar as demais tarefas a ação executada
Quando o usuário arrasta ou copia um texto da Web para um bloco de notas
Implementação
Se as tarefas estão no mesmo processo, são facilmente implementadas usando variáveis globais comuns.
Se as tarefas estão em processos diferentes, não existe variáveis compartilhas, o núcleo do SO faz o intermédio entre elas.
Aspectos da comunicação
Comunicação direta :
a comunicação básica entre tarefas se por enviar dados para destino indicado e receber dados da origem
Comunicação indireta :
Emissor e receptor da mensagem não se conhecem (não interagem diretamente), se relacionam através de um canal de comunicação
Sincronismo
Semissíncrona (ou semibloqueante):
Primitivas de comunicação semissíncronas, tem um comportamento bloqueante durante um prazo predefinido (o prazo se esgotando sem a comunicação ocorrida, a primitiva encerra com indicação de erro).
Síncrona (ou bloqueante):
Operações de envio e recepção bloqueiam tarefas envolvidas até a conclusão da comunicação
Assíncrona (ou não-bloqueante):
Em sistemas de comunicação assíncrona, primitivas de envio e recepção não são bloqueantes, ou seja caso a comunicação não seja possível naquele momento a operação retornar uma indicação de erro. Caso o emissor e o receptor trabalhem de forma assíncrona é necessário criar um canal
buffer
, para armazenar dados de comunicação entre os canais.
Formato de envio
existem duas formas Informações serem enviadas pelo emissor ao receptor, são elas :
Sequência de mensagens :
independentes, cada um com seu próprio conteúdo
Neste modelo cada mensagem consiste num pacote de dados que pode ser tipado ou não, o pacote pode ser recebido ou desacatado pelo receptor (não podem receber meia mensagem)
Fluxo sequencial :
fluxo continuo de dados (imita um arquivo com acesso sequencial)
O canal é considerado um "arquivo", onde o emissor escreve os dados no canal e receptor lê esses dados respeitando a ordem de envio
Capacidade dos canais
Capacidade infinita (n = ∞):
O emissor sempre pode enviar dados, esses dados serão armazenados no buffer deste canal enquanto o receptor não consumir.
Capacidade infinita (n = ∞):
O emissor pode enviar uma quantidade (n) finita de dados sem que o o receptor os consuma (maioria dos SOs operam com essa capacidade finita)
Capacidade nula (n = 0):
O canal não pode armazenar dados
Confiabilidade dos canais
Canal Confiável
Canal não-confiável
Perda de integridade
: os dados enviados pelo canal chegam ao seu destino, mas podem ocorrer modificações em seus valores.
Perda da ordem
: todos os dados enviados chegam íntegros ao seu destino, mas o canal não garante que eles serão entregues na ordem em que foram enviados.
Perda de dados
: nem todos os dados enviados através do canal chegam ao seu destino.
Número de participantes
algumas tarefas podem necessitar a comunicação com outros canais,, podemos classificar os mecanismos de comunicação conforme o numero de tarefas que participa da comunicação
M:N
: Um ou mais emissores enviam mensagens para um ou mais receptores, podem existir duas situaçoes:
Apenas um receptor :
Comunicação continua sendo "ponto-a-ponto"
vários receptores :
mensagem é recebida por vários e conhecida como barramento de mensagens
1:1 :
Usado no protocolo TCP, acontece quando um emissor e um receptor conversam entre si em um canal de comunicação.