La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Comunicación y sincronización de procesos

Presentaciones similares


Presentación del tema: "Comunicación y sincronización de procesos"— Transcripción de la presentación:

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

2 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.

3 Caracterí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

4 Caracterí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)

5 Características generales
También se utilizan las siguientes constantes: IPC_NOWAIT IPC_RMID IPC_SET IPC_GET IPC_PRIVATE IPC_CREAT IPC_EXCL IPC_KERNELD IPC_INFO

6 Estructuras de datos asociadas
Estructura msgid_ds Asociada a cada colas Se crea al hacer la llamada msgget Su estructura interna es:

7 Estructuras de datos asociadas
struct 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 */};

8 Estructuras de datos asociadas

9 Estructuras de datos asociadas
Estructura ipc_perm Asociada a cada colas Registra los permisos de operación Su estructura interna es:

10 Estructuras de datos asociadas
struct ipc_perm { __kernel_key_t key; __kernel_uid_t uid; __kernel_gid_t gid; __kernel_uid_t cuid; __kernel_gid_t cgid; __kernel_mode_t mode; unsigned short seq; };

11 Estructuras de datos asociadas
Estructura msginfo

12 Estructuras 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 */ };

13 Estructuras de datos asociadas
Estructura msgbuf

14 Llamadas al sistema Msgget Msgctl
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

15 Llamadas al sistema Msgsnd
Enviará un mensaje a la cola indentificada por msqid Error : retorna -1 y errno tendrá el código Recibirá un mensaje de la cola indentificada por msqid


Descargar ppt "Comunicación y sincronización de procesos"

Presentaciones similares


Anuncios Google