You are on page 1of 31

Sistemas Operacionais III Comunicao entre tarefas

Prof. Elias Carvalho ecacarva@gmail.com

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

Como vivemos?
Como so as coisas do mundo natural?

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

Como vivemos?
Como so as coisas do mundo natural?
Complexas ?

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

Como vivemos?
Como so as coisas do mundo natural?
Complexas ?

Interrelacionadas ?

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

Como vivemos?
Como so as coisas do mundo natural?
Complexas ?

Interrelacionadas ?

Paralelas ?
10/11/2012 Sistemas Operacionais Comunicao entre tarefas 5

Computadores x Problemas
A computao tradicional seqencial

Nem sempre a melhor soluo para os problemas


10/11/2012 Sistemas Operacionais Comunicao entre tarefas 6

Melhor Soluo
Como resolver isso em termos de programa?
Estruturar as implementaes na forma de vrias tarefas interdependentes que cooperam entre si para atingir os objetivos da aplicao.

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

Justificativa
Razes para justificar a construo de sistemas baseados em tarefas cooperantes: Atender vrios usurios simultneos Uso de computadores multi-processador Modularidade Construo de aplicaes interativas

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

Soluo
Para que as tarefas presentes em um sistema possam cooperar, elas precisam: Se comunicar, compartilhando as informaes necessrias execuo de cada tarefa, e coordenando suas atividades, para que os resultados obtidos sejam consistentes (sem erros).

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

Escopo da comunicao
Tarefas cooperantes precisam trocar informaes entre si, por exemplo:

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

10

Escopo da comunicao
Situaes:
Simples: Mesmo Processo
(mesma rea de memria e variveis globais comuns)

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

11

Escopo da comunicao
Situaes:
Complexa: Processos distintos
(comunicao via kernel e systems calls)

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

12

Escopo da comunicao
Situaes:
Complexa: Computadores diferentes
(comunicao via kernel com suporte a rede)

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

13

Caractersticas dos mecanismos de comunicao


A implementao da comunicao entre tarefas pode ocorrer de vrias formas e portanto exige:
formato dos dados a transferir sincronismo exigido nas comunicaes necessidade de buffers nmero de emissores/receptores envolvidos em cada ao de comunicao

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

14

Comunicao direta ou indireta


Comunicao Direta
o emissor identifica claramente o receptor e vice-versa (pouco utilizada)

Primitivas de Comunicao: enviar (dados, destino) receber (dados, origem)

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

15

Comunicao direta ou indireta


Comunicao Indireta (flexvel)
emissor e receptor no precisam se conhecer no interagem diretamente entre
se relacionam atravs de canal de um comunicao

Primitivas de Comunicao: enviar (dados, canal) receber (dados, canal)

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

16

Sincronismo
Comunicao Sncrona
comunicao bloqueante

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

17

Sincronismo
Comunicao Assncrona
comunicao no-bloqueante e necessidade de buffer

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

18

Sincronismo
Comunicao Semi-sncrona

Primitivas de Comunicao: enviar (dados, destino, prazo) receber (dados, origem, prazo)

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

19

Formato de envio
A informao enviada pelo emissor ao receptor pode ser vista basicamente de duas formas:
sequncia de mensagens independentes, cada uma com seu prprio contedo fluxo sequencial e contnuo de dados, imitando o comportamento de um arquivo com acesso sequencial.

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

20

Formato de envio
Mensagens

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

21

Formato de envio
Baseado em fluxo

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

22

Capacidade dos canais


Capacidade de buffering
Capacidade nula (n = 0) Capacidade infinita (n = ) Capacidade finita (0 < n < )

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

23

Confiabilidade dos canais


Um canal pode ser confivel o noconfivel Erros envolvendo a comunicao:
Perda de dados Perda de integridade Perda da ordem (somente o canal FIFO ou canal ordenado, garante a ordem)

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

24

Nmero de participantes
Situaes em que uma tarefa necessita comunicar com vrias outras exigem estratgias diferentes:
1:1 (mailbox): quando exatamente um emissor e um receptor interagem atravs do canal de comunicao; a situao mais frequente, implementada por exemplo nos pipes e no protocolo TCP. M:N (difuso (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
10/11/2012 Sistemas Operacionais Comunicao entre tarefas 25

Nmero de participantes
M:N difuso por multicast

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

26

Nmero de participantes
M:N - difuso por canal de eventos

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

27

Pipes
o pipe frequentemente usado para conectar a sada padro (stdout) de um comando entrada padro (stdin) de outro comando, permitindo assim a comunicao entre eles.

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

28

Pipes
A linha de comando a seguir traz um exemplo do uso de pipes:
# who | grep marcos | sort > login-marcos.txt

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

29

Memria compartilhada
Processos distintos no possuem variveis comuns
A comunicao por meio do ncleo e chamadas de sistemas pode no ser adequada se o volume for grande

Soluo:
rea de memria comum que possa ser acessada direta e rapidamente pelos processos interessados (Shared memory access) gerenciados pelo ncleo acesso feito diretamente pelos processos sem intermediao ou coordenao do ncleo

10/11/2012

Sistemas Operacionais Comunicao entre tarefas

30

Referncias
[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.
10/11/2012 Sistemas Operacionais Comunicao entre tarefas 31

You might also like