Escolar Documentos
Profissional Documentos
Cultura Documentos
Conferência 05
Sincronização e comunicação
entre processos
@Domingos Oliveira
2 of 47
Introdução
2 of 47
Introdução
2 of 47
Introdução
2 of 47
Aplicações Concorrentes
■ Muitas vezes, em uma aplicação concorrente, é necessário que pro-
cessos se comuniquem entre si;
3 of 47
Aplicações Concorrentes
■ Muitas vezes, em uma aplicação concorrente, é necessário que pro-
cessos se comuniquem entre si;
■ Esta comunicação pode ser implementada através de diversos mecan-
ismos, como variáveis compartilhadas na memória principal ou trocas
de mensagens;
3 of 47
Aplicações Concorrentes
■ Muitas vezes, em uma aplicação concorrente, é necessário que pro-
cessos se comuniquem entre si;
■ Esta comunicação pode ser implementada através de diversos mecan-
ismos, como variáveis compartilhadas na memória principal ou trocas
de mensagens;
■ Os processos concorrentes tenham sua execução sincronizada através
de mecanismos do sistema operativo;
3 of 47
Aplicações Concorrentes
■ Muitas vezes, em uma aplicação concorrente, é necessário que pro-
cessos se comuniquem entre si;
■ Esta comunicação pode ser implementada através de diversos mecan-
ismos, como variáveis compartilhadas na memória principal ou trocas
de mensagens;
■ Os processos concorrentes tenham sua execução sincronizada através
de mecanismos do sistema operativo;
■ Os mecanismos que garante a comunicação entre processos concor-
rentes e o acesso a recursos compartilhados são chamados mecan-
ismos de sincronização.
3 of 47
Aplicações Concorrentes
■ Muitas vezes, em uma aplicação concorrente, é necessário que pro-
cessos se comuniquem entre si;
■ Esta comunicação pode ser implementada através de diversos mecan-
ismos, como variáveis compartilhadas na memória principal ou trocas
de mensagens;
■ Os processos concorrentes tenham sua execução sincronizada através
de mecanismos do sistema operativo;
■ Os mecanismos que garante a comunicação entre processos concor-
rentes e o acesso a recursos compartilhados são chamados mecan-
ismos de sincronização.
■ É fundamental a implementação destes mecanismos para garantir
a integridade e a confiabilidade na execução de aplicações concor-
rentes.
3 of 47
Sincronização e comunicação entre processos
4 of 47
Especificação de Concorrência em Programas
5 of 47
Especificação de Concorrência em Programas
5 of 47
Exemplo da implementação da concorrencia em um
programa com uma sintaxe simplificada:
* PROGRAM A
* .
* .
* FORK B; * PROGRAM B
* . * .
* .
* .
* JOIN B;
* . * .
. * END
* END
6 of 47
Especificação de Concorrência em Programas
7 of 47
Especificação de Concorrência em Programas
7 of 47
Especificação de Concorrência em Programas
7 of 47
Especificação de Concorrência em Programas
8 of 47
Especificação de Concorrência em Programas
8 of 47
Especificação de Concorrência em Programas
8 of 47
Problemas de Compartilhamento de Recursos
9 of 47
Problemas de Compartilhamento de Recursos
9 of 47
Problemas de Compartilhamento de Recursos
9 of 47
Problemas de Compartilhamento de Recursos
9 of 47
■ A solução mais simples, para evitar os problemas de compartil-
hamento, é impedir que dois ou mais processos acessem um mesmo
recurso no mesmo instante.
10 of 47
■ A solução mais simples, para evitar os problemas de compartil-
hamento, é impedir que dois ou mais processos acessem um mesmo
recurso no mesmo instante.
■ Para isso, enquanto um processo estiver acessando determinado re-
curso, todos ou outros que queiram acessar esse mesmo recurso
deverão esperar até que o primeiro processo termine o acesso.
10 of 47
■ A solução mais simples, para evitar os problemas de compartil-
hamento, é impedir que dois ou mais processos acessem um mesmo
recurso no mesmo instante.
■ Para isso, enquanto um processo estiver acessando determinado re-
curso, todos ou outros que queiram acessar esse mesmo recurso
deverão esperar até que o primeiro processo termine o acesso.
■ Essa idéia de exclusividade de acesso é chamada exclusão mútua.
10 of 47
Exclusão Mútua
■ Afeta apenas os processos concorrentes somente quando um deles
estiver fazendo acesso ao recurso compartilhado.
11 of 47
Exclusão Mútua
■ Afeta apenas os processos concorrentes somente quando um deles
estiver fazendo acesso ao recurso compartilhado.
■ A parte do código do programa onde é feito o acesso ao recurso
compartilhado é denominada região crı́tica.
11 of 47
Exclusão Mútua
■ Afeta apenas os processos concorrentes somente quando um deles
estiver fazendo acesso ao recurso compartilhado.
■ A parte do código do programa onde é feito o acesso ao recurso
compartilhado é denominada região crı́tica.
■ Se for possı́vel evitar que dois processos entrem em suas regiões
crı́ticas ao mesmo tempo, os problemas decorrentes do compartil-
hamento serão evitados.
11 of 47
Exclusão Mútua
■ Afeta apenas os processos concorrentes somente quando um deles
estiver fazendo acesso ao recurso compartilhado.
■ A parte do código do programa onde é feito o acesso ao recurso
compartilhado é denominada região crı́tica.
■ Se for possı́vel evitar que dois processos entrem em suas regiões
crı́ticas ao mesmo tempo, os problemas decorrentes do compartil-
hamento serão evitados.
■ Os mecanismos que implementam a exclusão mútua utilizam proto-
colos de acesso à região crı́tica.
11 of 47
Exclusão Mútua
■ Afeta apenas os processos concorrentes somente quando um deles
estiver fazendo acesso ao recurso compartilhado.
■ A parte do código do programa onde é feito o acesso ao recurso
compartilhado é denominada região crı́tica.
■ Se for possı́vel evitar que dois processos entrem em suas regiões
crı́ticas ao mesmo tempo, os problemas decorrentes do compartil-
hamento serão evitados.
■ Os mecanismos que implementam a exclusão mútua utilizam proto-
colos de acesso à região crı́tica.
■ Toda vez que um processo desejar executar instruções de sua região
crı́tica, obrigatoriamente deverá executar antes um protocolo de en-
trada nessa região.
11 of 47
Exclusão Mútua
■ Afeta apenas os processos concorrentes somente quando um deles
estiver fazendo acesso ao recurso compartilhado.
■ A parte do código do programa onde é feito o acesso ao recurso
compartilhado é denominada região crı́tica.
■ Se for possı́vel evitar que dois processos entrem em suas regiões
crı́ticas ao mesmo tempo, os problemas decorrentes do compartil-
hamento serão evitados.
■ Os mecanismos que implementam a exclusão mútua utilizam proto-
colos de acesso à região crı́tica.
■ Toda vez que um processo desejar executar instruções de sua região
crı́tica, obrigatoriamente deverá executar antes um protocolo de en-
trada nessa região.
■ Da mesma forma, ao sair da região crı́tica um protocolo de saı́da
deverá ser executado.
11 of 47
Exclusão Mútua
■ Afeta apenas os processos concorrentes somente quando um deles
estiver fazendo acesso ao recurso compartilhado.
■ A parte do código do programa onde é feito o acesso ao recurso
12 of 47
■ A exclusão mútua pode ser implementada através de mecanismos
de hardware.
13 of 47
■ A exclusão mútua pode ser implementada através de mecanismos
de hardware.
■ São apresentadas as soluções de desabilitação de interrupções e
instruções test-and-set.
13 of 47
■ A exclusão mútua pode ser implementada através de mecanismos
de hardware.
■ São apresentadas as soluções de desabilitação de interrupções e
instruções test-and-set.
■ Estas solução são importantes porque criam mecanismos que per-
mitem a implementação das soluções de software.
13 of 47
Desabilitação de Interrupções
14 of 47
Desabilitação de Interrupções
14 of 47
Desabilitação de Interrupções
14 of 47
Instrução Teste-and-Set
15 of 47
Instrução Teste-and-Set
15 of 47
Instrução Teste-and-Set
15 of 47
Soluções de Software
16 of 47
■ Diversos algoritmos foram propostos na tentativa de implementar a
exclusão mutual através da solução de software.
17 of 47
■ Diversos algoritmos foram propostos na tentativa de implementar a
exclusão mutual através da solução de software.
■ As primeiras soluções tratavam apenas da exclusão mútua para dois
processos e, inicialmente, apresentavam alguns problemas.
17 of 47
■ Diversos algoritmos foram propostos na tentativa de implementar a
exclusão mutual através da solução de software.
■ As primeiras soluções tratavam apenas da exclusão mútua para dois
processos e, inicialmente, apresentavam alguns problemas.
■ A seguir é apresentado de forma evolutiva como foi o desenvolvi-
mento de uma solução definitiva para a exclusão mútua entre N
processos.
17 of 47
Algoritmo de Dekker
18 of 47
Algoritmo de Dekker
18 of 47
Algoritmo de Dekker
18 of 47
Algoritmo de Peterson
■ Apresenta uma solução para o problema da exclusão mútua entre
dois processos que pode ser facilmente generalizada para o caso de
N processos.
19 of 47
Algoritmo de Peterson
■ Apresenta uma solução para o problema da exclusão mútua entre
dois processos que pode ser facilmente generalizada para o caso de
N processos.
■ Esta solução, além das variáveis de condição (CA e CB) que indicam
o desejo de cada processo entrar em sua região crı́tica, introduz a
variável Vez para resolver os conflitos gerados pela concorrência.
19 of 47
Algoritmo de Peterson
■ Apresenta uma solução para o problema da exclusão mútua entre
dois processos que pode ser facilmente generalizada para o caso de
N processos.
■ Esta solução, além das variáveis de condição (CA e CB) que indicam
o desejo de cada processo entrar em sua região crı́tica, introduz a
variável Vez para resolver os conflitos gerados pela concorrência.
■ Antes de acessar a região crı́tica, o processo sinaliza esse desejo
através da variável de condição, porém o processo cede o uso do
recurso ao outro processo, indicado pela variável Vez.
19 of 47
Algoritmo de Peterson
■ Apresenta uma solução para o problema da exclusão mútua entre
dois processos que pode ser facilmente generalizada para o caso de
N processos.
■ Esta solução, além das variáveis de condição (CA e CB) que indicam
o desejo de cada processo entrar em sua região crı́tica, introduz a
variável Vez para resolver os conflitos gerados pela concorrência.
■ Antes de acessar a região crı́tica, o processo sinaliza esse desejo
através da variável de condição, porém o processo cede o uso do
recurso ao outro processo, indicado pela variável Vez.
■ Em seguida, o processo executa o comando WHILE como protocolo
de entrada da região crı́tica.
19 of 47
Algoritmo de Peterson
■ Apresenta uma solução para o problema da exclusão mútua entre
dois processos que pode ser facilmente generalizada para o caso de
N processos.
■ Esta solução, além das variáveis de condição (CA e CB) que indicam
o desejo de cada processo entrar em sua região crı́tica, introduz a
variável Vez para resolver os conflitos gerados pela concorrência.
■ Antes de acessar a região crı́tica, o processo sinaliza esse desejo
através da variável de condição, porém o processo cede o uso do
recurso ao outro processo, indicado pela variável Vez.
■ Em seguida, o processo executa o comando WHILE como protocolo
de entrada da região crı́tica.
■ Neste caso, além da garantia da exclusão mútua, o bloqueio in-
definido de um dos processos no loop nunca ocorrerá, já que a
variável Vez sempre permitirá a continuidade da execução de um
dos processos.
19 of 47
Algoritmo para Exclusão Mútua entre N Processos
20 of 47
Algoritmo para Exclusão Mútua entre N Processos
20 of 47
Algoritmo para Exclusão Mútua entre N Processos
20 of 47
Solução
21 of 47
Sincronização Condicional
22 of 47
■ Sincronização condicional é uma situação onde o acesso ao recurso
compartilhado exige a sincronização de processos vinculada a uma
condição de acesso.
23 of 47
■ Sincronização condicional é uma situação onde o acesso ao recurso
compartilhado exige a sincronização de processos vinculada a uma
condição de acesso.
■ Um recurso pode não se encontrar pronto para uso devido a uma
condição especı́fica.
23 of 47
■ Sincronização condicional é uma situação onde o acesso ao recurso
compartilhado exige a sincronização de processos vinculada a uma
condição de acesso.
■ Um recurso pode não se encontrar pronto para uso devido a uma
condição especı́fica.
■ Nesse caso, o processo que deseja acessá-lo deverá permanecer blo-
queado até que o recurso fique disponı́vel.
23 of 47
Exemplo
24 of 47
Exemplo
24 of 47
Exemplo
24 of 47
Exemplo
24 of 47
Semáforos
25 of 47
■ O conceito de semáforos foi proposto, em 1965, sendo apresentado
como um mecanismo de sincronização que permitia implementar, de
forma simples, a exclusão mútua e sincronização condicional entre
processos.
26 of 47
■ O conceito de semáforos foi proposto, em 1965, sendo apresentado
como um mecanismo de sincronização que permitia implementar, de
forma simples, a exclusão mútua e sincronização condicional entre
processos.
■ O uso de semáforos tornou-se um dos principais mecanismos utiliza-
dos em projetos de sistemas operativo e em aplicações concorrentes.
26 of 47
■ O conceito de semáforos foi proposto, em 1965, sendo apresentado
como um mecanismo de sincronização que permitia implementar, de
forma simples, a exclusão mútua e sincronização condicional entre
processos.
■ O uso de semáforos tornou-se um dos principais mecanismos utiliza-
dos em projetos de sistemas operativo e em aplicações concorrentes.
■ Um semáforo é uma variável inteira, não-negativa, que só pode ser
manipulada por duas instruções: DOWN e UP.
26 of 47
■ O conceito de semáforos foi proposto, em 1965, sendo apresentado
como um mecanismo de sincronização que permitia implementar, de
forma simples, a exclusão mútua e sincronização condicional entre
processos.
■ O uso de semáforos tornou-se um dos principais mecanismos utiliza-
dos em projetos de sistemas operativo e em aplicações concorrentes.
■ Um semáforo é uma variável inteira, não-negativa, que só pode ser
manipulada por duas instruções: DOWN e UP.
■ As instruções DOWN e UP são indivisı́veis (ações atômicas), ou
seja, a execução destas instruções não pode ser interrompida.
26 of 47
Classificados dos semáforos
27 of 47
Classificados dos semáforos
27 of 47
Classificados dos semáforos
27 of 47
Exclusão Mútua utilizando Semáforos
28 of 47
Exclusão Mútua utilizando Semáforos
28 of 47
Exclusão Mútua utilizando Semáforos
28 of 47
Exclusão Mútua utilizando Semáforos
28 of 47
Exclusão Mútua utilizando Semáforos cont.
29 of 47
Exclusão Mútua utilizando Semáforos cont.
29 of 47
Exclusão Mútua utilizando Semáforos cont.
29 of 47
Exclusão Mútua utilizando Semáforos cont.
29 of 47
Utilização do semáforo binário na exclusão mútua
30 of 47
Sincronização Condicional utilizando Semáforos
31 of 47
Sincronização Condicional utilizando Semáforos
31 of 47
Sincronização Condicional utilizando Semáforos
31 of 47
Sincronização Condicional utilizando Semáforos
31 of 47
Problema dos Filósofos jantando
32 of 47
■ Em 1965, Dijkstra propôs e resolveu um problema de sincronização
que ele chamou de problema dos filósofos jantando.
33 of 47
■ Em 1965, Dijkstra propôs e resolveu um problema de sincronização
que ele chamou de problema dos filósofos jantando.
■ O problema pode ser exposto de uma maneira simples. Cinco filósofos
estão sentados ao redor de uma mesa circular.
33 of 47
■ Em 1965, Dijkstra propôs e resolveu um problema de sincronização
que ele chamou de problema dos filósofos jantando.
■ O problema pode ser exposto de uma maneira simples. Cinco filósofos
estão sentados ao redor de uma mesa circular.
■ Cada filósofo tem um prato de esparguete. O esparguete está tão
escorregadio que o filósofo precisa de dois garfos para comé-lo.
33 of 47
■ Em 1965, Dijkstra propôs e resolveu um problema de sincronização
que ele chamou de problema dos filósofos jantando.
■ O problema pode ser exposto de uma maneira simples. Cinco filósofos
estão sentados ao redor de uma mesa circular.
■ Cada filósofo tem um prato de esparguete. O esparguete está tão
escorregadio que o filósofo precisa de dois garfos para comé-lo.
■ Entre cada par de pratos está um garfo, onde os filósofos podem
sentar, comer e pensar.
33 of 47
Filósofos jantando
34 of 47
Ideia
35 of 47
Ideia
35 of 47
Ideia
35 of 47
A questão a ser respondida é:
podemos escrever um programa para simular a
ação de cada filósofo?
36 of 47
Solução
37 of 47
Solução
37 of 47
Solução
37 of 47
Solução
37 of 47
Problema do Barbeiro
38 of 47
Ideia
39 of 47
Ideia
39 of 47
Ideia
39 of 47
Ideia
39 of 47
Ideia
39 of 47
Problema do Barbeiro
40 of 47
Monitores
41 of 47
■ Monitores são mecanismos de sincronização de alto nı́vel que tornam
mais simples o desenvolvimento de aplicações concorrentes.
42 of 47
■ Monitores são mecanismos de sincronização de alto nı́vel que tornam
mais simples o desenvolvimento de aplicações concorrentes.
■ O monitor é formado por procedimentos e variáveis encapsulados
dentro de um módulo.
42 of 47
■ Monitores são mecanismos de sincronização de alto nı́vel que tornam
mais simples o desenvolvimento de aplicações concorrentes.
■ O monitor é formado por procedimentos e variáveis encapsulados
dentro de um módulo.
■ Sua caracterı́stica mais importante é a implementação automática
da exclusão mútua entre os procedimentos declarados, ou seja, so-
mente um processo pode estar executando um dos procedimentos
do monitor em um determinado instante.
42 of 47
■ Monitores são mecanismos de sincronização de alto nı́vel que tornam
mais simples o desenvolvimento de aplicações concorrentes.
■ O monitor é formado por procedimentos e variáveis encapsulados
dentro de um módulo.
■ Sua caracterı́stica mais importante é a implementação automática
da exclusão mútua entre os procedimentos declarados, ou seja, so-
mente um processo pode estar executando um dos procedimentos
do monitor em um determinado instante.
■ Toda vez que um processo faz uma chamada a um desses proced-
imentos, o monitor verifica se já existe outro processo executando
algum procedimento do monitor.
42 of 47
■ Monitores são mecanismos de sincronização de alto nı́vel que tornam
mais simples o desenvolvimento de aplicações concorrentes.
■ O monitor é formado por procedimentos e variáveis encapsulados
dentro de um módulo.
■ Sua caracterı́stica mais importante é a implementação automática
da exclusão mútua entre os procedimentos declarados, ou seja, so-
mente um processo pode estar executando um dos procedimentos
do monitor em um determinado instante.
■ Toda vez que um processo faz uma chamada a um desses proced-
imentos, o monitor verifica se já existe outro processo executando
algum procedimento do monitor.
■ Caso exista, o processo ficará aguardando a sua vez em uma fila de
entrada.
42 of 47
Exclusão Mútua utilizando Monitores
43 of 47
Exclusão Mútua utilizando Monitores
43 of 47
Exclusão Mútua utilizando Monitores
43 of 47
Exclusão Mútua utilizando Monitores
43 of 47
Sincronização Condicional utilizando Monitores
□ Monitores também podem ser utilizados na implementação da sin-
cronização condicional.
44 of 47
Sincronização Condicional utilizando Monitores
□ Monitores também podem ser utilizados na implementação da sin-
cronização condicional.
□ Através de variáveis especiais de condição, é possı́vel associar a ex-
ecução de um procedimento que faz parte do monitor a uma determi-
nada condição, garantindo a sincronização condicional.
44 of 47
Sincronização Condicional utilizando Monitores
□ Monitores também podem ser utilizados na implementação da sin-
cronização condicional.
□ Através de variáveis especiais de condição, é possı́vel associar a ex-
ecução de um procedimento que faz parte do monitor a uma determi-
nada condição, garantindo a sincronização condicional.
□ As variáveis especiais de condição são manipuladas por intermédio de
duas instruções, conhecidas como WAIT e SIGNAL.
44 of 47
Sincronização Condicional utilizando Monitores
□ Monitores também podem ser utilizados na implementação da sin-
cronização condicional.
□ Através de variáveis especiais de condição, é possı́vel associar a ex-
ecução de um procedimento que faz parte do monitor a uma determi-
nada condição, garantindo a sincronização condicional.
□ As variáveis especiais de condição são manipuladas por intermédio de
duas instruções, conhecidas como WAIT e SIGNAL.
□ A instrução WAIT faz com que o processo seja colocado no estado de
espera, até que algum outro processo sinalize com a instrução SIGNAL
que a condição de espera foi satisfeita.
44 of 47
Sincronização Condicional utilizando Monitores
□ Monitores também podem ser utilizados na implementação da sin-
cronização condicional.
□ Através de variáveis especiais de condição, é possı́vel associar a ex-
ecução de um procedimento que faz parte do monitor a uma determi-
nada condição, garantindo a sincronização condicional.
□ As variáveis especiais de condição são manipuladas por intermédio de
duas instruções, conhecidas como WAIT e SIGNAL.
□ A instrução WAIT faz com que o processo seja colocado no estado de
espera, até que algum outro processo sinalize com a instrução SIGNAL
que a condição de espera foi satisfeita.
□ Caso a instrução SIGNAL seja executada e não haja processo aguardando
a condição, nenhum efeito surtirá.
44 of 47
Sincronização Condicional utilizando Monitores
□ Monitores também podem ser utilizados na implementação da sin-
cronização condicional.
□ Através de variáveis especiais de condição, é possı́vel associar a ex-
ecução de um procedimento que faz parte do monitor a uma determi-
nada condição, garantindo a sincronização condicional.
□ As variáveis especiais de condição são manipuladas por intermédio de
duas instruções, conhecidas como WAIT e SIGNAL.
□ A instrução WAIT faz com que o processo seja colocado no estado de
espera, até que algum outro processo sinalize com a instrução SIGNAL
que a condição de espera foi satisfeita.
□ Caso a instrução SIGNAL seja executada e não haja processo aguardando
a condição, nenhum efeito surtirá.
□ É possı́vel que vários processos estejam com suas execuções suspensas,
aguardando a sinalização de diversas condições.
44 of 47
Sincronização Condicional utilizando Monitores
□ Monitores também podem ser utilizados na implementação da sin-
cronização condicional.
□ Através de variáveis especiais de condição, é possı́vel associar a ex-
ecução de um procedimento que faz parte do monitor a uma determi-
nada condição, garantindo a sincronização condicional.
□ As variáveis especiais de condição são manipuladas por intermédio de
duas instruções, conhecidas como WAIT e SIGNAL.
□ A instrução WAIT faz com que o processo seja colocado no estado de
espera, até que algum outro processo sinalize com a instrução SIGNAL
que a condição de espera foi satisfeita.
□ Caso a instrução SIGNAL seja executada e não haja processo aguardando
a condição, nenhum efeito surtirá.
□ É possı́vel que vários processos estejam com suas execuções suspensas,
aguardando a sinalização de diversas condições.
□ Para isso, o monitor organiza os processos em espera, utilizando filas
associadas às condições de sincronização.
44 of 47
Sincronização Condicional utilizando Monitores
□ Monitores também podem ser utilizados na implementação da sin-
cronização condicional.
□ Através de variáveis especiais de condição, é possı́vel associar a ex-
ecução de um procedimento que faz parte do monitor a uma determi-
nada condição, garantindo a sincronização condicional.
□ As variáveis especiais de condição são manipuladas por intermédio de
duas instruções, conhecidas como WAIT e SIGNAL.
□ A instrução WAIT faz com que o processo seja colocado no estado de
espera, até que algum outro processo sinalize com a instrução SIGNAL
que a condição de espera foi satisfeita.
□ Caso a instrução SIGNAL seja executada e não haja processo aguardando
a condição, nenhum efeito surtirá.
□ É possı́vel que vários processos estejam com suas execuções suspensas,
aguardando a sinalização de diversas condições.
□ Para isso, o monitor organiza os processos em espera, utilizando filas
associadas às condições de sincronização.
□ A execução da instrução SIGNAL libera apenas um único processo da
fila de espera da condição associada.
44 of 47
Troca de Mensagens
■ Troca de Mensagens é um mecanismo de comunicação e sincronização
entre processos.
45 of 47
Troca de Mensagens
■ Troca de Mensagens é um mecanismo de comunicação e sincronização
entre processos.
■ O SO possui um subsistema de mensagem que suporta esse mecan-
ismo sem que haja necessidade do uso de variáveis compartilhadas.
45 of 47
Troca de Mensagens
■ Troca de Mensagens é um mecanismo de comunicação e sincronização
entre processos.
■ O SO possui um subsistema de mensagem que suporta esse mecan-
ismo sem que haja necessidade do uso de variáveis compartilhadas.
■ Para que haja a comunicação entre os processos, deve existir um
canal de comunicação, podendo esse meio ser um buffer ou um
link de uma rede de computadores.
45 of 47
Troca de Mensagens
■ Troca de Mensagens é um mecanismo de comunicação e sincronização
entre processos.
■ O SO possui um subsistema de mensagem que suporta esse mecan-
ismo sem que haja necessidade do uso de variáveis compartilhadas.
■ Para que haja a comunicação entre os processos, deve existir um
canal de comunicação, podendo esse meio ser um buffer ou um
link de uma rede de computadores.
■ Os processos cooperativos podem fazer uso de um buffer para trocar
mensagens através de duas rotinas:
□ SEND (receptor, mensagem);
□ RECEIVE (transmissor, mensagem).
45 of 47
Troca de Mensagens
■ Troca de Mensagens é um mecanismo de comunicação e sincronização
entre processos.
■ O SO possui um subsistema de mensagem que suporta esse mecan-
ismo sem que haja necessidade do uso de variáveis compartilhadas.
■ Para que haja a comunicação entre os processos, deve existir um
canal de comunicação, podendo esse meio ser um buffer ou um
link de uma rede de computadores.
■ Os processos cooperativos podem fazer uso de um buffer para trocar
mensagens através de duas rotinas:
□ SEND (receptor, mensagem);
□ RECEIVE (transmissor, mensagem).
■ A rotina SEND permite o envio de uma mensagem para um processo
receptor, enquanto a rotina RECEIVE possibilita o recebimento de
mensagem enviada por um processo transmissor.
45 of 47
Duvidas ???
“Você não pode impedir que os pássaros da tristeza voem sobre sua
cabeça, mas pode, sim, impedir que façam um ninho em seu cabelo.”
Provérbio chinês
46 of 47
Exercı́cio
■ Defina o que é uma aplicação concorrente e dê um exemplo de sua
utilização?
■ O que é exclusão mútua e como é implementada?
■ O que é exclusão mútua e como é implementada?
■ Como seria possı́vel resolver os problemas decorrentes do compartil-
hamento?
■ O que é starvation e como podemos solucionar esse problema?
■ Qual o problema com a solução que desabilita as interrupções para
implementar a exclusão mútua?
■ O que é espera ocupada e qual o seu problema?
■ Faz pesquisa sobre linguagem de programação JAVA.
■ Resolva alguns exercı́cios de um programa em JAVA e C;
47 of 47