Você está na página 1de 50

Comunicação entre Processos

Eduardo Ferreira dos Santos


Ciência da Computação
Universidade Presbiteriana Mackenzie

9 de setembro de 2021

1 / 50
Sumário

1 Multiprogramação

2 Escalonamento
Conceitos
Algoritmos de escalonamento

3 Concorrência
Memória compartilhada
Troca de mensagens
Prevenção de deadlock

2 / 50
Multiprogramação

1 Multiprogramação

2 Escalonamento
Conceitos
Algoritmos de escalonamento

3 Concorrência
Memória compartilhada
Troca de mensagens
Prevenção de deadlock

3 / 50
Multiprogramação

Multiprogramação

Figura 1.1: (a) Multiprogramação para quatro programas (b) Modelo conceitual
de quatro processos sequenciais independentes (c) Somente um programa está
ativo a cada momento [Tanenbaum and Machado Filho, 1995]

4 / 50
Multiprogramação

Estados dos processos

Durante o ciclo de vida de um processo ele passa por diferentes estados.


Em sistemas Unix [Guarezi and Silva, 2010] são:
run Está sendo executado no processador;
ready ou executável Dispõe de todos os recursos que precisa e está pronto
para ser executado;
sleep ou dormente Bloqueado à espera de algum recurso, e só pode ser
desbloqueado se receber um sinal de outro processo;
zumbi Caso cada vez mais raro, onde um processo é criado por um
programa, que por sua vez é nalizado antes de receber o
resultado do processo;
parado Recebeu ordem do administrador para interromper a
execução. Será reiniciado se receber um sinal de continuação
(CONT).

5 / 50
Multiprogramação

Estados dos processos (Gráco)

Figura 1.2: Estados dos processos [Chagas, 2016]

6 / 50
Multiprogramação

Concorrência

Paradigma: controlar/restringir o acesso ao recurso em determinado


espaço de tempo;
O controle de acesso aos recursos é realizado através de eventos;
Eventos inesperados pode causar um desvio inesperado no uxo de
execução.
Denição [Chagas, 2016]:
1 O programa perde o uso do processador;
2 O programa retorna para continuar o processamento;
3 O estado do programa deve ser idêntico ao do momento em que foi
interrompido.
O programa continua a execução exatamente na instrução seguinte.

7 / 50
Multiprogramação

Programação concorrente

Na programação concorrente existe mais de uma tarefa sendo


executada ao mesmo tempo. Ex.: Fatorial
No caso de múltiplas tarefas é necessário haver comunicação entre
elas.
Memória compartilhada As tarefas compartilham área de memória;
Troca de mensagens Sinais trocados entre processos.

8 / 50
Escalonamento

1 Multiprogramação

2 Escalonamento
Conceitos
Algoritmos de escalonamento

3 Concorrência
Memória compartilhada
Troca de mensagens
Prevenção de deadlock

9 / 50
Escalonamento

Conceitos

Objetivo: maximizar a utilização de CPU em programação


concorrente;
O escalonador é o mecanismo que seleciona um dos processos
disponíveis na la de pronto para ir à execução;
Troca de contexto entre os processos;
Organização da la de prioridades.

10 / 50
Escalonamento Conceitos

1 Multiprogramação

2 Escalonamento
Conceitos
Algoritmos de escalonamento

3 Concorrência
Memória compartilhada
Troca de mensagens
Prevenção de deadlock

11 / 50
Escalonamento Conceitos

Escalonamento

Figura 2.1: Descrição do escalonamento [Chagas, 2016]


12 / 50
Escalonamento Conceitos

Escalonadores

Short-term scheduler Seleciona os processos que vão para a CPU


Algumas vezes o único escalonador disponível;
Bastante utilizado, ou seja, precisa ser rápido.
Long-term scheduler Seleciona os processos que devem ir à la de pronto
Não é tão utilizado (menos frequente);
Controla o grau de multiprogramação.
Os processos podem ser descritos como:
I/O-bound Gasta mais tempo realizando operações de I/O do que
computações;
CPU-bound Mais tempo realizando computações.

