Estructura y marco narrativo de el decamerón
1.- Conceptos generales de memoria compartida.
La forma más eficaz que tienen los procesos para comunicarse consiste en compartir una zona de memoria, tal que para enviar datos de un proceso a otro, sólo se ha de escribir en dicha memoria y automáticamente estos datos estarán disponibles para cualquier otro proceso. La utilización de este espacio de memoria común evita la duplicación de datos y el lento trasvase de información entre los procesos.
La memoria convencional que puede direccionar un proceso a través de su espacio de direcciones virtuales es local a ese proceso y cualquier intento de direccionar esa memoria desde otro proceso va a provocar una violación de segmento. Es decir, cuando se crea uno o …ver más…
*/ }
3.- Control de un segmento de memoria compartida.
La función shmctl proporciona información administrativa y de control sobre el segmento de memoria compartida que se especifique. Su declaración es la sigueinte:
#include #include #include
int shmctl (shmid, op, p_buf);
int shmid; /* identificador del segmento */ int op; /* operación a efectuar */ struct shnud_ds *p_buf; /* argumento de la operación */
Esta función va a actuar sobre el segmento de memoria compartida que responde al identificador shmid (devuelto por una llamada previa a shmget). El parámetro op indica el tipo de operación de control que se desea realizar, y sus posibles valores válidos son los que se especifican a continuación:
Operación Efecto y valor devuelto
IPC_STAT Lee la información administrativa y la almacena en la zona de memoria apuntada por p_buf.
IPC_SET Modifica la información administrativa, para lo cual dicha información debe estar en p_buf.
IPC_RMID Indica al kernel que borre el segmento. Esto no se llevará a cabo mientras que exista algún proceso conectado al mismo. Sin embargo, su efecto inmediato es evitar que cualquier proceso se enganche a partir de ahora al segmento.
SHM_LOCK Bloquea en memoria el segmento, es decir; permanece fijo en memoria y no se va a realizar sobre él swapping. Esta operación sólo la puede efectuar el superusuario.
SHM_UNLOCK Desbloquea el segmento, pudiendo los mecanismos de swapping trasladarlo de la