Memoria compartida bajo Linux
28 02 2008La memoria compartida es otro de los métodos utilizados para la comunicación entre procesos (IPC) en donde 2 o más procesos comparten un segmento de memoria. Básicamente existen 2 tipos diferentes disponibles en la mayoría de sistemas GNU/Linux. Los nombres de estas implementaciones son System V IPC y BSD mmap.
La utilización de memoria compartida en ambos sistemas involucra lo siguiente:
La asignación de un nombre único para el segmento, de manera que otras aplicaciones puedan acceder a él. Al mismo tiempo contienen métodos para producir segmentos anónimos o privados.
Especificación de los permisos de acceso, siguiendo el esquema lectura/escritura/ejecución
Condiciones de carrera (Race conditions), métodos para tratar de evitar estas situaciones.
Funciones BSD mmap
#include
#include
void *mmap(void *start, size_t length, int prot , int
flags, int fd, off_t offset);
int munmap(void *start, size_t length);
int msync(const void *start, size_t length, int flags);
int mprotect(const void *addr, size_t len, int prot);
prot |= PROT_EXEC
PROT_READ
PROT_WRITE
PROT_NONE
flags |= MAP_FIXED
MAP_SHARED, MAP_PRIVATE
MAP_ANONYMOUS
System V IPC
#include
#include
key_t ftok(char pathname, char proj);
IPC_PRIVATE
struct ipc_perm
{
key_t key;
ushort uid; / owner euid and egid /
ushort gid;
ushort cuid; / creator euid and egid /
ushort cgid;
ushort mode; / lower 9 bits of access modes /
ushort seq; / sequence number */
};
IPC_CREAT
IPC_EXCL
Categorías : GNU/Linux
Referencias : 1 Referencia »



Tracked: Mar 17, 21:52