13 / 50
Escalonamento Conceitos

Cadências de escalonamento
As cadências de escalonamento são aplicadas em momentos diferentes da
interação com o processador.

Figura 2.2: Diferentes cadências de escalonamento e sua interação com a CPU


[SILVA, 2021]

14 / 50
Escalonamento Conceitos

Troca de Contexto
O dispatcher é o responsável por realizar a troca de contexto, uma vez que
o escalonador tenha decidido qual processo irá utilizar a CPU.

Figura 2.3: Troca de Contexto [FARINES and MELO, 2000]


15 / 50
Escalonamento Algoritmos de escalonamento

1 Multiprogramação

2 Escalonamento
Conceitos
Algoritmos de escalonamento

3 Concorrência
Memória compartilhada
Troca de mensagens
Prevenção de deadlock

16 / 50
Escalonamento Algoritmos de escalonamento

Algoritmos

Existem diferentes formas de controlar a ordem dos processos na la


de pronto;
As diferentes estratégias de ordenação são conhecidas como os
algoritmos de escalonamento;
Não existe um algoritmo melhor ou pior: depende do caso de uso;
Já se sabe que existem modelos que funcionam melhor em
determinados cenários do que outros;
O sistema operacional trabalha com um mix de algoritmos.

17 / 50
Escalonamento Algoritmos de escalonamento

Avaliação de algoritmos

Dois critérios básicos são utilizados para avaliar um algoritmo de


escalonamento:
1 Tempo de vida para cada processo: tempo total entre o momento da
submissão do processo (tempo de chegada) e momento em que é
nalizado;
2 Tempo de vida médio: média aritmética simples dos tempos de vida
para cada processo
O melhor algoritmo vai depender do objetivo do modelo de
escalonamento.

18 / 50
Escalonamento Algoritmos de escalonamento

Algoritmo FCFS
O algoritmo mais elementar é o FCFS - First-Come First-Served: o
primeiro processo que chega é atendido;
Precisa apenas de uma la simples;
Quando uma tarefa termina, a próxima da la ganha uso do
processador.

Figura 2.4: Exemplo de execução do algoritmo FCFS [SILVA, 2021]

19 / 50
Escalonamento Algoritmos de escalonamento

Algoritmo SJF
No modelo SJF - Shortest Job First o processo mais curto é executado
primeiro;
Menor tempo de utilização da CPU e disponível para escalonamento
(ready);
Alternativa: próximo de menor tempo restante leva em consideração o
tempo de término.

Figura 2.5: Exemplo de execução do algoritmo SJF [SILVA, 2021]

20 / 50
Escalonamento Algoritmos de escalonamento

Algoritmo Round Robin

O algoritmo RR - Round Robin é um escalonamento de la circular;


Todos os processos possuem a mesma fatia de tempo chamada de
quantum;
Se não terminar no tempo volta para a la de execução.

Figura 2.6: Exemplo de execução do algoritmo RR [SILVA, 2021]

21 / 50
Escalonamento Algoritmos de escalonamento

Prioridades
Prioridade explicita os que devem ser executados primeiro;
Processos com prioridade mais alta existe a chance de serem
escalonados mais vezes;
Normalmente os processos são organizados em categorias de
prioridade.

Figura 2.7: Exemplo de las de prioridades [SILVA, 2021]


22 / 50
Concorrência

1 Multiprogramação

2 Escalonamento
Conceitos
Algoritmos de escalonamento

3 Concorrência
Memória compartilhada
Troca de mensagens
Prevenção de deadlock

23 / 50
Concorrência

Conceitos

Na programação concorrente existe mais de uma tarefa sendo


