Академический Документы
Профессиональный Документы
Культура Документы
Sistemas
Multiprogramveis
Os sistemas multiprogramveis surgiram na dcada de 60, passou a
ser possvel estruturar aplicaes de maneira que partes diferentes
do cdigo do programa pudessem executar concorrentemente.
Este tipo de aplicao, denominada aplicao concorrente, tem como
base a execuo cooperativa de mltiplos processos ou threads, que
trabalham em uma mesma tarefa na busca de um resultado comum.
Sistemas
Multiprogramveis
Em sistemas multiprogramveis com um nico processador, os processos
alternam sua execuo segundo critrios de escalonamento estabelecidos
pelo Sistema Operacional, mesmo no havendo paralelismo na execuo
das instrues, ocorre significativo ganho de desempenho.
Sistemas
Multiprogramveis
natural que processos de uma aplicao concorrente compartilhem
recursos do sistema, como arquivos, registros, dispositivos de E/S e
reas de memria.
Comunicao e Sincronizao
Muitas vezes, em uma aplicao concorrente, necessrio que
processos comuniquem-se entre si, e essa comunicao pode
ser implementada de diversos mecanismos, como variveis
compartilhadas na memria principal ou troca de mensagens.
Nesta situao, necessrio que os processos tenham sua
execuo
sincronizada pelo sistema operacional
.
Comunicao e Sincronizao
Por exemplo, podemos ter dois processos concorrentes
compartilhando um buffer para trocar informaes atravs de
operaes de gravao e leitura, onde ambos os processos
necessitam aguardar que o buffer esteja pronto.
Comunicao e
Sincronizao
Para cooperar, processos precisam se comunicar e se sincronizar.
Problemas de Compartilhamento de
Recurso
Alguns problemas que podem ocorrer devido falha na sincronizao
entre processos concorrentes.
Primeiro exemplo o problema do programa Conta_Corrente, que
atualiza o saldo bancrio de um cliente aps um lanamento de dbito
ou crdito noarquivo de contas-correntes Arq_Contas.
Problemas de
Compartilhamento
de Recurs
o
PROGRAM Conta_Corrente;
.
.
READ (Arq_Contas, Reg_Cliente);
READLN
(Valor_Dep_Ret);
Reg_Cliente.Saldo :=
Reg_Cliente.Saldo
WRITE (Arq_Contas, Reg_Cliente);
.
.
END.
+
Valor_Dep_Ret;
Problemas de
Simultaneidade
Considerando processos concorrentes pertencentes a dois funcionrios do banco
(caixas), que atualizam o saldo de um mesmo cliente simultaneamente, a
situao de compartilhamento do recurso pode ser analisada.
Problemas de
Simultaneidade
Condies de
Corrida
Analisando o exemplo apresentado, possvel concluir que em
qualquer situao, onde dois ou mais processos compartilham um mesmo
recurso, devem existir mecanismos de controle para evitar esses tipos de
problemas, conhecidos como condies de corrida (race conditions ).
Ocorre
quando?
Quando processos esto lendo ou escrevendo dados compartilhados e o
resultado final depende de qual processo executa e quando (em que ordem)
este executa.
Excluso
Mtua
A soluo mais simples para evitar os problemas de
compartilhamento apresentados impedir que dois ou mais
processos acessem um mesmo recurso simultaneamente.
Para isso, enquanto um processo estiver acessando determinado
recurso, todos os demais processos que queiram acess-lo devero
esperar pelo trmino da utilizao do recurso.
Essa idia de exclusividade de acesso chamada de excluso mtua
(mutual exclusion).
Regies
Crticas
A excluso mtua deve afetar apenas os processos concorrentes somente
quando um deles estiver fazendo acesso ao recurso compartilhado.
Regies
Crticas
Os mecanismos que implementam a excluso mtua utilizam
protocolos de acesso regio crtica.
Toda vez que um processo desejar executar uma instruo de sua
regio crtica, dever obrigatoriamente executar antes um
protocolo de entrada nesta regio.
Da mesma forma, ao sair da regio crtica um protocolo de sada
dever ser executado.
Estes protocolos garantem a excluso mtua da regio crtica do
programa.
Regies Crticas
BEGIN
.
.
Entra_Na_Regiao_Crtica;
/* protocolo de entrada
*/
Regiao_Crtica
;
/* operaes executadas
*/
Sai_Da_Regiao_Crtica;
.
.
END.
/* protocolo de sada
*/
Espera
Indefinida
Estas solues propostas para o acesso sincronizado devem garantir a excluso
mtua e tambm evitar que duas outras situaes indesejadas ocorram.
Espera
Indefinida
Este critrio de escolha poder ocasionar uma espera indefinida, quando for
utilizado critrio baseado em escolha aleatria ou em funo da prioridade do
processo (processos de baixa prioridade sero prejudicados).
Isto ocorre devido ao fato do recurso estar livre, porm ainda alocado
a um processo, impedindo que os demais utilizem o recurso.
Mecanismos de
Sincronizao
Sincronizao
Condicional
Entre os mecanismos de sincronizao, a sincronizao condicional uma
situao onde o acesso ao recurso compartilhado exige a sincronizao de
processos vinculada a uma condio de acesso.
Mecanismos de
Sincronizao
Um exemplo clssico desse tipo de sincronizao a comunicao entre dois
Mecanismos de
Sincronizao
Nessa comunicao, enquanto um processo grava dados em um buffer, o
outro l os dados, concorrentemente.
Os processos envolvidos devem estar sincronizados a uma varivel de
condio, de forma que um processo no tente gravar dados em um buffer
cheio ou realizar uma leitura em um buffer vazio.
Este problema sincronizao conhecido como problema do
produtor / consumidor ou do buffer limitado.
Mecanismos de
Sincronizao
Semforos
O conceito de semforos foi proposto por E. W. Dijkstra em 1965, sendo
apresentado como um mecanismo de sincronizao que permitia implementar,
de forma simples, a excluso mtua e sincronizao condicional entre processos.
De fato, o uso de semforos tornou-se um dos principais mecanismos utilizados em
projetos de sistemas operacionais e em aplicaes concorrentes.
Mecanismos de
Sincronizao
Semforos so classificados em dois tipos:
- Semforos binrios: chamados de mutexes (mutual
exclusion semaphores), s podem assumir valores 0 e 1.
Mecanismos de
Sincronizao
Monitores
Mecanismos de
Sincronizao
Mecanismos de Sincronizao
Toda vez que algum processo faz uma chamada a um procedimento, 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.
A implementao da excluso mtua via monitores no implementada
diretamente pelo programador, assim como no caso do uso dos
semforos, o prprio compilador encarrega-se de garantir a excluso
mtua entre os procedimentos previamente definidos.
Mecanismos de
Sincronizao
Mecanismos de Sincronizao
Troca de Mensagens
Tambm um mecanismo de comunicao e sincronizao entre
processos.
O sistema operacional possui um subsistema de mensagens que suporta esse
mecanismo sem que haja a necessidade do uso de variveis compartilhadas.
Mecanismos de Sincronizao
Os processos cooperativos podem fazer uso de um buffer para trocar mensagens atravs de duas rotinas: SEND (transmissor, mensagem) e RECEIVE (receptor,
mensagem).
Mecanismos de Sincronizao
O mecanismo de troca de mensagens exige que os processos envolvidos na comunicao tenham suas execues sincronizadas
A troca de mensagens entre os processos pode ser implementada de duas maneiras distintas: comunicao direta e comunicao indireta.
Mecanismos de Sincronizao
A comunicao indireta entre processos utiliza uma rea compartilhada, onde as mensagens podem ser colocadas pelo processo transmissor e
retiradas pelo receptor.
Esse tipo de buffer conhecido como mailbox ou port, e suas caractersticas, como identificao e capacidade de armazenamento de mensagens,
so definidas no momento de criao.
Deadlock
Deadlock ( espera circular ) a situao em que um processo aguarda por um recurso que nunca estar disponvel ou um evento que nunca
ocorrer.
Essa situao consequncia, na maioria das vezes, do compartilhamento de recursos, como dispositivos, arquivos e registros, entre processos
recorrentes onde a excluso mtua exigida.
Deadlock
Para que ocorra a situao de deadlock, 4 condies so necessrias simultaneamente:
Deadlock - Preveno
Como vimos, para que um deadlock ocorra, todas as quatro condies listadas
devem ocorrer simultaneamente.
Isto quer dizer que se garantirmos que somente uma delas no possa ocorrer,
estaremos prevenindo a ocorrncia de deadlocks em um determinado sistema.
Deadlock - Preveno
Examinemos as quatro condies separadamente:
1 - Negando a Condio de Excluso
Mtua
Conforme j foi visto, a condio de excluso mtua no deve ser negada,
pois dois processos acessando um recurso simultaneamente poderiam levar
o sistema a uma situao de caos.
Imagine o exemplo de dois processos acessandouma mesma impressora ao
mesmo tempo!
Uma soluo utilizar um sistema de spool, onde um nico processo de spool
acessa a impressora diretamente, e no acessa nenhum outro recurso. Uma vez
que os processos no imprimem diretamente, e o processo de spool acessa
somente o recurso impressora, deadlocks no podem ocorrer.
O problema que nem todos os recursos podem ser alocados via
spooling.
Deadlock - Preveno
2
Deadlock - Preveno
3
Deadlock - Preveno
4
Deadlock - Preveno
4