Sunteți pe pagina 1din 4

Maryorie Serrano 4-760-254 Abelino Bonilla 4-750-734 Sabdy Hurtado 4-750-1243 Memoria Compartida en Posix Hay varios mecanismos

IPC diferentes. Incluyendo los de memoria compartida y de pasos de mensajes. API de Posix

1.sistema proceso () queque deriva un segmento de memoria(obtencin deusando alatravs de de Un tiene crear compartida llamada shmget se de Shared Memory GET datos la
memoria compartida) Ejm. Segment_id = shmget (IPC_private, size, S_IRUSR);

El primerse crea un nuevo segmento de del segmento de memoria compartida. Si se define como parmetro especifica la clave IPC_PRVATE, memoria compartida. El segundo parmetro especifica el tamao (en bytes) del segmento. El tercer compartidapara leer,elpara escribir oindica ambas operaciones. el segmento de parmetro identifica modo, que cmo se va a usar memoria para 2.a su Los procesosdirecciones usando la allamada del sistema shmat compartida deben asociarlo que deseen acceder un segmento de memoria espacio de () que se deriva de Shared
Memory ATtach.

El primer parmetro es el identificador entero del segmento de memoria compartida al que se va a conectar.
El segundo es la ubicacin de un puntero en memoria, que indica donde se asociara la memoria compartida. El tercer parmetro especifica un indicador que permite que la regin de memoria compartida se conecte en modo de solo lectura o escritura. Pasando un parmetro de valor 0, permitimos tanto lecturas como escrituras en la memoria compartida.

Para asociar una regin de memoria compartida usando shmat(), se puede hacer: Shared_ memory = (char *) shmat (id, NULL, 0);

Si se ejecuta correctamente, shmat () devuelve un puntero a la posicin inicial de memoria a la que se ha asociado la regin de memoria compartida.

Ejm. Shmat() devuelve un puntero a una cadena de caracteres. Sprintf (shared_ memory, escribir en memoria compartida);

3.desconecta el un proceso ya espacio de direcciones. al segmento de una regin de memoria Cuando no necesita acceder memoria compartida, segmento de su Para desconectar
compartida a la llamada al sistema shmdt (), de la forma siguiente: Shmdt (shared_memory);

4.sistema segmento dela cual secompartidaidentificador del segmento compartido la llamada al Un memoria puede eliminarse del sistema mediante shmctl(), a pasa el junto con el
indicador IPC_RMID.

#include <stdio.h> #include <sys/shm.h> #include <sys/stat.h> int main () { /* el identificador para el segmento de memoria compartida */ int segment_id;= /* un puntero al segmento de memoria compartida */ char* shared_memory; /* el tamao (en bytes) del segmento de memoria compartida */ const int size = 4096; /* asignar un segmento de memoria compartida */ segment_id = shmget (IPC_PRIVATE, size, S_IRUSR I S_IWUSR); /* asociar un segmento de memoria compartida */ shared_memory =shmat (segment_id, NULL, 0); /* escribir un mensaje en el segmento de memoria compartida */ sprintf (shared_memory, hola!); /* enviar a la salida la cadena de caracteres de la memoria compartida*/ printf (*&s\n, shared_memory); /* desconectar el segment de memoria compartida */ shmdt (shared_memory); /* eliminar el segmento de memoria compartida */

shmctl (segment_id, IPC_RMID, NULL); return 0;


Este programa crea un segmento de memoria compartida de 4.096 bytes. Una vez que la regin de memoria compartida se ha conectado, el proceso escribe el mensaje hola! en la memoria compartida. Despus presenta a la salida el contenido de la memoria actualizada, y desconecta y elimina la regin de memoria compartida.