18 SO Aula 12 Comunicacao Entre Tarefas
-
Upload
joao-rizzo -
Category
Documents
-
view
74 -
download
1
Transcript of 18 SO Aula 12 Comunicacao Entre Tarefas
13/04/23Sistemas Operacionais
Comunicação entre tarefas1
Sistemas OperacionaisIII – Comunicação entre tarefas
Prof. Elias Carvalho
13/04/23Sistemas Operacionais
Comunicação entre tarefas2
Como vivemos?
• Como são as coisas do mundo natural?
13/04/23Sistemas Operacionais
Comunicação entre tarefas3
Como vivemos?
• Como são as coisas do mundo natural?
Complexas?
13/04/23Sistemas Operacionais
Comunicação entre tarefas4
Como vivemos?
• Como são as coisas do mundo natural?
Complexas?
Inter-relacionadas
?
13/04/23Sistemas Operacionais
Comunicação entre tarefas5
Como vivemos?
• Como são as coisas do mundo natural?
Inter-relacionadas
?
Paralelas
?
Complexas?
13/04/23Sistemas Operacionais
Comunicação entre tarefas6
Computadores x Problemas
• A computação tradicional é seqüencial
Nem sempre é a melhor solução para os problemas
13/04/23Sistemas Operacionais
Comunicação entre tarefas7
Melhor Solução
• Como resolver isso em termos de programa?– Estruturar as
implementações na forma de várias tarefas inter-dependentes que cooperam entre si para atingir os objetivos da aplicação.
13/04/23Sistemas Operacionais
Comunicação entre tarefas8
Justificativa
• Razões para justificar a construção de sistemas baseados em tarefas cooperantes:– Atender vários usuários simultâneos – Uso de computadores multi-processador– Modularidade– Construção de aplicações interativas
13/04/23Sistemas Operacionais
Comunicação entre tarefas9
Solução
• Para que as tarefas presentes em um sistema possam cooperar, elas precisam:– Se comunicar, compartilhando as
informações necessárias à execução de cada tarefa, e coordenando suas atividades, para que os resultados obtidos sejam consistentes (sem erros).
13/04/23Sistemas Operacionais
Comunicação entre tarefas10
Escopo da comunicação• Tarefas cooperantes precisam trocar
informações entre si, por exemplo:
13/04/23Sistemas Operacionais
Comunicação entre tarefas11
Escopo da comunicação• Situações:
Simples: Mesmo Processo (mesma área de memória e variáveis globais comuns)
13/04/23Sistemas Operacionais
Comunicação entre tarefas12
Escopo da comunicação• Situações:
Complexa: Processos distintos(comunicação via kernel e systems calls)
13/04/23Sistemas Operacionais
Comunicação entre tarefas13
Escopo da comunicação• Situações:
Complexa: Computadores diferentes(comunicação via kernel com suporte a rede)
13/04/23Sistemas Operacionais
Comunicação entre tarefas14
Características dos mecanismos de comunicação• A implementação da comunicação
entre tarefas pode ocorrer de várias formas e portanto exige:– formato dos dados a transferir– sincronismo exigido nas comunicações– necessidade de buffers– número de emissores/receptores envolvidos em cada
ação de comunicação
13/04/23Sistemas Operacionais
Comunicação entre tarefas15
Comunicação direta ou indireta
• Comunicação Direta– o emissor identifica claramente o receptor e
vice-versa (pouco utilizada)
Primitivas de Comunicação:• enviar (dados, destino)• receber (dados, origem)
13/04/23Sistemas Operacionais
Comunicação entre tarefas16
Comunicação direta ou indireta
• Comunicação Indireta (flexível)– emissor e receptor não precisam se conhecer– não interagem diretamente entre– se relacionam através de canal de um comunicação
Primitivas de Comunicação:• enviar (dados, canal)• receber (dados, canal)
13/04/23Sistemas Operacionais
Comunicação entre tarefas17
Sincronismo
• Comunicação Síncrona– comunicação bloqueante
13/04/23Sistemas Operacionais
Comunicação entre tarefas18
Sincronismo
• Comunicação Assíncrona– comunicação não-bloqueante e necessidade de
buffer
13/04/23Sistemas Operacionais
Comunicação entre tarefas19
Sincronismo
• Comunicação Semi-síncrona
Primitivas de Comunicação:
• enviar (dados, destino, prazo)
• receber (dados, origem, prazo)
13/04/23Sistemas Operacionais
Comunicação entre tarefas20
Formato de envio
• 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.
13/04/23Sistemas Operacionais
Comunicação entre tarefas21
Formato de envio
• Mensagens
13/04/23Sistemas Operacionais
Comunicação entre tarefas22
Formato de envio
• Baseado em fluxo
13/04/23Sistemas Operacionais
Comunicação entre tarefas23
Capacidade dos canais
• Capacidade de buffering – Capacidade nula (n = 0) – Capacidade infinita (n = ∞) – Capacidade finita (0 < n < ∞)
13/04/23Sistemas Operacionais
Comunicação entre tarefas24
Confiabilidade dos canais
• Um canal pode ser confiável o não-confiável
• Erros envolvendo a comunicação:– Perda de dados– Perda de integridade– Perda da ordem (somente o canal FIFO ou
canal ordenado, garante a ordem)
13/04/23Sistemas Operacionais
Comunicação entre tarefas25
Número de participantes
• Situações em que uma tarefa necessita comunicar com várias outras exigem estratégias diferentes:– 1:1 (mailbox): quando exatamente um emissor e um
receptor interagem através do canal de comunicação; é a situação mais frequente, implementada por exemplo nos pipes e no protocolo TCP.
– M:N (difusão (multicast) ou canal de eventos) : quando um ou mais emissores enviam mensagens para um ou mais receptores:
• mensagem é recebida por apenas um receptor • mensagem é recebida por todos os receptores
13/04/23Sistemas Operacionais
Comunicação entre tarefas26
Número de participantes
• M:N – difusão por multicast
13/04/23Sistemas Operacionais
Comunicação entre tarefas27
Número de participantes
• M:N - difusão por canal de eventos
13/04/23Sistemas Operacionais
Comunicação entre tarefas28
Pipes
• o pipe é frequentemente 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.
13/04/23Sistemas Operacionais
Comunicação entre tarefas29
Pipes
• A linha de comando a seguir traz um exemplo do uso de pipes:
# who | grep marcos | sort > login-marcos.txt
13/04/23Sistemas Operacionais
Comunicação entre tarefas30
Memória compartilhada
• Processos distintos não possuem variáveis comuns
– A comunicação por meio do núcleo e chamadas de sistemas pode não ser adequada se o volume for grande
• Solução:– área de memória comum que possa
ser acessada direta e rapidamente pelos processos interessados (Shared memory access)
• gerenciados pelo núcleo• acesso feito diretamente pelos
processos• sem intermediação ou
coordenação do núcleo
13/04/23Sistemas Operacionais
Comunicação entre tarefas31
Referências
• [Gnome, 2005] Gnome (2005). Gnome: the free software desktop project.http://www.gnome.org.
• [Hart, 2004] Hart, J. (2004). Windows System Programming, 3rd
• edition. Addison-Wesley Professional.
• [KDE, 2005] KDE (2005). KDE desktop project. http://www.kde.org.
• [Petzold, 1998] Petzold, C. (1998). Programming Windows, 5th edition. Microsoft Press.
• [Robbins and Robbins, 2003] Robbins, K. and Robbins, S. (2003). UNIX Systems Pro-gramming. Prentice-Hall.
• [Stevens, 1998] Stevens, R. (1998). UNIX Network Programming. Prentice-Hall.