executado ao mesmo tempo. Ex.: Fatorial
No caso de múltiplas tarefas é necessário haver comunicação entre
elas.
Memória compartilhada As tarefas compartilham área de memória;
Troca de mensagens Sinais trocados entre processos.

24 / 50
Concorrência

Comunicação entre processos

Gerência de recursos compartilhados: condição de corrida


Exclusão mútua;
Semáforo;
Monitor.
Comunicação por troca de mensagens: deadlocks
Leitura assíncrona;
Método rendezvous.

25 / 50
Concorrência Memória compartilhada

1 Multiprogramação

2 Escalonamento
Conceitos
Algoritmos de escalonamento

3 Concorrência
Memória compartilhada
Troca de mensagens
Prevenção de deadlock

26 / 50
Concorrência Memória compartilhada

Condição de corrida
Situações onde dois ou mais processos estão acessando dados com-
partilhados, e o resultado nal do processamento depende de quem
roda quando.

Figura 3.1: Exemplo da condição de corrida

27 / 50
Concorrência Memória compartilhada

Solução para condição de corrida

Uma boa solução para a condição de corrida requer quatro condições


[Favacho, 2009]:
1 Dois ou mais processos não podem estar simultaneamente dentro de
suas regiões críticas correspondentes;
2 Nenhuma consideração pode ser feita a respeito da velocidade relativa
dos processos, ou a respeito do número de processadores disponíveis no
sistema;
3 Nenhum processo que esteja executando fora de sua região crítica pode
bloquear a execução de outro processo;
4 Nenhum processo pode ser obrigado a esperar indenidamente para
entrar em sua região crítica.

28 / 50
Concorrência Memória compartilhada

Exclusão mútua [Chagas, 2016]


Solução: impedir que mais de um processo acesse o dado ao mesmo
tempo.
Deve ser executada somente quando um dos processos estiver
acessando o recurso compartilhado;
A parte do código onde o acesso ao recurso é feito é chamada de
região crítica.

Figura 3.2: Região crítica


29 / 50
Concorrência Memória compartilhada

Soluções para exclusão mutua I

Inibição das interrupções Inibir as interrupções de cada processo logo após


o ingresso na região crítica, habilitando-as novamente após
deixá-las.
Desabilitar interrupções deve ser uma atribuição do
kernel;
Interferir no kernel pode não ser uma boa ideia.
Variáveis de travamento (locks) Utilização de variável única compartilhada
(lock) que pode assumir 0 ou 1.
Se dois processos chegam ao mesmo tempo?
Condição de corrida.

30 / 50
Concorrência Memória compartilhada

Soluções para exclusão mutua II

Chaveamento obrigatório Utiliza a variável inteira turn


[Tanenbaum and Machado Filho, 1995].
A variável turn indica a vez de quem é de entrar na região crítica;
Se um dos processos for mais lento que o outro requer a solução
estritamente alternada;
Espera ocupada: teste contínuo do valor esperando por uma mudança.

Listing 1: a Listing 2: b
while (TRUE) { while (TRUE) {
while ( t u r n !=0) /* ç l a o */ while ( t u r n !=1) /* ç l a o */
critical_region () ; critical_region () ;
turn = 1; turn = 0;
5 non_critical_region () ; 5 non_critical_region () ;
} }

31 / 50
Concorrência Memória compartilhada

Problema do produtor-consumidor

Dois processos compartilham um buer de tamanho xo;


Um põe a informação dentro do buer: produtor;
Outro retira a informação do buer: consumidor;
Problema: produtor quer colocar um item no buer, mas já está cheio;
Solução: colocar o produtor para dormir (sleep) e só acordar quando o
consumidor remover um ou mais itens;
Grande possibilidade de gerar condição de corrida: perda do envio de
sinal para acordar (wakeup) quando o processo ainda não está
dormindo.

32 / 50
Concorrência Memória compartilhada

Semáforos [Favacho, 2009]

Baseado em um tipo de variável que possui dois estados: UP e


