Sincronismo e Comunica - PowerPoint PPT Presentation

About This Presentation
Title:

Sincronismo e Comunica

Description:

Sincronismo e Comunica o entre Processos Profa. Priscila Facciolli – PowerPoint PPT presentation

Number of Views:72
Avg rating:3.0/5.0
Slides: 28
Provided by: Prisc97
Category:

less

Transcript and Presenter's Notes

Title: Sincronismo e Comunica


1
Sincronismo e Comunicação entre Processos
Profa. Priscila Facciolli
2
Conteúdo
  • Introdução
  • Aplicações Concorrentes
  • Problemas no Compartilhamento de Recursos
  • Exclusão Mútua
  • Soluções de Exclusão Mútua
  • Sincronização Condicional
  • Semáforos
  • Monitores
  • Troca de Mensagens
  • Deadlock
  • Prevenção de Deadlocks
  • Detecção e Recuperação
  • Gerenciamento Manual de Deadlocks
  • Exercícios.

3
Introdução
  • Com os sistemas multiprogramáveis, é possível que
    partes diferentes do código do programa possam
    ser executadas concorrentemente. É denominada de
    Aplicação Concorrente e baseia-se na execução
    cooperativa de múltiplos processos, que trabalham
    em uma mesma tarefa na busca de um resultado
    comum.
  • Estes processos compartilham recursos e isso pode
    ocasionar situações indesejáveis, podendo
    comprometer a execução das aplicações.
  • Evitando isso, os Processos Concorrentes possuem
    suas execuções sincronizadas, com o objetivo de
    garantir o processamento correto dos programas.

4
Aplicações Concorrentes
  • Em uma aplicação concorrente é necessário que
    processos comuniquem-se entre sim através de
    variáveis compartilhadas na Memória Principal ou
    troca de mensagens.
  • Nessa situação os processos devem ter sua
    execução sincronizadas pelo SO.
  • Os mecanismos que garantes a comunicação entre
    processos concorrentes e o acesso aos recursos
    são chamados de Mecanismos de Sincronização.

5
Problemas no Compartilhamento de Recursos
  • Problemas podem ocorrer devido a falha de
    Sincronização entre processos concorrentes.
  • Exemplo Situação onde dois processos ( A e B)
    executam um comando de atribuição.
  • O processo A soma 1 na variável X e o processo
    B diminui 1 da mesma variável que está
    compartilhada. Inicialmente X2.
  • Seria razoável que o resultado de X continuasse
    2, porém isso nem sempre será verdade.
  • Qualquer situação onde dois ou mais processos
    compartilham um mesmo recurso, deve existir um
    mecanismo de controle para evitar problema
    similar ao exemplo acima e esse controle é
    conhecido como RACE CONDITIONS, ou Condições de
    Corrida.

6
Exclusão Mútua
  • Impede que dois ou mais processos acessem um
    mesmo recurso simultaneamente.
  • Enquanto um processo estiver acessando um
    recurso, os demais que queiram acessá-lo deverão
    esperar pelo término de sua utilização.
  • A parte do código do programa onde é feito o
    recurso de compartilhamento é a REGIÃO CRÍTICA.
    Se for possível evitar que dois processos entrem
    em Região Crítica ao mesmo tempo, os problemas de
    compartilhamento estarão evitados.
  • Tanto para executar uma instruções na Região
    Crítica quanto para sair dela, executa-se um
    protocolo que garante a Exclusão Mútua da Região
    Crítica do programa.

7
Exclusão Mútua
  • O acesso sincronizado, além da Exclusão Mútua
    evita duas situações indesejáveis
  • STARVATION ou Espera Indefinida É a situação em
    que um processo nunca consegue executar sua
    Região Crítica, acessando o recurso
    compartilhado. Quando o processo é liberado, é o
    SO que seleciona qual processo fará parte do
    recurso.
  • O critério de Escolha é baseado pela prioridade
    do processo. A solução é a implementação de uma
    fila FIFO.
  • Um processo fora de sua Região Crítica impede que
    outros processos entrem em suas próprias Regiões
    Críticas.
  • Isto ocorre ao recurso estar livre mas ainda
    alocado a um processo, impedindo que os demais o
    utilizem.

8
Soluções para a Exclusão Mútua
  • No Hardware
  • Desabilitação de Interrupções
  • Faz com que o processo desabilite todas as
    interrupções antes de entrar na Região Crítica e
    as reabilite após deixar a Região Crítica.
  • Instruções de Test and Set
  • Permite ler uma variável, armazenar seu conteúdo
    em outra área e atribuir um novo valor a mesma
    variável, através de uma única instrução de
    máquina. Com isso torna-se impossível que dois
    processos manipulem uma variável compartilhada ao
    mesmo tempo.

