Los rincones del API Win32: Archivos proyectados en memoria - La teoría
27 de Agosto de 2005
Programación estructurada
Cuando hablamos de la memoria virtual, dijimos que el espacio de direcciones virtuales se estructuraba en un árbol formada por "Page Directory" - "Page Tables" - "Page Frames". Toda esta estructura lo representábamos en una tabla lineal para no complicar más el asunto. En esta tabla (nuestro "Page Directory") se indicaba tanto el número de cada una de las páginas (en total 1.048.576 páginas de 4 KB cada una), como la dirección virtual que le corresponde a cada una de ellas, y la dirección física donde está proyectada (que se calculaba a partir de la dirección virtual) . Lo más habitual era que una página de memoria virtual, se proyectase sobre el archivo de intercambio del sistema (normalmente "Win386.swp" en sistemas Windows 95 y "pagefile.sys" en sistemas Windows NT/2000).
Como ya vimos, cuando un programa necesita leer datos de una página que no estaba en RAM, se produce un fallo de página (page fault o page interrupt), lo cual desencadena un proceso en el que se accede a los datos dentro del archivo de intercambio, y se vuelcan a memoria RAM física. Después de esto, se puede continuar la ejecución de modo transparente al usuario.
Ahora supongamos que le decimos al sistema que ciertas páginas de memoria, sean almacenadas en un archivo específico (por ejemplo "c:\datos.dat") en vez de utilizar el archivo de intercambio de sistema. El proceso sería el mismo, con la única diferencia del lugar donde se almacenan las páginas.
Así podríamos manipular cualquier estructura de memoria (un array, una pila, una cola, registros, etc.) a través de punteros, pero en realidad estaríamos leyendo y grabando datos en un archivo de disco.
Con este sistema conseguiríamos olvidarnos del antiguo método de lectura de ficheros (apertura, lectura secuencial o aleatoria y cierre), más propio de la década de los 80 y la programación en COBOL que los nuevos lenguajes de programación del siglo XXI.
Pues, gracias a los archivos proyectados en memoria, esto es posible. Con ellos, podemos manipular un archivo pensando que está cargado en memoria al completo, y simplemente con un puntero accederemos a donde queramos: al principio, al final, desde atrás, hacia adelante... el sistema será el responsable de cargar las páginas que sean necesarias cuando accedemos a ellas.
Como ya vimos, cuando un programa necesita leer datos de una página que no estaba en RAM, se produce un fallo de página (page fault o page interrupt), lo cual desencadena un proceso en el que se accede a los datos dentro del archivo de intercambio, y se vuelcan a memoria RAM física. Después de esto, se puede continuar la ejecución de modo transparente al usuario.
Ahora supongamos que le decimos al sistema que ciertas páginas de memoria, sean almacenadas en un archivo específico (por ejemplo "c:\datos.dat") en vez de utilizar el archivo de intercambio de sistema. El proceso sería el mismo, con la única diferencia del lugar donde se almacenan las páginas.
Así podríamos manipular cualquier estructura de memoria (un array, una pila, una cola, registros, etc.) a través de punteros, pero en realidad estaríamos leyendo y grabando datos en un archivo de disco.
Con este sistema conseguiríamos olvidarnos del antiguo método de lectura de ficheros (apertura, lectura secuencial o aleatoria y cierre), más propio de la década de los 80 y la programación en COBOL que los nuevos lenguajes de programación del siglo XXI.
Pues, gracias a los archivos proyectados en memoria, esto es posible. Con ellos, podemos manipular un archivo pensando que está cargado en memoria al completo, y simplemente con un puntero accederemos a donde queramos: al principio, al final, desde atrás, hacia adelante... el sistema será el responsable de cargar las páginas que sean necesarias cuando accedemos a ellas.
Valora este capítulo:
Autor y licencia de 'Los rincones del API Win32: Archivos proyectados en memoria - La teoría'
|
Opiniona sobre 'Los rincones del API Win32: Archivos proyectados en memoria - La teoría' (1)
Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.
Opina sobre este tutorial |
Wikis relacionados con 'Los rincones del API Win32: Archivos proyectados en memoria - La teoría'
Curso que profundiza en el gestor de montones (o montículos) dentro de Win32, así como...
Más »
Aprenderás a utilizar uno de los mejores clientes P2P que actualmente existe (o sobrevive), a...
Más »
Con este articulo serás capaz de instalar el eMule en tu ordenador y comenzar a...
Más »
El Poeta posee la extraña capacidad para hablar sobre los orígenes. Digo "extraña" porque no...
Más »
Si es correcta la sentencia con la cual Nietzsche afirma que “Todo lo que es...
Más »