DOWN.
1 O semáforo ca associado a um recurso compartilhado;
2 Se o valor da variável semáforo for diferente de zero, nenhum processo
está utilizando o recurso; caso contrário,o processo ca impedido do
acesso;
3 Sempre que deseja entrar em sua região crítica, o processo executa
uma instrução DOWN;
4 Se o semáforo for maior que 0, este é decrementado de 1, e o processo
que solicitou a operação pode executar sua região crítica;
5 Entretanto, se uma instrução DOWN é executada em um semáforo
cujo valor seja igual a 0, o processo que solicitou a operação cará no
estado de espera;

33 / 50
Concorrência Memória compartilhada

Semáforos (cont.) [Favacho, 2009]

6 Além disso, o processo que está acessando o recurso, ao sair de sua


região crítica, executa uma instrução UP, incrementando o semáforo
de 1 e liberando o acesso ao recurso;
7 A vericação do valor do semáforo, a modicação do seu valor e,
eventualmente a colocação do processo para dormir são operações
atômicas;
8 Operações atômicas são únicas e indivisíveis;
9 Os semáforos aplicados ao problema da exclusão mútua são chamados
de mutex (mutual exclusion) ou binários, por apenas assumirem os
valores 0 e 1.

34 / 50
Concorrência Memória compartilhada

Implementação [Favacho, 2009]

#d e f i n e N 100
typedef i n t semaphore
semaphore mutex = 1; /* c o n t r o l a ã r e g i o í c r t i c a */
semaphore empty = N ; /* c o n t r o l a çõ p o s i e s v a z i a s */
5 semaphore full = 0; /* c o n t r o l a çõ p o s i e s o c u p a d a s */

void producer ( void ) { void consumer ( void ) {


while (TRUE) { while (TRUE) {
item = produce_item () ; down (& f u l l ) ;
down (& e m p t y ) ; down (& mutex ) ;
5 down (& mutex ) ; 5 item = remove_item () ; /* R_cr í
insert_item ( item ) ; /* R _ c r i t i c a t i c a */
*/ up (& m u t e x ) ;
up (& m u t e x ) ; up (& e m p t y ) ;
up (& f u l l ) ; consume_item ( i t e m ) ;
} }
0 } 10 }

35 / 50
Concorrência Troca de mensagens

1 Multiprogramação

2 Escalonamento
Conceitos
Algoritmos de escalonamento

3 Concorrência
Memória compartilhada
Troca de mensagens
Prevenção de deadlock

36 / 50
Concorrência Troca de mensagens

Problema do deadlock

Em ambiente de multiprogramação diversos processos podem competir


por um número nito de recursos;
O processo não pode mudar de estado enquanto estiver aguardando
algum outro recurso;
Exemplo de deadlock [Favacho, 2009]:
Um processo A bloqueia o registro R1;
Um processo B bloqueia o registro R2;
O processo A entra em espera pois precisa utilizar o registro R2 e;
O processo B entra em espera pois precisa utilizar o registro R1.
Os processos cam bloqueados para sempre: deadlock.

37 / 50
Concorrência Troca de mensagens

Denição

Um conjunto de processos estará em situação de deadlock se to-


dos os processos pertencentes ao conjunto estiver esperando por
um evento que somente um outro processo desse mesmo conjunto
poderá fazer acontecer. [Favacho, 2009]
O número de processos, bem como, o número e tipo dos recursos não
são importantes;
Isso é válido para qualquer tipo de recurso, tanto para hardware como
para software.

38 / 50
Concorrência Troca de mensagens

Condições para Deadlock

Há quatro condições para ocorrência de deadlock [Favacho, 2009]:


Exclusão mútua Apenas um processo de cada vez pode utilizar o
recurso;
Prende e espera Um processo bloqueia os recursos que precisa e
aguarda pelos que estão sendo utilizados pelos outros
processos;
Não preempção Um recurso pode ser liberado apenas voluntariamente
pelo processo após o mesmo ter completado sua tarefa;
Espera circular Cada um dos processos espera um recurso que está
sendo usado por um outro processo em uma la.

