Your SlideShare is downloading. ×
Sistemas Operacionais 10   comunicação entre processos
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Sistemas Operacionais 10 comunicação entre processos

256

Published on

Sistemas Operacionais 10 comunicação entre processos

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
256
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
29
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Comunicação entre processos Sistemas Operacionais Prof. Mauro DuarteProf. Mauro Duarte
  • 2. 15/07/14 Comunicação entre processos ● Introdução ● Problemas inerentes à comunicação ● Proposta para exclusão mútua
  • 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. 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. 15/07/14 Sincronização: ● Na comunicação entre processos cooperantes, a sincronização destes processos é importante:
  • 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. 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. 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. 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. 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. 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. 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. 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. 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/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. 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. 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. 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. 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. 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. 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. 15/07/14 Para saber mais: págs 70-81

×