Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

CCT0011 – Sistemas Operacionais
Aula 06 – Comunicação entre Processos (2ª parte)
Sistemas Operacionais
Estrutura do conteúdo
 Semáforos
 Monitores
 Troca de mensagens
 Deadlock
Sistemas Operacionais
Semáforos
O conceito de semáforos foi o mecanismo de sincronização que permitiu implementar, a 
exclusão mútua e sincronização condicional entre processos, de forma simples e 
eficiente.
• Um semáforo é uma variável inteira, não negativa, que só pode ser manipulada por 
duas instruções: DOWN e UP. 
• As instruções DOWN e UP são indivisíveis, isto é, suas execuções não podem ser 
interrompidas.
• A instrução UP incrementa uma unidade ao valor do semáforo, enquanto a instrução 
DOWN decrementa a variável.
Sistemas Operacionais
Semáforos
• Se a instrução DOWN for executada em um semáforo com valor 0, o processo entra 
em estado de espera. 
• Em geral essas instruções são implementadas no processador, que deve garantir todas 
essas condições. 
• Os semáforos podem ser classificados como binários ou contadores. Os semáforos 
binários, também chamados de mutexes, só podem assumir valores 0 e 1, enquanto os 
semáforos contadores podem assumir qualquer valor inteiro positivo além do 0.
Sistemas Operacionais
Semáforo binário na exclusão mútua
 A exclusão mútua pode ser implementada através de um semáforo binário associado 
ao recurso compartilhado. A vantagem é a não ocorrência da espera ocupada.
 As instruções DOWN e UP funcionam como protocolos de entrada e saída, 
respectivamente, para que um processo possa entrar e sair da sua região crítica.
 Valor > 0, indica que nenhum processo está utilizando o recurso, enquanto o valor = 0, 
indica que o recurso está em uso e o acesso está impedido para outros processos.
 Sempre que deseja entrar na sua região crítica, um processo executa uma instrução 
DOWN. Se o semáforo for igual a 1, este valor é decrementado, e o processo pode 
executar as instruções da sua região crítica.
Sistemas Operacionais
Semáforo binário na exclusão mútua
 Se uma instrução DOWN é executada em um semáforo com valor igual a 0, o processo 
fica impedido do acesso, permanecendo em estado de espera, e consequentemente, 
não gerando overhead para o processador.
 O processo que está acessando o recurso, ao sair de sua região crítica, executa uma 
