Next: Estruturas associadas aos semáforos
Up: Os Semáforos
Previous: Comandos de status usando
Inicialmente, o usuário deve associar um valor de uma chave ao
semáforo criado. O sistema irá então retornar um identificador único
de semáforo ao qual estão agrupados n semáforos (i.e., um
grupo de semáforos) numerados de 0 a (n-1). Para
especificar um semáforo, o usuário deverá então indicar um
identificador do grupo de semáforos e o número de semáforos a serem
criados.
A cada semáforo é associado um valor, sempre positivo, que poderá ser
incrementado ou decrementado pelo usuário segundo suas
necessidades. Considere, por exemplo, N como o valor inicial,
e n o valor do incremento determinado pelo usuário:
- Se n>0 : o processo do usuário aumenta o valor
do semáforo de n e continua sua execução;
- Se n<0 :
- se N+n é maior ou igual a 0 o processo do
usuário diminui o valor do semáforo de |n| e
continua sua execução;
- se N+n é menor que 0 o processo do usuário se
bloqueia, esperando até que N+n seja maior ou igual
a 0;
- Se n=0 :
- se N=0 o processo continua sua execução;
- se N é negativo o processo do usuário se
bloqueia, esperando até que N=0;
Como será visto, o bloqueio dos processos é ''parametrizável'', isto
é, pode-se especificar que o processo não será bloqueado pelo sistema,
sendo enviado apenas um código de erro ao processo que segue sua
execução normalmente após o recebimento deste código.
Vale salientar que a cada identificador de semáforo é associada uma
lista de permissões de acesso a este (de maneira similar ao caso de
arquivos e tubos). Estas permissões são necessárias para controlar as
operações sobre os valores dos semáforos. Elas são inoperantes para as
duas manipulações a seguir:
- a destruição de um identificador de semáforo
- a modificação dos direitos (permissões) de acesso ao semáforo
Essas modificações só são permitidas para o super-usuário do sistema,
para o próprio criador do semáforo, ou por seu proprietário. Note
ainda que para o ''bom funcionamento'' dos mecanismos, as operações
sobre os semáforos são consideradas indivisíveis (não podem ser
interrompidas).
Subsections
Next: Estruturas associadas aos semáforos
Up: Os Semáforos
Previous: Comandos de status usando
Celso Alberto Saibel Santos
2000-11-14