1 / 15

Comunicación y sincronización de procesos

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.

kirk
Download Presentation

Comunicación y sincronización de procesos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Comunicacióny sincronización de procesos IPCSYSTEM 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. IPC_PRIVATE IPC_CREAT IPC_EXCL IPC_KERNELD IPC_INFO IPC_NOWAIT IPC_RMID IPC_SET IPC_GET Características generales • También se utilizan las siguientes constantes:

  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 • 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

  15. Llamadas 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

More Related