instrução UP, incrementando o valor do semáforo e liberando o acesso ao recurso.
 Se um ou mais processos estiverem esperando pelo uso do recurso (operações DOWN
pendentes), o sistema selecionará um processo na fila de espera associada ao recurso 
e alterará o seu estado para pronto.
Sistemas Operacionais
Semáforo binário na exclusão mútua
Fila de espera
de processos
Processo acessa
a região crítica
Processo deseja entrar
na região crítica
DO
W
N
 (S=
0)
DO
W
N
 (S
>
0)
UP (S) - processo sai
da região crítica
Libera processo
da fila de espera
Sistemas Operacionais
TYPE Semaforo = RECORD
Valor : INTEGER;
Fila_espera : (* Lista de processos pendentes * );
END;
PROCEDURE DOWN (VAR S : Semaforo);
BEGIN
IF ( S = 0) THEN Coloca_processos_na_fila_espera
ELSE
S := S – 1
END; 
PROCEDURE UP (VAR S : Semaforo);
BEGIN
S := S + 1
IF ( Tem_processo_esperando) then retira_fila_espera;
END; 
DOWN e UP
Instruções DOWN e UP, 
aplicadas a um semáforo S, 
podem ser representadas 
pelas definições ao lado, em 
uma sintaxe Pascal não 
convencional.
Sistemas Operacionais
Program Semaforo_1;
VAR s : Semaforo := 1;
Procedure Processo_A; 
Begin
Repeat
DOWN (s);
Região_critica_A;
UP (s);
Until False;
END;
Procedure Le_dados;
Begin
Repeat
DOWN (s);
Região_critica_B;
UP (s);
Until False;
END;
BEGIN
PABEGIN
Processo_A;
Processo_B;
PAREND;
END.
Processo_A Processo_B S Pendente 
Repeat Repeat 1 *
DOWN (s) Repeat 0 *
Região_critica_A DOWN(s) 0 Processo B
UP (s) DOWN (s) 1 Processo B
REPEAT Região_critica_B 0 *
Semáforos
Sistemas Operacionais
PROGRAM Semaforo_2;
VAR Evento : Semaforo := 0;
PROCEDURE Solicita_Leitura;
BEGIN
DOWN (Evento);
END;
PROCEDURE Le_dados;
BEGIN
UP (Evento);
END;
BEGIN
PARBEGIN
Solicita_Leitura;
Le_dados;
PAREND;
END.
Sincronização condicional utilizando semáforos
Além de permitirem a implementação da exclusão 
mútua, os semáforos podem ser utilizados nos casos 
onde a sincronização condicional é exigida.
Por exemplo, quando um processo solicita uma 
operação de E/S. O pedido faz com que o processo 
execute uma instrução DOWN no semáforo 
associado ao evento e fique no estado de espera, 
até que a operação seja completada.
Quando a operação termina, a rotina de tratamento da 
interrupção executa um UP no semáforo, liberando 
o processo do estado de espera.
Sistemas Operacionais
Sincronização condicional utilizando semáforos
Neste algoritmo, o semáforo é inicializado 
com o valor 0, o que garante que o 
processo Solicita_leitura permaneça no 
estado de espera até que o processo Le-
dados o libere.
PROGRAM Semaforo_2;
VAR Evento : Semaforo := 0;
PROCEDURE Solicita_Leitura;
BEGIN
DOWN (Evento);
END;
PROCEDURE Le_dados;
BEGIN
UP (Evento);
END;
BEGIN
PARBEGIN
Solicita_Leitura;
Le_dados;
PAREND;
END.
Sistemas Operacionais
Problema dos Filósofos
O problema dos filósofos é um exemplo clássico de sincronização de processos.
Ele se resume em uma mesa onde os filósofos podem sentar, comer e pensar. A mesa é 
composta por cinco pratos e cinco garfos. Sempre que um filósofo para de pensar e 
deseja comer, precisa utilizar dois garfo (direita e esquerda).
Um problema ocorre quando os filósofos estão segurando, cada um, um único garfo e 
nenhum conseguirá comer.
Algumas soluções foram propostas.
Sistemas Operacionais
Problema dos Filósofos
• Permitir que apenas quatro filósofos 
sentem-se à mesa simultaneamente.
• Permitir que um filósofo pegue um garfo 
apenas se o outro estiver disponível.
• Permitir que um filósofo ímpar pegue 
primeiro o garfo da esquerda e depois o da 
direita, enquanto um filósofo par pegue o 
garfo da direita e depois o da esquerda.
Sistemas Operacionais
Monitores
Estes mecanismos de sincronização de alto nível tentam tornar mais fácil o 
desenvolvimento e correção de programas concorrentes.
O monitor é formado por procedimentos e variáveis encapsulados dentro de um módulo, 
são considerados mecanismos de sincronização estruturados, diferente dos 
semáforos.
Sua característica mais importante é a implementação automática da exclusão mútua 
entre os procedimentos declarados, ou seja, somente um processo pode estar 
executando um dos procedimentos do monitor em um determinado instante.
A implementação da exclusão mútua via monitores não é implementada diretamente 
pelo programador, assim como no caso do uso dos semáforos; o próprio compilador 
encarrega-se de garantir a exclusão mútua entre os procedimentos previamente 
definidos.
Sistemas Operacionais
Monitores
Um monitor é definido especificando-se um 
nome, declarando-se variáveis locais, 
procedimentos e um código de inicialização. 
A estrutura de um monitor pode ser feita da 
seguinte forma:
MONITOR monitor_a;
(* Declaração das variáveis do monitor *)
PROCEDURE Regiao_Critica_1;
BEGIN
.
END;
PROCEDURE Regiao_Critica_2;
BEGIN
.
END;
PROCEDURE Regiao_Critica_3;
BEGIN
.
END;
BEGIN
(* Código de inicialização das variáveis)
END.
Declaração de
variáveis globais
Procedimentos
Fila de entrada
Inicialização
de variáveis
Proc. 1
Proc. 2
Proc. n
M
on
ito
r
Sistemas Operacionais
Monitores
A implementaçãoda exclusão mútua utilizando monitores 
não é realizada diretamente pelo programador, como 
no uso de semáforos. As regiões críticas devem ser 
definidas como procedimentos do monitor, e o 
compilador se encarregará de garantir a exclusão 
mútua entre esses procedimentos.
A comunicação do processo com o monitor é feita 
unicamente através de chamadas aos seus 
procedimentos e dos parâmetros passados.
Ao lado, um exemplo de programa que soma um valor a 
uma variável em um procedimento e diminui um valor, 
a essa mesma variável em outro procedimento.
PROGRAM Monitor_1;
MONITOR Regiao_Critica;
VAR X: Integer;
PROCEDURE Soma;
BEGIN
X:= X + 1;
END;
PROCEDURE Subtrai;
BEGIN
X:= X - 1;
END;
BEGIN
PARBEGIN
Regiao_Critica.Soma;
Regiao_Critica.Subtrai;
PAREND;
END.
Sistemas Operacionais
Monitores
Através de variáveis especiais, é possível associar a execução de um procedimento que faz 
parte do monitor, a uma determinada condição, garantindo a sincronização 
condicional.
As variáveis especiais de condição são manipuladas por intermédio de duas instruções, 
conhecidas como WAIT e SIGNAL.
A instrução WAIT faz com que o processo seja colocado no estado de espera, até que 
algum outro processo sinalize com a instrução SIGNAL que a condição de espera foi 
satisfeita.
Caso a instrução SIGNAL seja executada e não haja processo aguardando a condição, 
nenhum efeito surtirá.
Sistemas Operacionais
Declaração de
variáveis globais
Procedimentos
Fila de entrada
Inicialização
de variáveis
Proc. 1
Proc. 2
Proc. n
Mo
nito
r
Filas de espera
Condição C1
Condição C2
Condição Cn
Monitores
O monitor organiza os processos em espera utilizando filas associadas às condições de 
sincronização. A execução da instrução SIGNAL libera apenas um único processo da
fila de espera da condição associada.
Sistemas Operacionais
Troca de Mensagens
A troca de mensagens é um tipo de mecanismo de comunicação e sincronização entre 
processos.
O sistema operacional pode executar a troca de mensagem, sem o uso de variáveis 
compartilhadas através de um subsistema de mensagem.
A comunicação entre processos pode ser feita de com uso de buffer ou por um link de 
uma rede de computadores.
A troca de mensagens pode ser implementada por comunicação direta ou comunicação 
indireta. Processo
transmissor
Processo
receptor
SEND RECEIVE
Canal de comunicação
Sistemas Operacionais
Troca de Mensagens
A comunicação indireta utiliza área compartilhada (buffer) conhecido como mailbox ou 
port.
Rotinas SEND e RECEIVE são utilizadas neste processo
• SEND – permite o envio de uma mensagem para um processo receptor ;
• RECEIVE – permite recebimento da mensagem enviada por um processo 
transmissor.
Sistemas Operacionais
Troca de Mensagens
A comunicação direta só permite a troca de mensagens entre dois processos.
• O processo transmissor deve indicar explicitamente o nome do processo receptor, e 
vice-versa (mudança na identificação dos processo exige recompilação).
• Uma mensagem só pode ser lida após Ter sido enviada.
• Podem ocorrer perdas de mensagens.
• Se o emissor não receber um ACK em determinado tempo, reenvia a mensagem.
Sistemas Operacionais
Troca de Mensagens
Processos que estão trocando mensagens devem ter suas execuções sincronizadas, 
independente do mecanismo de comunicação que utilizam.
Existem três diferentes esquemas de implementar a sincronização entre processo que 
trocam mensagens.
1) Garantir que um processo fique esperando até que o processo receptor possa ler 
(forma síncrona). Limitada ao tempo de processamento das mensagens.
2) Como variação do mecanismo anterior, pode permitir que o processo transmissor não 
fique bloqueado, enquanto o receptor não lê a mensagem;
3) Mecanismo que não deixa aguardando os processos, transmissor e receptor (forma 
assíncrona).
Sistemas Operacionais
Troca de Mensagens
Comunicação síncrona (conhecida como rendezvous):
• Um processo envia uma mensagem e fica esperando até que o receptor leia a 
mensagem;
• Um receptor tenta receber uma mensagem e fica esperando até que o processo 
transmissor grave alguma mensagem;
• Dispensa necessidade de buffers;
• A necessidade de espera reduz o grau de concorrência;
• O problema dessa implementação é que a execução dos processos fica limitada ao 
tempo de processamento no tratamento das mensagens.
Sistemas Operacionais
Troca de Mensagens
Comunicação assíncrona:
• O transmissor não aguarda o recebimento da mensagem;
• O receptor não aguarda o envio de uma mensagem;
• Necessidade do uso buffers;
• Maior paralelismo na execução dos processos em relação a comunicação síncrona;
• Exige outros mecanismos de sincronização que permita ao processo identificar se 
uma mensagem já foi enviada ou recebida;
• Como vantagem aumenta a eficiência de aplicações concorrentes.
Sistemas Operacionais
Deadlock
Deadlock é a situação em que um processo aguarda por um recurso que nunca estará 
disponível ou um evento que nunca ocorrerá. 
Essa situação é consequência, na maioria das vezes, do compartilhamento de recursos, 
como dispositivos, arquivos e registros, entre processos concorrentes onde a exclusão 
mútua é exigida.
O problema do deadlock torna-se cada vez mais frequente e crítico na medida em que os 
sistemas operacionais evoluem no sentido de implementar o paralelismo de forma 
intensiva e permitir a alocação dinâmica de um número ainda maior de recursos.
Sistemas Operacionais
Deadlock
Dispositivos e recursos são compartilhados a todo momento: Impressora, disco, arquivos, 
posições nas tabelas internas do sistema etc.
S.Os. devem ter a habilidade de garantir a um processo, acesso exclusivo a certos 
recursos. Ex: entrada em tabela do sistema de arquivos.
Deadlock:
 Processos ficam parados sem possibilidade continuar seu processamento;
 Ocorrem tanto em recursos de hardware quanto software.
