comunicación y sincronización de procesos

15
Comunicación Comunicación y y sincronización de sincronización de procesos procesos IPC IPC SYSTEM V: Colas de SYSTEM V: Colas de mensajes mensajes

Upload: kirk

Post on 23-Jan-2016

50 views

Category:

Documents


0 download

DESCRIPTION

Comunicación y sincronización de procesos. IPC SYSTEM V: Colas de mensajes. Características generales. Las colas de mensajes se comparan con un sistema de buzones. Un proceso deposita uno o más mensajes en un “buzón”. Otro proceso (o varios) puede leer cada uno de los mensajes. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Comunicación y sincronización de procesos

ComunicaciónComunicación y sincronización y sincronización de procesosde procesos

IPCIPC SYSTEM V: Colas de mensajesSYSTEM V: Colas de mensajes

Page 2: Comunicación y sincronización de procesos

Características generalesCaracterísticas generales

• Las colas de mensajes se comparan con un sistema de buzones.

• Un proceso deposita uno o más mensajes en un “buzón”.

• Otro proceso (o varios) puede leer cada uno de los mensajes.

Page 3: Comunicación y sincronización de procesos

Características generalesCaracterísticas generales

• La manipulación de los IPC se efectúa mediante las llamadas de sistema.

• Las tres llamadas fundamentales de las colas de mensajes son:– msgget Creación– msgctl Control– msgsnd, msgrcv Comunicación

Page 4: Comunicación y sincronización de procesos

Características generalesCaracterísticas generales

• Estructuras de datos– Estructuras básicas del sistema. Sólo accesibles

a través de las llamadas al sistema:* struct msgid_ds

* struct ipc_perm

– Estructura específica. Argumento de las llamadas al sistema msgsnd y msgrcv:

* Estructura del mensaje utilizado (void *p)

Page 5: Comunicación y sincronización de procesos

Características generalesCaracterísticas generales

– IPC_PRIVATE

– IPC_CREAT

– IPC_EXCL

– IPC_KERNELD

– IPC_INFO

– IPC_NOWAIT

– IPC_RMID

– IPC_SET

– IPC_GET

•También se utilizan las siguientes constantes:

Page 6: Comunicación y sincronización de procesos

Estructuras de datos asociadasEstructuras de datos asociadas

• Estructura msgid_ds– Asociada a cada colas– Se crea al hacer la llamada msgget– Su estructura interna es:

Page 7: Comunicación y sincronización de procesos

Estructuras de datos asociadasEstructuras de datos asociadasstruct msqid_ds {

struct ipc_perm msg_perm;

struct msg *msg_first; /* first message on queue */

struct msg *msg_last; /* last message in queue */

__kernel_time_t msg_stime; /* last msgsnd time */

__kernel_time_t msg_rtime; /* last msgrcv time */

__kernel_time_t msg_ctime; /* last change time */

struct wait_queue *wwait; struct wait_queue *rwait;unsigned short msg_cbytes;/*current number of bytes on queue*/ unsigned short msg_qnum; /* number of messages in queue */ unsigned short msg_qbytes; /* max number of bytes on queue */

__kernel_ipc_pid_t msg_lspid; /* pid of last msgsnd */ __kernel_ipc_pid_t msg_lrpid; /* last receive pid */};

Page 8: Comunicación y sincronización de procesos

Estructuras de datos asociadasEstructuras de datos asociadas

Tipo Campo Descripciónstruct ipc_perm msg_perm Derechos de acceso del objetostruct msg * msg_first Puntero al primer mensaje de la colastruct msg * msg_last Puntero al último mensaje de la colatime_t msg_stime Fecha a la última llamada a msgsndtime_t msg_rtime Fecha a la última llamada a msgrcvtime_t msg_ctime Fecha a la última modificación del objetostruct wait_queue * wwait Cola de procesos en espera de escriturastruct wait_queue * rwait Cola de procesos en espera de lecturaunshort msg_cbytes Número de bytes actualmente en la colaunshort msg_qnum Número de mensajes en la colaunshort msg_qbytes Número máximo de bytes en la colaunshort msg_lspid Número del último proceso que ha efectuado un msgsndunshort msg_lrpid Número del último proceso que ha efectuado un msgrcv

Page 9: Comunicación y sincronización de procesos

Estructuras de datos asociadasEstructuras de datos asociadas

• Estructura ipc_perm– Asociada a cada colas– Registra los permisos de operación– Su estructura interna es:

Page 10: Comunicación y sincronización de procesos

Estructuras de datos asociadasEstructuras de datos asociadas

struct ipc_perm

{

__kernel_key_t key;

__kernel_uid_tuid;

__kernel_gid_tgid;

__kernel_uid_tcuid;

__kernel_gid_tcgid;

__kernel_mode_t mode;

unsigned short seq;

};

Page 11: Comunicación y sincronización de procesos

Estructuras de datos asociadasEstructuras de datos asociadas

Tipo Campo Descripciónint msgpool Tamaño en kilobytes de los datos en la colaint msgmap Número de entradas en la tabla de mensajesint msgmax Tamaño máximo de los mensajes (en bytes)int msgmnb Tamaño máximo de la cola de mensajesint msgmni Número máximo de identificadores de colas de mensajesint msgssz Tamaño del segmento de mensajeint msgtql Número de cabeceras de mensajes del sistemaunshort msgseg Número máximo de segmentos

• Estructura msginfo

Page 12: Comunicación y sincronización de procesos

Estructuras de datos asociadasEstructuras de datos asociadas

• Estructura msg/*one msg structure for each message */

struct msg

{

struct msg *msg_next; /*next message on queue*/

long msg_type;

char *msg_spot; /*message text address*/

time_t msg_stime; /* msgsnd time */

short msg_ts; /* message text size */ };

Page 13: Comunicación y sincronización de procesos

Estructuras de datos asociadasEstructuras de datos asociadas

Tipo Campo Descripciónlong mtype Tipo del mensajechar[1] mtext Contenido del mensaje

• Estructura msgbuf

Page 14: Comunicación y sincronización de procesos

Llamadas al sistemaLlamadas al sistema

• Msgget– Retorna un descriptor de cola de mensajes– IPC_CREAT: Si no existe descriptor– Error : retorna -1 y errno tendrá el código

• Msgctl– Se accede a los campos de control de la

estructura msgid_ds– Error : retorna -1 y errno tendrá el código

Page 15: Comunicación y sincronización de procesos

Llamadas al sistemaLlamadas al sistema

• Msgsnd– Enviará un mensaje a la cola indentificada por

msqid – Error : retorna -1 y errno tendrá el código

• Msgsnd– Recibirá un mensaje de la cola indentificada

por msqid – Error : retorna -1 y errno tendrá el código