|
|||||||
|
|
MREMAPSection: Manual del Programador de Linux (2)Updated: 12 Abril 1996 Index Return to Main Contents NOMBREmremap - re-asocia una dirección de memoria virtualSINOPSIS#include <unistd.h>#include <sys/mman.h> void *mremap(void *vieja_dir, size_t viejo_tam , size_t nuevo_tam, unsigned long flags); DESCRIPCIÓNmremap expande (o encoge) una asociación existente de memoria, moviéndola potencialmente a la vez (según se controle por el argumento flags y según el espacio de direcciones virtuales disponible).vieja_dir es la dirección antigua del bloque de memoria virtual que Ud. quiere expandir (o encoger). Observe que vieja_dir tiene que tener alineamiento de página. viejo_tam es el antiguo tamaño del bloque de memoria virtual. nuevo_tam es el tamaño pedido del bloque de memoria virtual tras el cambio de tamaño. El argumento flags es un mapa de bits de opciones. En Linux la memoria se divide en páginas. Un proceso de usuario tiene (uno o) varios segmentos de memoria virtual lineales. Cada segmento de memoria virtual tiene una o más asociaciones a páginas de memoria real (en la tabla de páginas). Cada segmento de memoria virtual tiene su propia protección (derechos de acceso), que pueden producir una violación de segmento si a la memoria se accede incorrectamente (p.ej., por escribir en un segmento de lectura exclusiva). Acceder a memoria virtual fuera de los segmentos también producirá una violación de segmento. mremap emplea el esquema de tabla de páginas de Linux. mremap cambia la asociación entre direcciones virtuales y páginas de memoria. Esto puede emplearse para implementar un realloc muy eficiente. FLAGS
VALOR DEVUELTOEn caso de éxito, mremap devuelve un puntero a la nueva área de memoria virtual. En caso de error, se devuelve -1 y se pone un valor apropiado en errno.ERRORES
CONFORME AEsta llamada es específica de Linux, y no debería emplearse en programas que se pretendan transportables. 4.2BSD tenía una llamada igual (nunca implementada realmente) mremap(2) con una semántica completamente diferente.VÉASE TAMBIÉNgetpagesize(2), realloc(3), malloc(3), brk(2), sbrk(2), mmap(2) Su libro de texto favorito de Sistemas Operativos para más información sobre la memoria paginada. Por ejemplo: Sistemas Operativos Modernos por Andrew S. Tannenbaum, Inside Linux por Randolf Bentson, o The Design of the UNIX Operating System por Maurice J. Bach.
Index | ||||||
|
|
|
Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account Document on this page is part of "Linuxinfor Man Pages in HTML Format: man2". See Index Page for more info about Authorship and Copyright. 1999-2008 Linuxinfor.com. No rights reserved. |