Sistemas Operacionais
Deadlock de Recurso
Definição formal:
• Um conjunto de processos está em deadlock se cada processo no conjunto estiver 
esperando por um evento que somente outro processo no conjunto pode causar. 
• Muitas vezes, um processo espera por um recurso que outro processo nesse conjunto 
detém.
Sistemas Operacionais
Deadlock
Sistemas Operacionais
Espera circular: cada processo está esperando que o outro libere o recurso alocado.
Recurso 2 Recurso 1
Processo A
Processo B
Processo A
solicita o
Recurso 2
Recurso 1
alocado ao
Processo A
Recurso 2
alocado ao
Processo B
Processo B
solicita o
Recurso 1
Deadlock
Sistemas Operacionais
Deadlock
Condições necessárias para que um deadlock ocorra: 
1. Exclusão mútua  Cada recurso só pode estar alocado a um único processo em 
um determinado instante; 
2. Espera por recurso  Um processo pode estar esperando por recursos , além dos 
já alocados.
3. Não preempção  Um recurso não pode ser liberado de um processo só porque 
outros processos desejam o mesmo recursos;
4. Espera circular  Um processo pode ter de esperar por um recurso alocado a 
outro processo e vice-versa. 
Sistemas Operacionais
Deadlock
Deadlocks ocorrem quando processos obtêm acesso exclusivo a recursos.
• Hardware (ex: HD) 
• Software (entrada em base de dados)
Podem ser:
• Preemptivos: 
 Podem ser retirados do processo sem prejuízos;
 Memória;
 CPU (como no escalonamento);
