Escolar Documentos
Profissional Documentos
Cultura Documentos
DCC062 02processos02
DCC062 02processos02
Cap. 2 Processos
Parte 2
Prof. Eduardo Pagani Julio
eduardo.pagani@ice.ufjf.br
Comunicao Interprocessos
Processos necessitam comunicar-se uns com os outros Colaborao em tarefas
Comunicao interprocessos
Como um processo pode passar informao de um para outro? Como garantir que processos no atrapalhem atividades crticas uns dos outros? Como permitir que sequncias de atividades sincronizadas sejam possveis entre processos?
Dep. Cincia da Computao
Condies de Disputa
Excluso Mtua
Meio que garanta o impedimento de uso de um recurso compartilhado caso ele j esteja em uso
Regio Crtica
Parte de um programa em que h acesso a um recurso compartilhado Objetivo: prover mecanismos para impedir que mais de um processo esteja em sua regio crtica
Dep. Cincia da Computao
Regies Crticas
Quatro condies necessrias para prover excluso mtua:
Nunca dois processos simultaneamente em uma regio crtica Nenhuma afirmao sobre velocidades ou nmero de CPUs Nenhum processo executando fora de sua regio crtica pode bloquear outros processos Nenhum processo deve esperar eternamente para entrar em sua regio crtica
Dep. Cincia da Computao
Regies Crticas
Problemas
Impossvel dar tal liberdade a processos de usurio
E se um programador descuidado se esquece de reabilitar as interrupes aps a regio crtica em seu programa?
Resolve o problema?
No! Condio de disputa!
Dep. Cincia da Computao
Resolve o problema?
Sim, mas no satisfatoriamente Regra: Nenhum processo fora de uma regio crtica pode bloquear outro processo
Dep. Cincia da Computao
Soluo de Peterson
No exige alternncia Rotinas para entrada e sada da regio crtica
enter_region
Quem chama enter_region se diz primeiro interessado em entrar em regio crtica A vez dada a ele, e se no houver interesse do outro processo ele liberado a entrar Caso contrrio, continua em espera ocupada
leave_region
Quem chama leave_region simplesmente se diz nointeressado em entrar em regio crtica
Dep. Cincia da Computao
Soluo de Peterson
Podem ser escritas rotinas em cdigo de montagem usando tal instruo, para entrada e sada em regies crticas
Dep. Cincia da Computao
Produtor/Consumidor
A.k.a. Problema do buffer limitado
2 Processos compartilham um buffer de tamanho fixo
Processo Produtor: Armazena informao no buffer Processo Consumidor: Retira informao do buffer
O Problema:
Buffer pode estar cheio e Produtor tem informao a armazenar Buffer pode estar vazio e Consumidor quer retirar informao
Soluo: Colocar processos para dormir quando impossibilitados de operar o buffer e depois acordlos quando for possvel
Dep. Cincia da Computao
Dormir/Acordar
Primitivas de comunicao entre processos que bloqueiam
No gastam tempo de CPU durante o bloqueio A chamada Sleep
Faz com que o processo chamador seja suspenso At que outro processo o desperte novamente
A chamada Wakeup
Faz com que o processo informado como parmetro seja despertado
Dormir/Acordar
Semforos
Dijkstra (1965) sugere o uso de varivel Semforo
Varivel inteira compartilhada para contar nmero de sinais de acordar
Valor 0: Nenhum sinal de acordar foi salvo Valor positivo: Um ou mais sinais de acordar esto pendentes
Semforos
semaphore fillCount = 0; semaphore emptyCount = BUFFER_SIZE;
putItemIntoBuffer(item); up(fillCount); } }
Dep. Cincia da Computao
consumeItem(item); } }
Semforos
Mutexes
Mutexes so semforos simplificados
Usados quando no precisamos da capacidade de contar dos semforos Adequado apenas para a excluso mtua Possui dois estados: Impedido e Desimpedido
Mutexes
Semforos e Mutexes
Excelentes mecanismos de comunicao entre processos
Semforos vo alm da excluso mtua, permitindo sincronizao mais rica entre processos
Monitores
1974/75. Proposta de uma unidade bsica de sincronizao de processos de alto nvel
Monitor: Coleo de procedimentos, variveis e estruturas de dados agrupada em um mdulo Processos chamam procedimentos de um monitor quando necessrio, mas no tm acesso a estruturas internas Propriedade relevante: Somente um procedimento pode estar ativo em um monitor em um dado momento Construto oferecido pela linguagem de programao
Monitores
Quando um processo chama um procedimento do monitor:
Rotina verifica se qualquer outro processo j est ativo no monitor
Caso exista um processo ativo no monitor, o processo que chamou o procedimento suspenso Caso contrrio, permitida a entrada no monitor e o procedimento executado
Monitores
Monitores
Excluso mtua: OK! Sincronizao?
Variveis condicionais, manipuladas por operaes wait e signal. Mas, lembrando, no pode-se permitir que dois processos estejam ativos no monitor ao mesmo tempo. Algum deve deixar o monitor depois de um signal Hoare: processo acordado suspende o outro Hansen: signal somente usado ao fim de um procedimento Ou, ainda: processo que fez signal vai at o fim do procedimento, deixando o monitor
Monitores
Variveis condicionais no so contadores! Mas por que no h o problema ocorrido com wakeup/sleep?
Lembrando, havia condio de corrida, pois wakeup/sleep no oferecem excluso mtua Varivel condicional usada dentro de monitores, provendo excluso mtua em seu uso No h como perder wakeups indevidamente
Monitores
Monitores em Java
Monitores e Semforos
Semforos so muito fceis de serem implementados e usados
Exigem cuidado do programador na especificao de excluso mtua e sincronizao
Monitores possuem nvel de abstrao ainda mais alto, fceis de usar e menos suscetveis a erros
Exigem que a linguagem de programao oferea tal mecanismo
Troca de Mensagens
Duas primitivas:
Send(destino, &msg);
Envia uma mensagem para um certo destino
Receive(origem, &msg);
Recebe uma mensagem de uma certa origem Se nenhuma mensagem estiver disponvel, o receptor poder ficar bloqueado at que uma mensagem chegue
Alternativamente, pode-se retornar um erro imediatamente
Troca de Mensagens
Se reconhecimento no for devolvido depois de certo tempo
Fazer retransmisso da mensagem!!
Endereamento Partiremos do pressuposto que mensagens so armazenadas (enfileiradas) pelo S.O. para recepo posterior H a opo de no armazenarmos mensagens
Send com bloqueio: rendez-vous
Troca de Mensagens
Barreiras
Manipulao de grupos de processos
Algumas aplicaes so divididas em fases Processos somente avanam depois que todos completaram a fase
Barreiras
Leitores e Escritores
Modela acessos a base de dados
Leitores podem acessar concorrentemente entre si Escritores devem acessar de forma exclusiva
Leitores e Escritores
Barbeiro Sonolento
Barbeiro Sonolento