Escolar Documentos
Profissional Documentos
Cultura Documentos
Semáforos
Semáforos
Semáforos
20 de agosto de 2009
Semáforo é uma variável protegida que só pode ser acessada através de operações
chamadas P (do holandês passeren) e V (vrigeven).
Semáforos binários só podem assumir valores 0 e 1 enquanto os semáforos
contadores (ou gerais) somente podem assumir valores inteiros não negativos.
Operaç~
ao P(S):
Se S > 0 Ent~ao S := S -1
Sen~
ao (espere em S)
Operaç~
ao V(S):
Se (um ou mais processos est~ao esperando em S)
Ent~
ao (deixe que um desses processos prossiga)
Sen~
ao S := S + 1
Deve haver uma fila para os processos que se encontram esperando para completar
uma operação P(S).
P e V são indivisı́veis.
producer() { consumer() {
while (TRUE) { while (TRUE) {
produceItem(item); P(full);
P(empty); P(mutex);
P(mutex); removeItem(item);
enterItem(item); V(mutex);
V(mutex); V(empty);
V(full); }
} }
}
semaphore muxtex = 1;
semaphore full = 0;
semaphore empty = N;
fork(producer, 0);
fork(consumer, 0);