sincronização e comunicação entre processos - ime-uspadao/scep.pdf · escalonamento...
Post on 14-Dec-2018
233 Views
Preview:
TRANSCRIPT
3
INTRODUÇÃO Em um sistema multiprogramado (concorrente) os
processos alternam sua execução (ou seja, são
executados alternadamente pela UCP) segundo critério de
escalonamento estabelecidos pelo sistema operacional.
Processos concorrentes compartilham diversos recursos
do sistema, como arquivos, registros, dispositivos de
Entrada/Saída e áreas da memória.
4
INTRODUÇÃO O compartilhamento de recursos entre processos
pode ocasionar situações indesejáveis, tal como o
processamento incorreto de programas.
– Exemplo: o processo leitor pode ler quando o processo
gravador ainda não finalizou a gravação
Para evitar estas situações indesejáveis, os processos
concorrentes devem ter suas execuções sincronizadas,
a partir de mecanismos oferecidos pelo sistema
operacional.
5
ESPECIFICAÇÃO DA CONCORRÊNCIA (FORK E JOIN)
A primeira notação para a especificação da concorrência
em um programa foram os comandos FORK e JOIN,
introduzidos por Conway(1963) e Dennis e Van Horn(1966).
6
ESPECIFICAÇÃO DA CONCORRÊNCIA (FORK E JOIN)
O programa A começa a ser executado e, ao encontrar o
comando FORK, faz com que seja criado outro processo para
a execução do programa B, concorrentemente ao programa
A
O comando JOIN permite que o programa A sincronize-se
com o B, ou seja, quando o programa A encontrar o
comando JOIN, só continuará a ser processado após o
término da execução do programa B.
7
PROBLEMA DO COMPARTILHAMENTO DE RECURSOS
Os sistemas operacionais multiprogramáveis executam processos
concorrentemente. Desde que esses processos compartilham recursos
do sistema (variável na memória principal ou arquivo no disco, por
exemplo).
Isso pode ocasionar alguns problemas CASO tudo não seja feito da
maneira correta como veremos abaixo.
O programa abaixo atualiza (após o WRITE) o saldo bancário de um
cliente após um lançamento de débito ou crédito.
– O programa lê o registro do cliente no Arquivo Contas, lê o valor a ser
depositado ou retirado e, em seguida, atualiza o saldo no Arquivo de contas
(após o WRITE)
atualização
leitura
8
PROBLEMA DO COMPARTILHAMENTO DE RECURSOS
atualização
leitura
ARQUIVO CONTAS
Processo 01 Processo 02
débito crédito
Reg_Cliente
Vamos considerar que os dois processos possuem o código do
programa conta_corrente
9
PROBLEMA DO COMPARTILHAMENTO DE RECURSOS
Os dois PROCESSOS estão atualizando o SALDO de um mesmo
CLIENTE
– O processo 1 (do primeiro funcionário) lê o registro do cliente e
debita um valor no saldo do cliente;
– Antes de gravar o novo saldo do arquivo (com comando
write), o processo 2 (do segundo funcionário) lê o registro do
mesmo cliente e credita um valor no saldo do cliente;
Independentemente de qual dos processos atualize o saldo
primeiro no arquivo (com comando write), o dado gravado
estará inconsistente (como veremos).
atualização
leitura
10
PROBLEMA DO COMPARTILHAMENTO DE RECURSOS
PROCESSO 01 : READ registro de Antônio saldo = 500
PROCESSO 01 : DEBITA 50,00 500 - 50 = 450
ANTES do PROCESSO 01 fazer um WRITE (Arq_Contas, Reg_Cliente)
– PROCESSO 02 : READ registro de Antônio saldo = 500
– PROCESSO 02 : CREDITA 100,0 500+100 = 600
PROCESSO 01: WRITE (Arq_Contas, Reg_Cliente): saldo = 450
PROCESSO 02: WRITE (Arq_Contas, Reg_Cliente): saldo = 600
(SALDO FINAL ERRADO)
ARQUIVO CONTAS
Processo 01 Processo 02
débito crédito
Reg_Cliente
11
PROBLEMA DO COMPARTILHAMENTO DE RECURSOS
PROCESSO 01 : READ registro de Antônio saldo = 500
PROCESSO 01 : DEBITA 50,00 500 - 50 = 450
ANTES do PROCESSO 01 fazer um WRITE (Arq_Contas, Reg_Cliente)
– PROCESSO 02 : READ registro de Antônio saldo = 500
– PROCESSO 02 : CREDITA 100,0 500 +100 = 600
PROCESSO 02: WRITE (Arq_Contas, Reg_Cliente): saldo = 600
PROCESSO 01: WRITE (Arq_Contas, Reg_Cliente): saldo = 450
(SALDO FINAL ERRADO)
ARQUIVO CONTAS
Processo 01 Processo 02
débito crédito
Reg_Cliente
12
EXCLUSÃO MÚTUA (MUTEX)
OBJETIVO
– Evitar que dois ou mais processos acessem um mesmo recurso
(no exemplo anterior o arquivo contas) simultaneamente.
MECANISMO
– Enquanto o processo 01 estiver acessando um determinado
recurso e processo 02 deve aguardar o término da utilização do
recurso pelo processo 01.
REGIÃO CRÍTICA
– É a parte do código do programa onde é feito o acesso ao recurso
compartilhado é denominada região crítica.
EXCLUSÃO MÚTUA
– É garantir que os processos devem fazer acesso à região crítica de
forma sincronizada, ou seja, proibir que dois ou mais processos
entrem em suas regiões críticas ao mesmo tempo
13
EXCLUSÃO MÚTUA (MUTEX)
Região Crítica
Recurso compartilhado
REGIÃO CRÍTICA
É a parte do código do programa onde é feito o acesso ao recurso
compartilhado é denominada região crítica.
14
PROBLEMA DO COMPARTILHAMENTO DE RECURSOS (RESOLVIDO COM CONTROLE DE ACESSO A REGIÃO CRÍTICA )
PROCESSO 01 : READ registro de Antônio saldo = 500
PROCESSO 01 : DEBITA 50,00 500 - 50 = 450
PROCESSO 01: WRITE (Arq_Contas, Reg_Cliente): saldo = 450
PROCESSO 02 : READ registro de Antônio saldo = 450
PROCESSO 02 : CREDITA 100,0 450+100 = 550
PROCESSO 02: WRITE (Arq_Contas, Reg_Cliente): saldo = 550
(SALDO FINAL CORRETO)
ARQUIVO CONTAS
Processo 01 Processo 02
débito crédito
Reg_Cliente
16
DEADLOCK
DEFINIÇÃO
– É a situação em que um processo aguarda por um
recurso que nunca estará disponível ou um evento que
nunca ocorrerá.
– É conseqüência do compartilhamento de recursos
(dispositivos, arquivos e registros,etc) entre processos
concorrentes onde a exclusão mútua é exigida;
17
PROCESSO 01 ESTÁ COM RECURSO 01 E AGUARDA O RECURSO 02
PROCESSO 02 ESTÁ COM RECURSO 02 E AGUARDA O RECURSO 03
PROCESSO 03 ESTÁ COM RECURSO 03 E AGUARDA O RECURSO 04
PROCESSO 04 ESTÁ COM RECURSO 04 E AGUARDA O RECURSO 01
DEADLOCK É a situação em que um processo aguarda por um recurso
que nunca estará disponível ou um evento que nunca ocorrerá.
18
DEADLOCK
SITUAÇÕES SIMULTÂNEAS PARA QUE OCORRA UM
DEADLOCK
– Exclusão mútua: cada recurso (em uma região crítica)
só pode estar alocado a um único processo em um
determinado instante;
– Espera por recurso: um processo, além dos recursos
já alocados, pode estar esperando por outros recursos.
– Não preempção: um recurso não pode ser liberado de
um processo só porque outros processos desejam usar
o mesmo recurso;
– Espera circular: um processo pode ter de esperar por
um recurso alocado a outro processo e vice-versa.
19
DEADLOCK (espera circular)
Espera circular: um processo pode ter de esperar por um
recurso alocado a outro processo e vice-versa.
20
PREVENÇÃO DO DEADLOCK (É preciso garantir que uma das quatro condições necessárias para a
sua existência nunca se satisfaça)
Exclusão mútua: cada recurso só pode estar alocado a
um único processo em um determinado instante;
– Prevenção: a ausência da exclusão mútua acaba com o
problema do deadlock, porém gera os problemas já
apresentados com relação ao compartilhamento de recursos.
Espera por recurso: um processo, além dos recursos já
alocados, pode estar esperando por outros recursos.
– Prevenção: processos que já possuem recursos garantidos
não devem solicitar novos recursos.
21
PREVENÇÃO DO DEADLOCK (É preciso garantir que uma das quatro condições necessárias para a sua
existência nunca se satisfaça)
Não preempção: um recurso não pode ser liberado de um
processo só porque outros processos desejam usar o
mesmo recurso;
– Prevenção: permitir que um recurso seja retirado do processo no
caso de outro processo necessitar do mesmo recurso.
Espera circular: um processo pode ter de esperar por um
recurso alocado a outro processo e vice-versa. – Prevenção: é forçar o processo a ter apenas um recurso por vez
22
CORREÇÃO DEADLOCK
(o deadlock já ocorreu) SOLUÇÃO 1
– Eliminar um ou mais processos envolvidos no deadlock e liberar
os recursos. A escolha do processo a ser eliminado é feita,
normalmente, de forma aleatória ou com base em algum tipo de
prioridade
– MUITO UTILIZADO
SOLUÇÃO 2
– liberação de apenas alguns recursos alocados aos processos
para outros processos, até que o ciclo de espera termine.
– É necessário que o sistema possa suspender um processo, liberar
seus recursos e, após a solução do problema, retornar à execução
do processo, sem perder o processamento já realizado.
– Gera um OVERHEAD muito grande.
SOLUÇÕES PARA
EXCLUSÃO MÚTUA
23
EXCLUSÃO MÚTUA
É proibir que dois ou mais processos entrem em suas
regiões críticas ao mesmo tempo
24
SOLUÇÕES PARA EXCLUSÃO MÚTUA
SOLUÇÕES DE HARDWARE
– Desabilitar Interrupções
– Instrução test-and-set
SOLUÇÕES DE SOFTWARE
– Algoritmo de DEKKER
– Algoritmo de PETTERSON
25
SOLUÇÕES PARA EXCLUSÃO MÚTUA
Algoritmo de DEKKER
– Primeira solução de software que garantiu a exclusão mútua entre
dois processos sem a incorrência de problemas foi proposta pelo
matemático holandês T. Dekker.
Algoritmo de PETTERSON
– O algoritmo proposto por G. L. Peterson apresenta uma solução
para o problema da exclusão mútua entre dois processos que pode
ser facilmente generalizada para o caso de N processos.
26
SINCRONIZAÇÃO CONDICIONAL Situação onde o acesso ao recurso compartilhado exige a
sincronização de processos vinculado a uma condição de acesso.
EXEMPLO CLÁSSICO
Comunicação entre dois processos através de operações de gravação
e leitura em um buffer, onde processos geram informações (processos
produtores) utilizadas por outros processos (processos consumidores).
Os processos devem estar sincronizados a uma variável de
condição, de forma que um processo não tente gravar dados em um
buffer cheio ou realizar uma leitura em um buffer vazio.
27
MECANISMOS
(Exclusão Mútua e Sincronização Condicional)
SEMÁFOROS
– Mecanismos para implementação da exclusão mútua e
sincronização condicional
MONITORES
– Mecanismos para implementação da exclusão mútua e
sincronização condicional
TROCA DE MENSAGENS:
– Mecanismo de sincronização e comunicação entre processos
LÓGICA DOS SEMÁFOROS
down (nome_do_semaforo)
região protegida
up(nome_do_semaforo)
* Quando feito um down se semaforo for 0 há um bloqueio
31
Armazena quantidade de
espaços preenchidos
No BUFFER
Armazena quantidade de
espaços vazios
No BUFFER
Se emptyCount =0
bloqueia a
produção de itens
Se fillCount =0
bloqueia a remoção
de itens
32
NO LINUX,
• BAIXAR O AQUIVO prod-cons-sem.c
•IR PARA PASTA /home/aluno/Downloads
•Executar os comandos baixo
top related