Sistemas Operacionais
Deadlock
• Não preemptivos:
 Não podem ser retirados do processo, pois causam prejuízos;
 Criar CD-ROM;
 Unidades de fita;
 Impressora
• Deadlocks ocorrem em geral com recursos não preemptivos .
• Normalmente, com preemptivos, são resolvidospela realocação de recursos de um 
processo a outro.
Sistemas Operacionais
• Eventos necessários para uso de recursos:
• Requisição do recurso; 
• Utilização do recurso; Pode ser feito via mutexes
• Liberação do recurso;
• Se o recurso requerido não está disponível, duas situações podem ocorrer:
• Processo que requisitou o recurso fica bloqueado até que o recurso seja 
liberado, ou;
• Processo que requisitou o recurso falha, com uma mensagem de erro, cabendo 
a ele esperar um pouco e tentar novamente.
Deadlock
Sistemas Operacionais
Deadlock
S.O. devem implementar mecanismos para:
 Prevenção
 Detecção
 Correção
Sistemas Operacionais
Deadlock - Prevenção
A ocorrência de deadlock pode ser prevenida garantindo que uma das quatro condições 
citadas não se satisfaça.
• A ausência da exclusão mútua garante que o deadlock não ocorra. Vários problemas 
podem ocorrer decorrentes do compartilhamento de recursos;
• Evitando que processos que já possuem recursos solicitem novos, garante que não 
vai ocorrer espera por recursos. Pode provocar a retenção de recurso por um longo 
tempo para utilizar apenas por alguns instantes.
• Garantir a retida de um recurso alocado por um processo caso outro processo 
necessite dele (não-preempção). Pode provocar sérios problemas ou impedir a 
continuidade de execução de outros processos.
• Garantir que um processo tenha apenas um recurso por vez, evita a espera circular. 
Restringiria o grau de compartilhamento e processamento.
Sistemas Operacionais
Deadlock - Detecção
A detecção do deadlock é o mecanismo que determina, realmente, a existência dessa 
situação, permitindo identificar os recursos e processos envolvidos no problema.
Para detectar deadlocks, os sistemas operacionais devem manter estruturas de dados 
capazes de identificar cada recurso do sistema, o processo que está alocando tal 
recurso e os processos que estão à espera da liberação do recurso. 
Toda vez que o recurso é alocado ou liberado por um processo, a estrutura deve ser 
atualizada.
Sistemas Operacionais
Deadlock - Correção
Após a detecção do deadlock, o sistema operacional deverá corrigir o problema. Uma 
solução bastante utilizada pela maioria dos sistemas é, simplesmente, 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.
Outra solução seria a liberação de apenas alguns recursos alocados aos processos para 
outros processos, até que o ciclo de espera termine. Para que esta solução seja 
realmente eficiente, é 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.
Este mecanismo é conhecido como rollback e gera um overhead muito grande.
Sistemas Operacionais
Reflexão e Dúvidas

Mais conteúdos dessa disciplina