Prof. Sidney Cassemiro do Nascimento
Comunicação entre Processos
Sistemas Operacionais I
IFS
2
Conteúdo
Introdução
Comunicação entre Processos
– Aplicações Concorrentes
– Problemas de Compartilhamento de Recursos – Exclusão Mútua
– Sincronização de Processos
Considerações Finais
Referências
3
Introdução
Comunicação entre Processos
Aplicação concorrente
, tem como base a
execução cooperativa de múltiplos processos ou
threads.
Sistema multiprogramável
com único
processador, os processos alternam sua
execução escalonamento pelo SO
.Compartilhamento de recursos
entre
processos pode ocasionar problemas
4
Comunicação entre Processos
Comunicação entre Processos
Neste tópico devemos nos preocupar com três
pontos:
a troca de informações entre processos;
a garantia de que um processo não invada o espaço físico do outro;
e a garantia de que um processo não altere os dados que estão sendo trabalhados por outro (que deve
5
Aplicações Concorrentes
Exemplo de dois processos concorrentes que
compartilham um buffer para trocar informações através de operações de gravação e leitura.
6
Aplicações Concorrentes
Os mecanismos que garantem a comunicação
entre processos concorrentes e o acesso a
recursos compartilhados são chamados de
mecanismos de sincronização.
7
Problemas de
Compartilhamento de Recursos
Compartilhamento de um arquivo em disco
Atualiza saldo bancário de um cliente após um
lançamento de débito ou crédito no arquivo da conta corrente Arq_Contas.
Comunicação entre Processos
PROGRAM Conta_Corrente; BEGIN
...
READ(Arq_Contas, Reg_Cliente); READLN(Valor_Dep_Ret);
Reg_Cliente.Saldo := Reg_Cliente.Saldo + Valor_Dep_Ret; WRITE(Arq_Contas, Reg_Cliente);
... END.
8
Problemas de
Compartilhamento de Recursos
A atualização do saldo do mesmo cliente
simultaneamente, tendo o Reg_Cliente compartilhado entre os processos (Caixa 1 e Caixa 2).
Independente de qual processo (débito ou crédito) atualize primeiro o saldo no arquivo, o dado gravado estará inconsistente.
9
Problemas de
Compartilhamento de Recursos
Compartilhamento de uma variável entre dois
processos
O problema da concorrência pode levar a resultados inesperados.
Comunicação entre Processos
PROGRAM Processo_A; BEGIN ... X := X + 1; ... END. PROGRAM Processo_B; BEGIN ... X := X - 1; ... END.
10
Problemas de
Compartilhamento de Recursos
Os comandos de atribuição, em uma linguagem de alto nível, podem ser decompostos em comandos mais
elementares, como visto a seguir:
O valor da variável X é inconsistente em função da forma concorrente com que os dois processos executam.
11
Problemas de
Compartilhamento de Recursos
Essa concorrência entre dois ou mais processos
para manipulação de um dado compartilhado, de
tal forma que a sequência do acesso afeta o
resultado da execução é chamado de Condição
de Corrida (race condition).
Vários processos tentando acessar mesmo dado e
resultado depende de qual deles executa no momento certo.
12
Exclusão Mútua
Exclusão mútua de execução: é uma forma
encontrada para se ter certeza de que se um
processo estiver usando uma variável ou um
arquivo compartilhado, os demais serão
impedidos de fazer a mesma coisa.
Região crítica (RC): é a parte do programa cujo
processamento pode levar à ocorrência de
condições de corrida.
Um processo pode ter uma ou mais RCs e uma
RC pode ter uma ou mais variáveis
compartilhadas.
13
Exclusão Mútua
Condições para uma boa solução do problema de
exclusão mútua:
Dois processos não podem estar simultaneamente dentro de suas RCs correspondentes;
Nenhuma suposição pode ser feita a respeito da
velocidade relativa de processamento ou do número de processadores do sistema;
Nenhum processo que esteja rodando fora da sua RC pode bloquear outros processos;
Nenhum processo pode ser obrigado a esperar indefinidamente para entrar em sua RC.
14
Exclusão Mútua
Problemas comuns decorrentes da sincronização
entre processos
: Velocidade de execução dos processos – pode
interferir em uma boa solução para o problema da exclusão mútua.
Starvation – É a situação onde um processo nunca
consegue executar sua RC e, consequentemente, acessar o recurso compartilhado.
Sincronização Condicional – É uma situação em
que o acesso ao recurso compartilhado exige a
sincronização de processos vinculada a uma condição de acesso. (ex: Um recurso pode não se encontrar PRONTO para uso devido a uma condição específica).
15
Exclusão Mútua
Soluções de Hardware
Desabilitação de interrupções
A forma mais simples de garantir a exclusão mútua, é fazer com que cada processo, ao entrar na RC,
desabilite interrupções, e as reabilite antes de sair, impedindo que o processador seja chaveado para outro processo.
O processo monopoliza o processador e executa a RC do começo ao fim de maneira ininterrupta.
Técnica útil para ser usada pelo núcleo do SO, mas não é apropriado como mecanismo geral de exclusão mútua para processos do usuário uso indevido
causaria problemas.
16
Exclusão Mútua
Soluções de Software
Variáveis de Bloqueio ou Travamento
A solução utiliza uma variável compartilhada que indica se a região está liberada ou não.
Valor é inicialmente 0;
Antes de entrar o processo verifica o valor;
Se for 0 ele seta para 1 e entra;
Se for 1, o processo espera;
Existe algum problema nesta solução?
17
Alternância Estrita
Está solução obriga que a RC seja dada a um dos processos por vez, em uma alternância estrita.
Variável indica de quem é a vez de entrar na RC;
Uso da espera ocupada, que deve ser evitada, em razão de consumir tempo de processador;
O que acontece se um dos processos for muito mais rápido do que outro?
Entrada estritamente alternada dos processos em suas regiões críticas.
Comunicação entre Processos
Exclusão Mútua
18
Diversos algoritmos foram propostos na tentativa de implementar a exclusão mútua através de soluções por software.
As primeiras soluções tratavam apenas da exclusão
mútua para dois processos e inicialmente apresentavam alguns problemas.
De forma evolutiva, procurou-se o desenvolvimento de soluções definitivas para a exclusão mútua de N
processos, através de vários algoritmos.
Comunicação entre Processos
Exclusão Mútua
19
Semáforos
O conceito de
semáforo
foi proposto como uma
solução mais geral e simples de ser implementada,
para os problemas de sincronização entre processos
concorrentes.
Um semáforo é uma variável inteira, não negativa,
que só pode ser manipulada por duas instruções
DOWN e UP atômicas.
As instruções DOWN e UP funcionam como
protocolos de entrada e saída, respectivamente.
O semáforo fica associado a um recurso
compartilhado.
20
Semáforos
DOWN:
Se s > 0, faz s = s – 1 e quem chamou DOWN entra na RC;
Se s = 0, RC está ocupada e quem chamou DOWN é bloqueado, ficando numa fila associada ao semáforo
s.
UP:
faz s = s + 1;
se houver processos bloqueados na fila associada a
s, um deles é escolhido de forma justa e colocado no estado “pronto para rodar” para tentar DOWN
novamente.
21
Semáforos
22
Monitores
São mecanismos de sincronização estruturada de
alto nível que tornam mais simples o
desenvolvimento de aplicações concorrentes.
O
MONITOR
é formado por procedimentos e
variáveis encapsuladas dentro de um módulo, onde
somente um processo pode estar executando um
dos procedimentos do monitor em um determinado
instante.
Toda implementação da exclusão mútua nos
monitores é realizada pelo compilador, e não mais
pelo programador, como no caso do uso de
semáforos.
23
Monitores
Característica mais importante – é a implementação
automática da exclusão mútua entre seus procedimentos.
24
Deadlock
É quando um processo aguarda por um recurso
que nunca estará disponível ou um evento que
não ocorrerá.
Isso é consequência do compartilhamento de
recursos, como dispositivos, arquivos, registros
entre processos concorrentes em que a exclusão
mútua é exigida.
25
Considerações Finais
Nesta aula foi apresentado como a concorrência
de processos pode ser implementada, os
problemas de compartilhamento de recursos,
soluções e mecanismos do SO para sincronizar
processos.
26
Referências
MACHADO, Francis B.; MAIA, Luiz P.
Arquitetura de Sistemas Operacionais. 4.ed. Ed.
LTC, 2007.
27