A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha.

Apresentações semelhantes


Apresentação em tema: "Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha."— Transcrição da apresentação:

1 Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha

2 Comunicação entre Processos A solução de Peterson  O algoritmo de Peterson fornece exclusão mútua Cada processo antes de entrar na memória compartilhada (região crítica) chama enter_region com seu próprio número como parâmetro (pode haver espera) Depois que terminou de trabalhar com as variáveis compartilhadas o processo chama leave_region para indicar que terminou

3 Comunicação entre Processos A solução de Peterson para obter exclusão mútua

4 Comunicação entre Processos A Instrução TSL Muitos computadores, especialmente aqueles projetados com múltiplos processadores em mente têm uma instrução TEST AND SET LOCK (TSL – Testa e Configura bloqueio) Para utilizar a instrução TSL é usada uma variável compartilhada chamada lock.  Quando lock é 0 qualquer processo pode configurá-lo como 1 utilizando a instrução TSL e, então, ler ou gravar a memória compartilhada.  Quando termina, o processo configura lock de volta para 0 utilizando uma instrução uma instrução MOVE comum.

5 Comunicação entre Processos A Instrução TSL enter_region: tsl register,lock | copia lock para o registrador e o configura como 1 cmp register,#0 | lock era zero? jne enter region | se não era zero, o bloqueio estava configurado, então inicia um laço ret | retorna para aquele que fez a chamada; entrada na região crítica leave_region: | armazena um 0 no bloqueio (lock) move lock, #0 | retorna para aquele que fez a chamada ret

6 Comunicação entre Processos Sleep e Wakeup Tanto a solução de Peterson como a solução que utiliza TSL são corretas mas têm o defeito de necessitarem de espera ativa.  O processo espera em laço até que a entrada seja permitida (Desperdiça CPU e pode gerar o problema da inversão de prioridade) Algumas primitivas de comunicação interprocesso bloqueiam o processo quando ele não pode entrar na sua região crítica  Uma das mais simples é o par SLEEP e WAKEUP

7 Comunicação entre Processos Sleep e Wakeup SLEEP  Chamada de sistema que causa o bloqueio do processo que fez a chamada WAKEUP  Possui um parâmetro que indica qual processo deve ser acordado

8 Comunicação entre Processos Sleep e Wakeup O Problema dos Produtores e Consumidores  Também conhecido como o problema do buffer associado  Dois processos compartilham um buffer de tamanho fixo. Um deles, o produtor, coloca as informações em um buffer e o outro, o consumidor, pega-as  Problema surge quando o produtor quer colocar um novo item no buffer, mas este último já está cheio. Solução é fazer o produtor dormir até que o buffer tenha espaço

9 Comunicação entre Processos Sleep e Wakeup O Problema dos Produtores e Consumidores  De modo semelhante o consumidor deve dormir se o buffer estiver vazio até que o produtor coloque algo no buffer e o acorde.  Essa solução pode levar a condição de corrida uma que vez que há uma variável que controla o nº de itens no buffer, a variável count (compartilhada). O produtor e o consumidor testam e manipulam count  O problema é que numa condição de corrida, haverá a possibilidade de em um dado momento ambos os processos (produtor e consumidor) estarem dormindo

10 Comunicação entre Processos O problema dos produtores e consumidores com uma condição de corrida fatal

11 Comunicação entre Processos Sleep e Wakeup O Problema dos Produtores e Consumidores  Um bit de espera por despertar pode ser utilizado mas, nos casos em que há três ou mais processos um bit torna-se insuficiente sendo necessário tantos outros de acordo com o nº de processos (o problema persiste então)

12 Comunicação entre Processos Semáforos Em 1965 Dijkstra sugeriu utilizar uma variável inteira, chamada de Semáforo, para contar o número de wakeups salvos para uso futuro  Semáforo igual a 0 indica que nenhum wakeup foi salvo  Semáforo for igual a algum valor positivo se um ou mais wakeups estivessem pendentes Propôs duas operaçoes: DOWN e UP  DOWN – verifica se o valor é maior que 0. Se for diminui o valor e simplesmente continua.

13 Comunicação entre Processos Semáforos  Se o valor for 0, o processo é colocado para dormir sem completar o DOWN, por enquanto Verificar o valor, alterá-lo e, possivelmente, ir dormir é tudo feito como uma única ação atômica.  Ao iniciar uma operação de semáforo, nenhum outro processo pode acessar o semáforo até que a operação tenha-se completado ou tenha sido bloqueada.  A atomicidade é essencial para resolver problemas de sincronização e evitar condições de corrida.

14 Comunicação entre Processos Semáforos  UP: incrementa o valor do semáforo endereçado Um up sobre um semáforo com processos dormindo resulta em um processo dormindo a menos A operação de incrementar o semáforo e acordar um processo também é atômica Semáforos que assumem somente os valores 0 (livre) e 1 (ocupado) são denominados semáforos binários ou mutex

15 Comunicação entre Processos Semáforos O problema dos produtores e dos consumidores utilizando semáforos


Carregar ppt "Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha."

Apresentações semelhantes


Anúncios Google