9
Sincronização Condicional
  • Situação onde o acesso ao recurso compartilhado
    exige a Sincronização de processos vinculada a
    uma condição de acesso.
  • Ex. Comunicação entre dois processos através de
    operações de leitura e gravação em buffer, onde
    os processos que geram informações (processos
    produtores) são utilizados por outros processos
    (consumidores).
  • Enquanto um processo grava os dados em um buffer,
    o outro lê os dados concorrentemente. Esse
    problema de sincronização é conhecido como
    Produtor / Consumidos ou Buffer Limitado

10
Sincronização Condicional
Sincronização e comunicação entre processos
11
Semáforo
  • É uma variável inteira, não negativa, que só pode
    ser manipulada pro duas instruções DOWN E UP,
    chamadas também de P (Proberen, teste em
    holandês) e V (Verhogen, incremento em holandês).
  • São instruções que não podem ser interrompidas e
    são classificadas em
  • Binários Chamados de Mutexes (Mutual Exclusion
    Semaphores), só podem assumir valores de O e 1.
  • Semáforos Contadores Podem assumir qualquer
    valor inteiro positivo além do O.

12
Semáforo
  • É uma variável inteira, não negativa, que só pode
    ser manipulada pro duas instruções DOWN E UP,
    chamadas também de P (Proberen, teste em
    holandês) e V (Verhogen, incremento em holandês).
  • São instruções que não podem ser interrompidas e
    são classificadas em
  • Binários Chamados de Mutexes (Mutual Exclusion
    Semaphores), só podem assumir valores de O e 1.
  • Semáforos Contadores Podem assumir qualquer
    valor inteiro positivo além do O.

13
Semáforo
Semáforo binário na exclusão mútua
14
Monitores
  • São implementados pelo compilador, possibilitando
    o desenvolvimento de programas concorrentes com
    chances de menos erros.
  • É formado por procedimentos e variáveis
    encapsulados dentro de um módulo, implementando
    de forma automática a Exclusão Mútua entre os
    procedimentos declarados.
  • Toda vez que algum processo faz uma chamada a um
    procedimento, o Monitor verifica se já existe
    outro processo executando algum procedimento no
    monitor. Caso exista, o processo ficará
    aguardando a sua vez em uma fila de entrada.
  • Encarrega-se de garantir a Exclusão Mútua entre
    os procedimentos definidos.

15
Monitores
Estrutura do monitor
16
Troca de Mensagens
  • Esse tipo de mecanismo de comunicação e
    sincronização de processos, o SO possui um
    subsistema de mensagens onde não há necessidade
    do uso de variáveis compartilhadas. É necessário
    que exista um buffer ou um link de uma rede de
    computadores como canal de comunicação.
  • Os processos cooperativos que podem utilizar o
    buffer através de duas rotinas SEND e RECEIVE.
  • A rotina SEND envia uma mensagem para o processo
    receptor, enquanto a RECEIVE recebe a mensagem
    enviada por um processo transmissor.
  • Com isso exige que os processos envolvidos na
    comunicação tenham suas execuções sincronizadas.

17
Troca de Mensagens
Transmissão de mensagem
18
Troca de Mensagens
  • A Troca de Mensagens pode ser implementada de
    duas maneiras
  • COMUNICAÇÃO DIRETA Exige que tanto ao enviar ou
    receber uma mensagem, enderece o nome do processo
    Receptor ou Transmissor. Só permite a troca de
    mensagens entre dois processos.

19
Troca de Mensagens
  • COMUNICAÇÃO INDIRETA
  • Utiliza uma área compartilhada onde as mensagens
    podem ser colocadas pelo processo transmissor e
    retiradas pelo receptor. Esse buffer é conhecido
    como MAILBOX e suas características, como
    identificação e capacidade de armazenamento de
    mensagens, são definidas no momento de criação.
  • Nela, vários processos podem estar associados a
    MAILBOX.
  • Também possuem suas execuções sincronizadas em
    função do fluxo de mensagens. Um processo não
    pode tratar uma mensagem até que ela tenha sido
    enviada ou receber a mesma mensagem mais de uma
    vez.

20
Deadlock
  • É a situação onde o processo aguarda pro um
    recurso que nunca estará disponível ou um evento
    que não ocorrerá. É consequencia do
    compartilhamento de recursos entre processos onde
    a Exclusão Mútua é exigida.
  • Para que ocorra a situação de Deadlock, quatro
    condições são necessárias simultaneamente
  • 1- Exclusão Mútua Cada recurso só pode estar
    alocado a um único processo em um determinado
    instante
  • 2- Espera por Recursos Um processo, além dos
    recursos já alocados, ainda aguarda por outros
    recursos
  • 3- Não-Preempção Um recurso não pode ser
    liberado de um processo só porque outros
    processos desejam o mesmo recurso
  • 4- Espera Circular Um processo pode ter que
    esperar por um recurso alocado a outro processo e
    vice-versa.

