Please enable JavaScript.
Coggle requires JavaScript to display documents.
Cap 8 : Comunicação entre tarefas - Coggle Diagram
Cap 8 : Comunicação entre tarefas
Objetivos
Atender vários usuários simultâneos ; Servidores de rede são implementados com processos para atender vários usuários simultâneos
Uso de computadores multiprocessador ; Quebrar a aplicação em várias tarefas cooperantes que serão executadas simultaneamente
Modularidade ; Dividir as atribuições em tarefas interdependentes, cada módulo tem suas responsabilidades e coopera com os outros
Construção de Aplicações Interativas ; tarefas associadas à interface reagem a comandos do usuário enquanto outras renderizam imagens, se comunicam com a rede etc.
Escopo da Comunicação
Se as tarefas estão no mesmo processo elas compartilham memória e a comunicação pode ser implementada facilmente com variáveis globais
Caso as tarefas estejam em processos diferentes a comunicação precisa ser feita com o intermédio do sistema operacional com chamadas de sistema
IPC : Inter-Process-Comunication
Caso as tarefas estejam em computadores diferentes o núcleo deve implementar comunicações em rede
Aspectos da Comunicação
Comunicação direta ou indireta
Comunicação direta ; O emissor identifica claramente o receptor e vice-versa
Comunicação Indireta ; emissor e receptor não precisam se conhecer, se relacionam através de um canal de comunicação
Sincronismo
Síncrona ou bloqueante : as operações de comunicação bloqueiam as tarefas envolvidas até a conclusão da comunicação
Assíncrona ou não-bloqueante : caso a comunicação não seja possível esta retorna um indicação de erro ; necessário criar um buffer para armazenar os dados da comunicação ; raramente ambos estão prontos para se comunicar ao mesmo tempo
Semissíncrona ou semibloqueante : comportamento síncrono durante um prazo
Formato de envio
Sequência de mensagens : cada mensagem consiste em um pacote de dados que é recebido ou descartado em sua íntegra
Fluxo de Dados: o canal de comunicação é o equivalente a um arquivo, o emissor escreve dados e o receptor lê sem separação entre os dados
Capacidade dos canais
buffers que armazenam temporariamente os dados em trânsito
Capacidade Nula : o canal não pode armazenar dados, transferência direta entre o emissor e o receptor
Capacidade Infinita: o emissor sempre pode enviar dados. Não existe na prática
Capacidade Finita: uma quantidade finita de dados pode ser enviada pelo emissor sem que o receptor os consuma. Caso tente enviar dados em um canal saturado o emissor fica bloqueado até o espaço ser liberado ou receber um aviso de erro
Confiabilidade dos Canais
Caso um canal transporte todos os dados respeitando seus valores e ordem, ele é confiável. Caso contrário é não-confiável
Perda de Dados: perda de mensagens ou bytes
Os canais usados no interior de um SO são geralmente confiáveis, já os canais entre computadores são geralmente não-confiáveis
Perda de Integridade: ocorrem modificações nos dados
Perda da ordem: os dados chegam fora de ordem
Número de Participantes
1:1 há exatamente um emissor e um receptor, situação mais frequente
M:N
Cada mensagens é recebida por apenas um receptor, comunicação em um canal compartilhado, mailbox
Cada mensagens é recebida por vários receptores, barramento de mensagens, cada receptor recebe uma cópia