Semaforos

1268 palavras 6 páginas
Sistemas de Computação
Semáforos

06/11/2014

1

Semáforos


Um semáforo simples é uma variável que pode assumir os valores 0 e 1 (semáforo binário). Esta é a forma mais comum



Semáforos que podem assumir diversos valores são chamados de semáforos genéricos ou contadores



Semáforos binários são utilizados para garantir que somente um processo (ou thread) tenha acesso a uma região crítica ou recurso a cada instante



Semáforos contadores permite limitar a quantidade de processos e/ou threads que utilizarão o recurso

Acesso a região crítica
Processo A

Região não crítica do processo A

Operação P com semáforo Região crítica Operação V com semáforo Processo B

Região não crítica do processo B

Apenas um único processo e/ou thread pode entrar na região crítica a cada instante

Semáforos em Unix


Todos as funções de semáforos operam sobre vetores
(arrays) de semáforos contadores



Múltiplos recursos podem ser alocados simultaneamente 

As funções de semáforo são:
#include
int semctl(int sem_id, int sem_num, int command, …); int semget(key_t key, int num_sems, int sem_flags); int semop(int sem_id, struct sembuf *sem_ops, size_t num_sem_ops); Função semget()


A função semget() cria um novo semáforo ou obtém uma chave de um semáforo já existente
 Definida em int semget(key_t key, int num_sems, int sem_flags);


Onde:




key : um valor inteiro utilizado para permitir que processos não relacionados entre si acessem o mesmo semáforo num_sems : número de semáforos a serem criados sem_flags : modo de criação do semáforo






IPC_PRIVATE : somente o processo que criou o semáforo pode utilizá-lo
IPC_CREAT : cria o semáforo, se não existir
IPC_EXCL : gera erro se o semáforo já existir

Retorna:



Em caso de sucesso, ipc_id, um identificador do semáforo
Em caso de falha, -1

Função semget( )


Todos os semáforos são acessados

Relacionados

  • Semáforo
    1721 palavras | 7 páginas
  • Semáforo
    1951 palavras | 8 páginas
  • Semáforo
    1146 palavras | 5 páginas
  • semaforo
    2185 palavras | 9 páginas
  • Semáforo
    1740 palavras | 7 páginas
  • semaforo
    669 palavras | 3 páginas
  • Semaforos
    382 palavras | 2 páginas
  • semaforo
    554 palavras | 3 páginas
  • semaforo
    1389 palavras | 6 páginas
  • Semáforos
    402 palavras | 2 páginas