Semaforos

Páginas: 12 (2834 palabras) Publicado: 18 de noviembre de 2010
MÓDULO II: PROGRAMACIÓN CONCURRENTE

SEMÁFOROS.

1.- Generalidades de los mecanismos IPC.

1.1.- Características comunes.

El resto del conjunto de mecanismos IPC (semáforos, memoria compartida y cola de mensajes) poseen una serie de características comunes a todos ellos, que se pueden resumir de forma básica en los siguientes puntos:

1. Una estructura con información acerca dequé se está haciendo con dicho mecanismo.
2. Una estructura que define los permisos de los usuarios y grupos de usuarios que pueden acceder al mecanismo IPC.
3. Una clave de acceso o llave.
4. Un conjunto de funciones que permitirán realizar un control sobre el mecanismo en cuestión. Este conjunto de funciones se puede dividir en tres grupos:
• La familia get, para crear obuscar un mecanismo.
• La familia ctl, para realizar operaciones de control y suprimir mecanismos.
• Un conjunto de funciones particulares a cada mecanismo (msgsnd, shmat, etc.).

1.2.- Formación de llaves.

Una llave es una variable o constante del tipo key_t que sirve como clave de acceso a la hora de acceder a los mecanismos IPC previamente creados o para crearotros nuevos. Es normal que los mecanismos que están siendo utilizados como parte de un mismo proyecto compartan la misma llave. Con las llaves se consigue que solo el grupo de procesos destinados a emplear un semáforo, una cola de mensajes o una zona de memoria compartida pueda manipular dichos mecanismos y garantizar qué procesos no relacionados no puedan llevarlo a cabo.

Existen variosmétodos para crear una llave:

1. La librería estándar C aporta la función ftok cuya declaración es la siguiente:
#include
#include

key_t ftok (path, id);
char *path;
char id;

donde path es un puntero al camino de un fichero, que debe existir dentro del sistema de ficheros y que debe ser accesible al proceso que llama a estafunción; e id es un carácter ASCII que identifica el proyecto. Ftok va a devolver una llave basada en ambos parámetros; de forma que devolverá la misma llave para distintos caminos que llegan a un mismo fichero, siempre que se utilice el mismo valor para id, y devolverá diferentes llaves para distintos valores de id aunque se use el mismo fichero.

Si el fichero no es accesible al proceso,bien porque no exista, bien porque sus permisos lo impiden, ftok va a devolver el valor (key_t)(-1), que indica que se ha producido un error en la creación de la llave.

El siguiente ejemplo muestra como se llama a esta función para crear una llave asociada al fichero “/etc/passwd” y al identificador ‘A’:

key_t llave;
....
if ((llave=ftok(“/etc/passwd”,‘A’))==(key_t) –1)
{
/* Error al crear la llave. Tratamiento del error. */
}

2. Puesto que la única condición es que la llave sea una variable del tipo key_t, se puede escoger cualquier cadena de caracteres y convertirla a este tipo. El siguiente ejemplo ilustra este método:
key_t llave;
....
llave=(key_t)atoi(argv[0]); /*Se usa el nombre del programa comogenerador de la llave. */

3. También se puede especificar directamente un valor numérico como llave, tal como se ilustra en el siguiente ejemplo:
#define LLAVE (key_t)345

1.3.- Control de las facilidades IPC desde la línea de órdenes.

El sistema operativo UNIX ofrece los siguientes programas para controlar y observar desde la línea de comandos el desarrollo de losIPC que gestiona el sistema.

a) El programa estándar ipcs facilita información sobre los mecanismos utilizados por nuestro sistema, informando de a quién están asignados, permisos, información estadística, etc.

La forma de emplear este programa es la siguiente: $ ipcs [opciones]

Si no se especifica ninguna opción, el programa muestra un resumen de la información...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Los Semaforos
  • semaforo
  • Semaforo
  • semaforo
  • SEMAFORO
  • Semáforo
  • Semaforo
  • Semaforo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS