Comunicação entre processos
Sistemas Operacionais
Prof. Mauro DuarteProf. Mauro Duarte
15/07/14
Comunicação entre processos
● Introdução
● Problemas inerentes à comunicação
● Proposta para exclusão mútua
15/07/14
Introdução:
● Os processos que cooperam entre si para executar uma
tarefa precisam se comunicar uns com os outros...
15/07/14
Problema:
● Um processo A alocou uma determinada área da
memória pra si.
● O que aconteceria se outro processo pu...
15/07/14
Sincronização:
● Na comunicação entre processos cooperantes, a
sincronização destes processos é importante:
15/07/14
Condições de corrida:
● Ocorre quando os processos
cooperantes precisam
compartilhar um recurso, que
ambos podem ...
15/07/14
●
Vimos um exemplo que é chamado de condição
de corrida (race condition):
– Ocorre quando dois ou mais processos ...
15/07/14
● A detecção da existência de uma condição de
corrida em um conjunto de processos
cooperantes é complicada.
● Par...
15/07/14
Seções críticas:
● Podemos também ver o problema da condição de
corrida a partir da seguinte visão abstrata:
– Ou...
15/07/14
● O código do processo que acessa um recurso
compartilhado com outros processos é chamado
de seção crítica ou reg...
15/07/14
● Para que a cooperação entre os processos seja eficiente, além de
correta, devemos garantir as seguintes condiçõ...
15/07/14
● Para que somente um processo possa entrar na sua seção crítica
devemos usar as primitivas de exclusão mútua.
● ...
15/07/14
●
O processo desabilita as interrupções ao entrar
na seção crítica, e as reabilita ao sair da seção
crítica.
●
Co...
15/07/14
Desabilitando interrupções:
● A proposta não funciona se existe mais de um
processador (ou núcleos), pois o proce...
15/07/14
InstruçãoTSL*:
● Comum em computadores com multiprocessadores.
● A instrução, cujo formato geral éTSL RX, lock, o...
15/07/14
● A execução da instrução é atômica, ou seja,
indivisível:
– O processador bloqueia o barramento da memória
até e...
15/07/14
Exclusão Mútua:
● Vamos agora estudar a seguinte proposta
alternativa, que irá bloquear o processo, em
vez de uti...
15/07/14
Produtor x Consumidor:
● Neste problema dois processos, o produtor e o consumidor,
compartilham o buffer:
– O pro...
15/07/14
Semáforo:
● Em 1965, o matemático holandês Edsger Dijkstra
propôs um mecanismo de coordenação eficiente e
flexíve...
15/07/14
Semáforos:
● Esta proposta usa uma variável inteira chamada
semáforo, e uma fila associada a esta variável:
– O v...
15/07/14
Semáforo:
● Para mais detalhes sobre semáforos, leia
a página 77 do livro:
– Sistemas Operacionais Modernos; 3ª e...
15/07/14
Para saber mais:
págs 70-81
Upcoming SlideShare
Loading in...5
×

Sistemas Operacionais 10 comunicação entre processos

502

Published on

