Comunicação entre Processos Prof. Dr. André Carvalho andre@icomp.ufam.edu.br
Agenda n Comunicação entre Processos n Características dos mecanismos de comunicação Comunicação direta ou indireta, sincronismos, formato de envio, capacidade e confiabilidades dos canais e número de participantes n Exemplos 2
Comunicação entre Processos
Comunicação entre Processos n Processos precisam cooperar entre si para atingir os objetivos. Atender vários usuários simultâneos Uso de computadores multiprocessados Modularidade Construção de aplicações interativas 4
Comunicação entre Processos n Cooperação entre tarefas exige comunicação (compartilhamento de informações necessárias à execução de cada tarefa) e coordenação de atividades. Gerencia dos botões e menus de um navegador Web. Copiar e colar um texto. 5
Comunicação entre Processos n A comunicação depende da situação Atividades no mesmo processo usam comunicação via variáveis globais. Atividades de processos distintos precisam do núcleo do SO para se comunicar. Atividades em computadores distintos se comunicam via rede. 6
Comunicação entre Processos 7
Comunicação entre Processos n Todos os mecanismos de comunicação são denominados de mecanismos de IPC (Inter-Process Communication mechanisms). 8
Características dos mecanismos de comunicação 9
Características dos mecanismos de comunicação n n Existem várias formas de comunicação entre processos. Os principais aspectos que caracterizam e distinguem os mecanismos de comunicação são: Comunicação direta ou indireta, Sincronismo, Formato de envio, Capacidade dos canais, Confiabilidade dos canais e Número de participantes 10
Comunicação direta ou indireta n Na comunicação direta, o emissor identifica claramente o receptor e viceversa. Pouco empregada. 11
Comunicação Direta ou Indireta n Na comunicação indireta, o emissor e receptor não precisam se conhecer, pois não interagem diretamente. Um canal de comunicação é criado pelo SO para interligar ambos 12
Sincronismo n A comunicação pode ser síncrona, assíncrona ou semi-síncrona. Síncrona: quando as operações de envio e recepção de dados bloqueiam (suspendem) as tarefas envolvidas até a conclusão da comunicação (comunicação bloqueante). 13
Sincronismo Síncrona 14
Sincronismo Assíncrona: as primitivas de envio e recepção não são bloqueantes. Caso a comunicação não seja possível no momento em que cada operação é invocada, esta retorna imediatamente com uma indicação de erro. Usa um canal ou buffer para armazenar os dados da comunicação entre eles. Comunicação não-bloqueante. 15
Sincronismo Assíncrona 16
Semi síncrona n Têm um comportamento síncrono (bloqueante) durante um prazo prédefinido. Caso esse prazo se esgote sem que a comunicação tenha ocorrido, a primitiva se encerra. Prazo é uma variável adicional. 17
Sincronismo Semi-síncrona 18
Formato de envio n A informação enviada pelo emissor ao receptor pode ser vista basicamente de duas formas: sequência de mensagens independentes, cada uma com seu próprio conteúdo. fluxo sequencial e contínuo de dados, imitando o comportamento de um arquivo com acesso sequencial. 19
Formato de envio n abordagem baseada em mensagens 20
Formato de envio n abordagem baseada em um fluxo contínuo 21
Capacidade dos canais n Em relação à capacidade de buffering do canal de comunicação, três situações devem ser analisadas: nula, infinita e finita. f22
Capacidade Nula n n n n Canal não armazena dados. A comunicação é feita por transferência direta dos dados do emissor para o receptor, sem cópias intermediárias. Síncrona o emissor permanece bloqueado até que o destinatário receba os dados, e vice-versa. Assíncrona não é possível. 23
Capacidade Infinita n O emissor sempre pode enviar dados, que serão armazenados no buffer do canal enquanto o receptor não os consumir. n Impráticavel, porém útil aos estudos de algoritmos de comunicação e sincronização 24
Capacidade Finita n n Uma quantidade finita (n) de dados pode ser enviada pelo emissor sem que o receptor os consuma. Ao tentar enviar dados em um canal já saturado, o emissor poderá ficar bloqueado até surgir espaço no buffer do canal e conseguir enviar (comportamento síncrono) ou receber um retorno indicando o erro (comportamento assíncrono). 25
Comunicação com capacidade finita (n=2) 26
Confiabilidade dos canais n Um canal é dito confiável quando transporta todos os dados enviados através dele para seus receptores, respeitando seus valores e a ordem em que foram enviados. n Caso contrário, trata-se de um canal não-confiável. 27
Razões para nãoconfiabilidade n Perda de dados Nem todos dados enviados chegam ao destino. n Perda de integridade Valores modificados (corrompidos) n Perda de ordem Dados chegam na sua totalidade e íntegros, porém fora da ordem. 28
Canais confiáveis existem? n Comunicação dentro do S.O. geralmente é considerada confiável. n Redes geralmente tem protocolos não confiáveis. Porém, protocolos como o TCP garantem que a comunicação seja confiável. 29
Número de participantes n Existem situações em que uma tarefa necessita comunicar com várias outras. n Dessa forma, os mecanismos de comunicação também podem ser classificados de acordo com o número de tarefas participantes: 1:1 e M:N
Número de participantes n M:N usando mailbox 31
Número de participantes n M:N usando difusão 32
Exemplo de mecanismos de comunicação
Exemplo de mecanismos de comunicação n Pipes Mecanismo de comunicação entre processos mais simples de usar. Na interface de linha de comandos, o pipe é usado para conectar a saída padrão (stdout) de um comando à entrada padrão (stdin) de outro comando, permitindo assim a comunicação entre eles.
Exemplo de mecanismos de comunicação n Pipes canal de comunicação unidirecional entre dois processos (1:1), com capacidade finita (4 KBytes no linux). O envio e recepção de dados são feitos pelas chamadas de sistema write e read, que podem operar em modo síncrono ou assíncrono. 35
Funcionamento 36
Memória Compartilhada n Processos em uma mesma máquina podem compartilhar o mesmo espaço de memória. Solicitação ao sistema operacional. Pode gerar problemas de sincronização. 37