21
Deadlock
Espera circular
22
Prevenção de Deadlocks
  • Para que um Deadlock ocorra, todas as quatro
    condições devem ocorrer simultaneamente. Se
    garantirmos que uma delas não ocorra, prevenirmos
    a ocorrência de Deadlocks em um determinado
    sistema.
  • Examinaremos as quatro condições separadamente
  • 1- Negando a condição Exclusão Mútua
  • Essa condição não deve ser negada, pois dois
    processos acessando um recurso simultaneamente
    poderia causar caos no sistema.
  • Ex. Dois processos acessando uma impressora ao
    mesmo tempo.
  • Utilizando o sistema de spool é solucionada esse
    problema pois um
  • único processo de spool acessa a impressora
    diretamente e não acessa outro recurso, com isso
    deadlocks não podem ocorrer, porém nem todos os
    recursos utilizam o spool.

23
Prevenção de Deadlocks
  • 2- Negando a condição Esperar por Recurso
  • Requer que todos os recursos que um processo
    precise devem ser requisitados de uma só vez.
  • O sistema deve liberar os recursos segundo uma
    política de tudo ou nada.
  • Se todos os recursos que o processo solicitou
    estão disponíveis, então o sistema pode alocá-los
    todos ao mesmo processo de uma vez.
  • Caso contrário, ele deverá esperar até que todos
    estejam disponíveis, porém nessa espera, não deve
    deter nenhum recurso. Assim a condição é negada e
    Deadlocks não podem ocorrer.
  • Desvantagens
  • Desperdício de Recursos O recurso que será
    executado por último fica alocado ao processo
    antes de ser efetivamente utilizado.
  • Possibilidade de um processo ficar
    indefinidamente esperando, se outros processos
    estiverem usando os recursos que ele deseja com
    freqüência.

24
Prevenção de Deadlocks
  • 3- Negando a condição Não Preempção
  • Para vários recursos, como uma impressora, não é
    interessante que um processo perca seus dados
    durante seu uso.
  • 4- Negando a condição Espera Circular
  • 1ª Maneira Estabelecer regra que um processo só
    pode alocar um único recurso em um dado momento.
    Se ele precisa de um 2º recurso, deve liberar o
    primeiro
  • 2ª Maneira Todos os recursos devem ser numerados
    em ordem crescente, assim processos podem
    requisitar recursos sempre.

25
Detecção e Recuperação
  • Alguns sistemas verificam se existe a
    possibilidade de surgir um Deadlock quer
    periodicamente ou caso certos eventos ocorram.
  • Caso esse algoritmo de detecção for executado
    muitas vezes, tornará o sistema lento, mas se não
    for executado vezes suficientes, os processos em
    Deadlock e os recursos do sistema ficam
    entrelaçados até que o sistema seja recuperado.
  • Surge devido a um Deadlock que impedem de
    executar algum evento que dispare o algoritmo de
    execução.
  • Na estratégia do algoritmo de detecção, ele
    primeiramente detecta se ocorre a situação de
    Deadlock e depois recupera, que resulta no
    desbloqueio dos recursos. Essa é a estratégia
    mais utilizada para tratamento de Deadlock.

26
Gerenciamento Manual de Deadlock
  • Muitos os sistemas atuais deixam para o usuário
    a função de detectar um Deadlock, que através da
    utilização rotineira, o usuário percebe que o
    tempo para que o processo seja executado já foi
    ultrapassado, ficando a critério do usuário achar
    que os processos entraram em Deadlock e com isso
    podem resolver a situação através das ferramentas
    dos sistemas, como por exemplo sua
    reinicialização.

27
Exercícios
  • Defina o que é uma aplicação concorrente e dê um
    exemplo de sua utilização?
  • 2) O que é Exclusão Mútua e como é implementada?
  • 3) Explique o que é sincronização condicional e
    dê um exemplo de sua utilização.
  • 4) Diferencie Semáforos e Monitores.
  • 5) Quais são os tipos possíveis de Semáforos?
  • 6) O que é Deadlock, qual a condição para obtê-lo
    e quais as soluções possíveis?
  • 7) O que é mecanismo de troca de mensagens e como
    pode ser implementado?
  • 8) O que é Região Crítica em um programa?
  • 9) Liste uma solução para a Exclusão Mútua
    explicando-a.
  • 10) " Independente do mecanismo de comunicação
    adotado, processos que estão trocando mensagens
    devem ter suas execuções sincronizadas".Esta
    afirmação está correta? Justifique
Write a Comment
User Comments (0)
About PowerShow.com