Semaforo binario c#: función semget: crear un semaforo
Enviado por Aldo Rodríguez • 30 de Noviembre de 2015 • Tarea • 301 Palabras (2 Páginas) • 229 Visitas
semaforo
los semaforos controlan el acceso a recursos compartidos asi como las luces de un semaforo controlan
el flujo del trafico en una interceccion
no proporcionan informacion entre procesos, si no que sincronizan el acceso a recursos compartidos
semaforo binario: tiene 2 posibles valores 0 cuando un proceso esta bloqueado
1 cuando el recurso esta desbloqueado.
crear un semaforo
funcion semget: crear un semaforo
biblioteca
#include <sys/type.h>
#include <sys/ipc.h>
#include <sys/sem.h>
sintaxis
int semget(key-t key, int nsems, int flags)
funcion semop Realizar operaciones en uno o mas de los semaforos creados o alos que se ha accedido mediante una llamada
sintaxis
y
bibliotecas
#include <sys/type.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semop(int semid, struct sembuf *semops, unsigned nops)
id del semaforo
apuntador ala estructura del semaforo
struct sembuf{
short sem_num; //#de semaforo
short sem_op; //la operacion a relaizar
short sem_flg; //indicadores que controlan la operacion
};
>0 o +; el recuso controlado por el semaforo es liberado y el valor del semaforo se incrementa
<0 o - el proceso que se llama esta indicado que quiere esperar hasta que el recurso controlado este disponible. el valor del semaforo disminuira y el recurso sera bloqueado
=0 el proceso que llama se bloqueara hasta que sem = 0 si ya es cero, la llamada vuelve inmediatamente
control y eliminacion de semaforos
funcion semclt: controla y elimina el semaforo
sintaxis:
int semclt(int semid, int semnum, int cmd, union semun arg);
id del semaforo
#del semaforo en especifico
comandos
union semun {
int val ; /*valor del tetval
struct semid_ds *buf; /* bufer de ipc_stat
unsigned short int *array;
cmd GETVAL: devuelve el estado actual del semaforo
SETVAL: establce el estado actual del semaforo
GETPID: DEVUELVE EL PID QUE LLAMO POPR ULTIMA VEZ A SENOP
GETALL: devuelve el valor de todos los semaforos
setALL ESTABLECE EL VALOR DE TODOS LOS VALORES
IPC_RMID ELIMINA SEMAFORO
IPC_SET ESTABLECE EL MODO (PERMISOS DEL SEMAFORO)
IPC_STAT COPIA E.D SEMID_DS IPC_STAT
...