39 / 50
Concorrência Troca de mensagens

Grafo

Representação:
Processos (círculos);
Recursos (retângulos);
Instâncias dos recursos
(pontos).
Uma aresta orientada é
denominada:
P1 → R1;
Arco.
Figura 3.3: Grafo de alocação de
recursos [Favacho, 2009]

40 / 50
Concorrência Troca de mensagens

Grafo

P1 está bloqueando R2 e
aguardando R1;
P2 está bloqueando R1 e R2 e
aguardando R3;
P3 está bloqueando R3.

Figura 3.4: Grafo de alocação de


recursos [Favacho, 2009]

41 / 50
Concorrência Troca de mensagens

Soluções

Como lidar com deadlock?


Usar um protocolo de prevenção para garantir que não está
acontecendo;
Permitir que entre em deadlock, detectá-lo e recuperá-lo;
Ignorar o problema, ngindo que nunca acontecerá.
A maioria dos sistemas operacionais prefere ngir que nada está
acontecendo [Favacho, 2009];
O que tem menor impacto? Lidar com o deadlock ou impedir recursos
simultâneos?

42 / 50
Concorrência Prevenção de deadlock

1 Multiprogramação

2 Escalonamento
Conceitos
Algoritmos de escalonamento

3 Concorrência
Memória compartilhada
Troca de mensagens
Prevenção de deadlock

43 / 50
Concorrência Prevenção de deadlock

Exclusão mútua

Se não houver alocação exclusiva, nunca ocorrerá deadlock;


Recursos compartilháveis, como arquivos abertos, não necessitam de
acesso por exclusão mútua. Assim, nunca ocorrerá um deadlock;
Não é possível prevenir deadlock negando a exclusão mútua sempre.
Alguns recursos precisam da garantia.

44 / 50
Concorrência Prevenção de deadlock

Manter e esperar

Impedir que alguém que tenha algum recurso solicite outro já previne
o deadlock;
Fazer que um processo inicie com todos os recursos que vai precisar:
possível solução;
Só permite solicitar um recurso quando não estiver consumindo
nenhum outro.
Nesse caso pode acontecer starvation se o recurso for popular.

45 / 50
Concorrência Prevenção de deadlock

Preempção

Se solicitar um recurso e não estiver disponível, libera todos os outros


que tinha solicitado;
Somente se reinicia o processo quando puder reaver seus recursos
antigos;
Só se aplica a recursos cujo estado pode ser salvo.

46 / 50
Concorrência Prevenção de deadlock

Espera circular

Impor ordenação a todos os tipos de recursos;


O grafo de alocação de recursos nunca conterá ciclos.

Figura 3.5: Prevenção de deadlock [Favacho, 2009]

47 / 50
Concorrência Prevenção de deadlock

OBRIGADO!!!
PERGUNTAS???

48 / 50
Concorrência Prevenção de deadlock

Chagas, F. (2016).
Notas de aula do prof. fernando chagas.
FARINES, J. M. and MELO, R. (2000).
Sistemas de Tempo Real, volume 1.
IME-USP.
Favacho, A. (2009).
Notas de aula da Profa. Aletéia Favacho.
Guarezi, D. J. and Silva, E. B. (2010).
Processos em windows e unix.
Disponível em:
http://www.inf.ufsc.br/∼magro/PROCESSOS%20EM%20WINDOWS%2
Acessado em 28/01/2011.
SILVA, L. (2021).
Notas de aula do prof. luciano silva.
Tanenbaum, A. S. and Machado Filho, N. (1995).
Sistemas operacionais modernos.
49 / 50
Concorrência Prevenção de deadlock

Prentice-Hall, 3 edition.

50 / 50

Você também pode gostar