Introdução a Sistemas
     Operacionais


 Mutexes, Monitores e Semáforos
Mutexes
Mutexes são mecanismos utilizados para implementar
 exclusão mútua em threads.
Um algoritmo de exclusão mútua serve para garantir que
 regiões críticas de código não sejam executadas
 simultaneamente, protegendo estruturas de dados
 compartilhadas de modificações simultâneas.

               pthread_mutex_t lock;
               pthread_mutex_init(&lock, NULL);
               pthread_mutex_lock(&lock);
                /* Executa região crítica */
               pthread_mutex_unlock(&lock);
Monitores
Um monitor é um conjunto de procedimentos, variáveis e estruturas de
  dados, todas agrupadas em um módulo especial. Somente um
  processo pode estar ativo dentro do monitor em um instante.

             monitor example
              integer i
              condition c

              procedure producer ( )
               /* Executa região crítica */
              end;

              procedure consumer ( )
               /* Executa região crítica */
              end;

             end monitor;
Semáforos
Um semáforo é uma estrutura de dados que consiste em um número
   inteiro e em uma fila que armazena descritores de tarefas.
A estrutura de dados é uma fila, funcionando em regime de FIFO.
Deadlock ocorre quando um processo altera o valor do semáforo e entra
   na região crítica, mas ocorre uma falha na saída da região.

                        #include <semaphore.h>
          sem_t teste; //Criar o semáforo chamado de teste
          sem_init(&teste, 0, 0); //Inicialização do semáforo
      sem_wait(&teste); //Função para (decrementar/aguardar)
        sem_post(&teste); //Função para (incrementar/liberar)
sem_destroy(&teste); // função para apagar o semáforo após a utilização
Mutexes, Monitores e
    Semáforos


    Marcel Luis Nishihara
   Thiago Henrique Poiani

Mutexes, Monitores e Semáforos

  • 1.
    Introdução a Sistemas Operacionais Mutexes, Monitores e Semáforos
  • 2.
    Mutexes Mutexes são mecanismosutilizados para implementar exclusão mútua em threads. Um algoritmo de exclusão mútua serve para garantir que regiões críticas de código não sejam executadas simultaneamente, protegendo estruturas de dados compartilhadas de modificações simultâneas. pthread_mutex_t lock; pthread_mutex_init(&lock, NULL); pthread_mutex_lock(&lock); /* Executa região crítica */ pthread_mutex_unlock(&lock);
  • 3.
    Monitores Um monitor éum conjunto de procedimentos, variáveis e estruturas de dados, todas agrupadas em um módulo especial. Somente um processo pode estar ativo dentro do monitor em um instante. monitor example integer i condition c procedure producer ( ) /* Executa região crítica */ end; procedure consumer ( ) /* Executa região crítica */ end; end monitor;
  • 4.
    Semáforos Um semáforo éuma estrutura de dados que consiste em um número inteiro e em uma fila que armazena descritores de tarefas. A estrutura de dados é uma fila, funcionando em regime de FIFO. Deadlock ocorre quando um processo altera o valor do semáforo e entra na região crítica, mas ocorre uma falha na saída da região. #include <semaphore.h> sem_t teste; //Criar o semáforo chamado de teste sem_init(&teste, 0, 0); //Inicialização do semáforo sem_wait(&teste); //Função para (decrementar/aguardar) sem_post(&teste); //Função para (incrementar/liberar) sem_destroy(&teste); // função para apagar o semáforo após a utilização
  • 5.
    Mutexes, Monitores e Semáforos Marcel Luis Nishihara Thiago Henrique Poiani