Você está na página 1de 45

DCC062 Sistemas Operacionais

Cap. 2 Processos
Parte 2
Prof. Eduardo Pagani Julio
eduardo.pagani@ice.ufjf.br

Dep. Cincia da Computao

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

Dep. Cincia da Computao

Excluso Mtua e Regies Crticas


Compartilhamento de recursos
Espaos de memria compartilhada, arquivos compartilhados Sujeito a condies de corrida e outros problemas Precisamos impedir que mais de um processo leia e escreva o recurso ao mesmo tempo

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

Dep. Cincia da Computao

Exluso Mtua - Desabilitando Interrupes


Antes de iniciar regio crtica, processo desabilita interrupes
Excluso mtua ao extremo Nem o escalonador de processos conseguiria a CPU! Processo poderia executar sua seo crtica e depois reabilitaria as interrupes

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?

Muito usado em pequenos trechos de cdigo do ncleo


Dep. Cincia da Computao

Excluso Mtua - Variveis de trava


Uma varivel em espao de memria compartilhada serviria de trava ou impedimento
Varivel lock inicia com 0 Se processo deseja entrar em regio crtica, verifica lock
Se lock for 0, altera o valor para 1 e entra na regio crtica Se lock for 1, aguarda que ela se torne 0

Resolve o problema?
No! Condio de disputa!
Dep. Cincia da Computao

Excluso mtua - Espera Ocupada


Varivel compartilhada que representa de quem a vez de entrar em regio crtica
Processo que deseja entrar na regio crtica deve verificar continuamente a varivel de vez
Quando o valor representa sua vez, entra na regio crtica Se no, continua verificando em loop, continuamente

Espera ocupada Alternncia obrigatria

Dep. Cincia da Computao

Espera Ocupada - Alternncia Obrigatria

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

Dep. Cincia da Computao

Espera Ocupada - Instruo TSL


Test and Set Lock
Testar e atualizar a varivel de trava TSL RX, LOCK
L o contedo da palavra de memria LOCK no registrador RX Armazena um valor diferente de zero (0) no endereo de lock Operaes em uma sequncia indivisvel

Podem ser escritas rotinas em cdigo de montagem usando tal instruo, para entrada e sada em regies crticas
Dep. Cincia da Computao

Espera Ocupada - Instruo TSL

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

Dep. Cincia da Computao

Dormir/Acordar

Dep. Cincia da Computao

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 so manipulados por duas operaes


Down: Verifica se o valor do semforo tem valor:
Se >0, decrementa o semforo - gasta um sinal de wakeup Se 0, o processo posto para dormir, sem terminar down Da verificao ao adormecer, uma ao atmica Up: Incrementa o valor de um semforo Se h processos dormindo naquele semforo, um deles acordado Incremento e sinalizao so uma ao atmica

Dep. Cincia da Computao

Semforos
semaphore fillCount = 0; semaphore emptyCount = BUFFER_SIZE;

procedure producer() { while (true) { item = produceItem(); down(emptyCount);

procedure consumer() { while (true) { down(fillCount); item = removeItemFromBuffer(); up(emptyCount);

putItemIntoBuffer(item); up(fillCount); } }
Dep. Cincia da Computao

consumeItem(item); } }

Semforos

Dep. Cincia da Computao

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

Possui duas operaes


mutex_lock: Para entrada na regio crtica Se o mutex estiver desimpedido, processo pode continuar Caso contrario, processo ser bloqueado mutex_unlock: Sada da regio crtica Acorda um dos processos bloqueados naquele mutex

Dep. Cincia da Computao

Mutexes

Dep. Cincia da Computao

Semforos e Mutexes
Excelentes mecanismos de comunicao entre processos
Semforos vo alm da excluso mtua, permitindo sincronizao mais rica entre processos

Fceis de usar, se o programador for cuidadoso Erros podem ocorrer...


Inverter a ordem de sinalizao de um semforo de excluso mtua com o de sincronizao Deadlock!
Dep. Cincia da Computao

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

Dep. Cincia da Computao

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

o compilador o responsvel por gerar cdigo que implemente a excluso mtua


Menor propenso a erros Cada regio crtica pode ser, portanto, um procedimento do monitor

Dep. Cincia da Computao

Monitores

Dep. Cincia da Computao

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

Dep. Cincia da Computao

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

Dep. Cincia da Computao

Monitores

Dep. Cincia da Computao

Monitores em Java

Dep. Cincia da Computao

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

Ambos so timos para IPC em mquinas multiprocessdas


Implementao por memria compartilhada TSL

Mas e se os processadores esto distribudos em uma rede?

Dep. Cincia da Computao

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

Redes de comunicao so to confiveis quanto memria compartilhada?


Mensagem de reconhecimento (ACK)!!!

Dep. Cincia da Computao

Troca de Mensagens
Se reconhecimento no for devolvido depois de certo tempo
Fazer retransmisso da mensagem!!

Mas e se a mensagem foi corretamente recebida e o que se perdeu foi o reconhecimento?


Duplicou-se a mensagem!!! Fazer sequenciao!!!

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

Dep. Cincia da Computao

Troca de Mensagens

Dep. Cincia da Computao

Barreiras
Manipulao de grupos de processos
Algumas aplicaes so divididas em fases Processos somente avanam depois que todos completaram a fase

Barreira no final de cada fase


Primitiva barrier()

Dep. Cincia da Computao

Barreiras

Dep. Cincia da Computao

Problemas Clssicos de IPC


Problemas que ilustram situaes que podem ocorrer no compartilhamento de recursos, que acabam sendo recorrentes em sistemas operacionais
Jantar dos Filsofos Leitores e Escritores Barbeiro Sonolento

Dep. Cincia da Computao

Jantar dos Filsofos


5 filsofos Filsofos passam o dia pensando ou comendo 5 garfos, compartilhados So necessrios dois garfos para comer

Dep. Cincia da Computao

Jantar dos Filsofos

Dep. Cincia da Computao

Jantar dos Filsofos

Dep. Cincia da Computao

Jantar dos Filsofos

Dep. Cincia da Computao

Leitores e Escritores
Modela acessos a base de dados
Leitores podem acessar concorrentemente entre si Escritores devem acessar de forma exclusiva

Dep. Cincia da Computao

Leitores e Escritores

Dep. Cincia da Computao

Barbeiro Sonolento

Dep. Cincia da Computao

Barbeiro Sonolento

Dep. Cincia da Computao

Você também pode gostar