Ipc posix

Solo disponible en BuenasTareas
  • Páginas : 6 (1363 palabras )
  • Descarga(s) : 0
  • Publicado : 9 de noviembre de 2011
Leer documento completo
Vista previa del texto
Documentación del IPC
IPC (Inter-Process Communication) es una función básica de los sistemas operativos. Los procesos pueden comunicarse entre sí a través de compartir espacios de memoria, ya sean variables compartidas o buffers, o a través de las herramientas provistas por las rutinas de IPC
Las técnicas de IPC están divididas dentro de métodos para: paso de mensajes, sincronización, memoriacompartida y llamadas de procedimientos remotos (RPC).

Mensajes en POSIX
* Cola de mensajes: buzón intermedio donde se pueden dejar y recoger mensajes.
* Los mensajes los pueden enviar y recibir varios procesos / hilos
* Descriptor de cola de mensajes: mqd_t;
* Atributos de cola de mensajes:
* mq_attr {
long mq_flags; /* mensajes banderas en cola (0 or O_NONBLOCK )*/long mq_maxmsg; /* número máximo de mensajes */
long mq_msgsize; /* tamaño máximo del mensaje */
long mq_curmsgs /* número de mensajes en cola */
} ;

A continuación una descripción de las funciones:

1. Funciones de Cola de Mensaje

mqd_t mq_open(const char *name, int flags, ... [ mode_t mode, struct mq_attr *mq_attr ]);
Función que crea una cola de mensajes, losparámetros que recibe son 3;
name: indica el nombre de archivo válido,
oflag: O_CREAT | otros flags (O_RDONLY, O_WRONLY, O_RDWR, O_NONBLOCK, O_EXCL ).

int mq_close(mqd_t mqdes);
Función que cierra una cola de mensajes, recibe un parámetro y devuelve 0 para afirmar | 1 para caso contrario.

int mq_unlink(mqd_t mqdes);
Función de tipo “int” que elimina una cola de mensajes, recibe un parámetrode tipo mqd_t y devuelve 0 o -1 cuando se produce un error.

2. Envío de Mensajes

int mq_send(mqd_t mqdes, const char *msg_ptr,size_t msg_len, unsigned int msg_prio);
Función de tipo “int” que envía len bytes de “msgbuf” a la cola de “mqdes”, asociando una prioridad “prío”. Devuelven 0 en caso éxito, -1 en caso contrario. Nota: se bloquea si no hay sitio en la cola.

3. Recepciónde Mensajes

size_t mq_receive(mqd_t mqdes, char *msg_ptr,size_t msg_len, unsigned int *msg_prio);
Función de tipo “size_t”que lleva el mensaje más antiguo con la más alta prioridad de mqdes en buffer. El campo len determina un efecto importante . “prio” , si no es NULL, se llena con la prioridad del mensaje dado.
Devuelve la longitud del mensaje recibido, o -1 en caso de error.
Nota: sebloquea si no hay mensajes en la cola).

int mq_getattr(mqd_t mqdes, struct mq_attr *mq_attr);
Función de tipo “int” que proporciona los atributos asociados a mqdes llenando en mq_attr con la estructura que se muestra arriba. Devuelve 0 o -1 en caso de error.

int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat);
Función de tipo “int” que establece losatributos llevado por “mqstat”. De hecho, sólo el miembro “mq_flags” de esta estructurase aplica (para el establecimiento de O_NONBLOCK): los otros son simplemente ignorados y se puede ajustar sólo cuando se crea la cola. El “omqstat” comúnmente NULL, o se llena con los atributos anteriores y el estado de la cola actual. Devuelve 0 o -1 en caso de error y la cola no serán tocados.

Memoria en POSIXint shm_open(const char *name, int flags, mode_t mode);
Funcion de tipo “int” para abrir (o crear) un objeto de memoria compartida con el nombre real de POSIX. El argumento “flags” instruye sobre la manera de abrir el objeto de: los más relevantes son O_RDONLY O_RDWR xor para el tipo de acceso, yO_CREAT para crear si el objeto no existe. “mode” sólo se utiliza cuando el objeto se va a crear, yespecifica su permiso de acceso (estilo umask). Devuelve un descriptor de fichero si tiene éxito, si no -1.

void *mmap(void *start_addr, size_t len, int protection, int flags, int fd, off_t offset);
Funcion de tipo “void” que mapea el archivo “fd” en la memoria, a partir del desplazamiento de un len segmento largo. “len” es preferiblemente un múltiplo del tamaño de página de sistema, el tamaño...
tracking img