Semaforos impr

Solo disponible en BuenasTareas
  • Páginas : 9 (2025 palabras )
  • Descarga(s) : 0
  • Publicado : 19 de noviembre de 2010
Leer documento completo
Vista previa del texto
sistemas operativos 1.

Tema: Definición de semáforos

Semáforos con Posix.



Nombre alumna: Ana alvares.

INTRODUCCION:

El mecanismo IPC de semáforos implementado en UNIX es una generalización más compleja del concepto descrito por Dijkstra, ya que va a permitir manejar un conjunto de semáforos mediante el uso de un identificador asociado y realizar operaciones wait ysignal que actualizan de forma atómica todos los semáforos asociados bajo un mismo identificador.

El objetivo principal de los semáforos es la de proteger una determinada sección crítica y así garantizar que las variables compartidas entre los distintos procesos no sean accedidas al mismo tiempo por estos ya que de ser así se producirían errores en la información que se almacena y por tanto estodará al final un mal resultado de sus operaciones efectuadas.

Cabe destacar que el hecho de ser sección crítica no significa que no ocurran cambios de contexto, sino que como se dijo anteriormente los semáforos sirven para garantizar que las variables compartidas entre los distintos procesos no sean accedidas al mismo tiempo.

Definición de semáforos en UNIX:

Los semáforos básicos son un tipoespecial de variable entera que solo puede ser accedida por dos operaciones atómicas: la operación wait (también denominada p) que espera y decrementa el semáforo (siempre que éste tenga un valor mayor que 0) y la operación signal (también denominada v) que lo incrementa (se utiliza para liberarlo o inicializarlo). Es un mecanismo para prevenir colisiones cuando uno o más procesos solicitansimultáneamente un recurso.

Los semáforos se dividen en 2:

Semáforos contadores: Toman valores positivos mayores o iguales a 0. Se utilizan para sincronización de procesos.
Semáforos binarios: Toman los valores 0 ó 1 y se utilizan para exclusión mutua.

Características:

1. Ambas operaciones (p y v) deben ser atómicas para que funcionen correctamente.

2. Para lograr exclusión mutuaen un semáforo binario este debe valer 1.

3. Cuando un proceso entra pone el semáforo a rojo (0) y cuando sale lo pone a verde (1) para que otro proceso pueda entrar.

4. Los semáforos (binarios) tienen una doble función: lograr exclusión mutua y sincronización entre los procesos.

5. En un problema cualquiera, generalmente existe un semáforo por cada restricción.

Estructura delos semáforos

struct semaphore
{
atomic_t count;
int sleepers;
wait_queue_head_t wait;
}
struct rw_semaphore
{
_s32 activity
spinlock_t wait_lock;
struct list_head wait_list;
};

Librerias:

#include

#include

#include

Los ficheros que contienen el código sobre semáforos son:

• “include/linux/sem.h”: Se encuentra las estructuras necesariaspara el
manejo de semaforos.
• “ipc/sem.c”: Implementación de las funciones y procedimientos así como las
llamadas al sistema asociadas a estos.
• “ipc/util.c”: Implementación de las funciones ipcget, ipcget_new e
ipcget_public utilizadas para la llamada semget.

Operaciones Básicas

Llamadas al sistema:

//creacion y busqueda de grupos de semaforos
int semget(key_t key, int nsems,int semflg);
Key: identifica un grupo de semáforos. Puede usar ftok()
nsems: Numero de semaforos del grupo
semflg: asigna los permisos al grupo de semáforos. Ejemplo: 0666| IPC_CREAT

//operaciones sobre los semaforos
int semop(int semid ,struct sembuf *sops, unsigned int nsops);
semid: numero obtenido desde semget
sops: puntero a arreglo de operaciones sembuf.

//El control de lossemaforos
int semctl(int semid, int semnum, int cmd,...);
GETPID: Devuelve el valor del ultimo proceso en el grupo de semaforos, que realizó llamado al sistema.
SETVAL: permite posicionar el valor del semáforo semnum, del grupo semid.
GETVAL: permite leer el valor del semáforo semnum, del grupo semid.
IPC_RMID: borra un grupo de semáforos.

Estructuras:...
tracking img