Sistemas Operacionais 10 comunicação entre processos

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
502
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
35
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Sistemas Operacionais 10 comunicação entre processos

  1. 1. Comunicação entre processos Sistemas Operacionais Prof. Mauro DuarteProf. Mauro Duarte
  2. 2. 15/07/14 Comunicação entre processos ● Introdução ● Problemas inerentes à comunicação ● Proposta para exclusão mútua
  3. 3. 15/07/14 Introdução: ● Os processos que cooperam entre si para executar uma tarefa precisam se comunicar uns com os outros. ● A comunicação entre os processos deve ser feita de tal modo que seja estruturada e independente de interrupções. ● Devemos evitar que os processos interfiram uns com os outros, um problema chamado de exclusão mútua.
  4. 4. 15/07/14 Problema: ● Um processo A alocou uma determinada área da memória pra si. ● O que aconteceria se outro processo pudesse alocar a mesma área da memória que o processo A esta ocupando?
  5. 5. 15/07/14 Sincronização: ● Na comunicação entre processos cooperantes, a sincronização destes processos é importante:
  6. 6. 15/07/14 Condições de corrida: ● Ocorre quando os processos cooperantes precisam compartilhar um recurso, que ambos podem ler e gravar: Um exemplo de recurso compartilhado, um diretório de spooler, usado por um daemon de impressão. Este diretório contém várias entradas, numeradas por 1 e 2, …, sendo que cada uma pode armazenar o nome de um arquivo. O daemon percorre cada uma das entradas sequencialmente, voltando para a primeira entrada após a impressão do arquivo da última entrada.
  7. 7. 15/07/14 ● Vimos um exemplo que é chamado de condição de corrida (race condition): – Ocorre quando dois ou mais processos acessam um recurso compartilhado. – O resultado das execuções dos processos dependem da ordem em que os processos executam no processador. – Somente algumas ordens de execuções do processo não geram os resultados corretos. Condições de corrida:
  8. 8. 15/07/14 ● A detecção da existência de uma condição de corrida em um conjunto de processos cooperantes é complicada. ● Para solucionar o problema de condição de corrida, deveremos usar o conceito de exclusão mútua através do uso de seções críticas. Condições de corrida:
  9. 9. 15/07/14 Seções críticas: ● Podemos também ver o problema da condição de corrida a partir da seguinte visão abstrata: – Ou o processo está executando um código que não acessa nenhum dos recursos compartilhados com outros processos. – Ou processo está executando um código que lê e/ou altera um dos recursos compartilhados com outros processos.
  10. 10. 15/07/14 ● O código do processo que acessa um recurso compartilhado com outros processos é chamado de seção crítica ou região crítica. ● As condições de corrida serão evitadas somente se cada processo executar a sua seção crítica em um intervalo de tempo diferente. Seções críticas:
  11. 11. 15/07/14 ● Para que a cooperação entre os processos seja eficiente, além de correta, devemos garantir as seguintes condições: – Dois ou mais processos não podem executar ao mesmo tempo as suas seções críticas. – Não podemos fazer nenhuma suposição sobre a velocidade de execução ou do número de processadores. – Um processo que não está executando sua seção crítica não pode bloquear outro processo. – Um processo deve ser sempre capaz de executar a sua seção crítica em um intervalo de tempo finito. Seções críticas:
  12. 12. 15/07/14 ● Para que somente um processo possa entrar na sua seção crítica devemos usar as primitivas de exclusão mútua. ● Um meio de obtermos a exclusão mútua é através do uso das propostas baseadas em espera ocupada. – O processo fica esperando até que possa acessar a seção crítica. – A grande desvantagem desse método pode ser o desperdício de tempo do processador. – Estratégias: ● Desabilitar interrupções. ● InstruçãoTSL. Exclusão Mútua:
  13. 13. 15/07/14 ● O processo desabilita as interrupções ao entrar na seção crítica, e as reabilita ao sair da seção crítica. ● Como as interrupções estão desabilitadas, o escalonador não será capaz de parar a execução do processo. ● A proposta não é adequada, pois se o processo não reabilitar as interrupções, o sistema irá parar de funcionar. Desabilitando interrupções:
  14. 14. 15/07/14 Desabilitando interrupções: ● A proposta não funciona se existe mais de um processador (ou núcleos), pois o processo somente afeta o processador que o está executando. ● A conclusão é que esta proposta não é adequada para a exclusão mútua, devendo somente ser usada dentro do núcleo do sistema.
  15. 15. 15/07/14 InstruçãoTSL*: ● Comum em computadores com multiprocessadores. ● A instrução, cujo formato geral éTSL RX, lock, onde RX é um registrador e lock uma posição da memória: – Lê o conteúdo da posição lock, e o coloca no registrador RX. – Depois grava, na posição lock, um valor diferente de zero. * TSL – Test and Set Lock
  16. 16. 15/07/14 ● A execução da instrução é atômica, ou seja, indivisível: – O processador bloqueia o barramento da memória até executar as duas operações. – Nenhum outro processador poderá acessar a posição lock, até que o barramento seja desbloqueado ● Como a posição de ler a memória e armazenar um valor não nulo é atômica, a exclusão mútua é garantida. InstruçãoTSL:
  17. 17. 15/07/14 Exclusão Mútua: ● Vamos agora estudar a seguinte proposta alternativa, que irá bloquear o processo, em vez de utilizar espera ocupada, se este não puder acessar a sua seção crítica: – Semáforos.
  18. 18. 15/07/14 Produtor x Consumidor: ● Neste problema dois processos, o produtor e o consumidor, compartilham o buffer: – O processo produtor deposita novas informações no buffer, a não ser que este esteja cheio. – O processo consumidor retira as informações do buffer, a não ser que este esteja vazio.
  19. 19. 15/07/14 Semáforo: ● Em 1965, o matemático holandês Edsger Dijkstra propôs um mecanismo de coordenação eficiente e flexível para o controle da exclusão mútua entre n tarefas: o semáforo. ● Apesar de antigo, o semáforo continua sendo o mecanismo de sincronização mais utilizado na construção de aplicações concorrentes, sendo usado de forma explícita ou implícita.
  20. 20. 15/07/14 Semáforos: ● Esta proposta usa uma variável inteira chamada semáforo, e uma fila associada a esta variável: – O valor do semáforo indica quantas vezes ele pode ser decrementado sem que o processo seja bloqueado. – A fila contém os processos que foram bloqueados ao tentar decrementar o semáforo. ● São definidas duas operações sobre um semáforo: P eV ( waint and signal; up and down; etc ):
  21. 21. 15/07/14 Semáforo: ● Para mais detalhes sobre semáforos, leia a página 77 do livro: – Sistemas Operacionais Modernos; 3ª edição – Andrew S.Tanenbaum.
  22. 22. 15/07/14 Para saber mais: págs 70-81
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×