7 - Crear zonas de memoria compartida

[editar]
Tutorial creado por Juan Manuel. Extraido de: http://www.lawebdejm.com
30 de Noviembre de 1999
Quizá la utilidad estrella para los archivos proyectados en memoria sea la compartición de datos entre procesos.

Como ya hablamos en su día, la plataforma Win32 pone muy difícil que los datos puedan ser compartidos entre distintos procesos, dado el carácter privado de su espacio de memoria y el nivel de seguridad que se busca a la hora de desarrollar un sistema operativo robusto. Para solucionar esto, la gente de Microsoft recomienda el uso de archivos proyectados, utilizando dos métodos:

  • Proyecciones nombradas: se basa en crear la proyección de archivo con un nombre, y abrir esa misma proyección desde otro proceso, referenciándola por su nombre. Este es uno de los sistemas para comunicar dos procesos independientes.
  • Herencia de descriptores: los objetos proyección son objetos del núcleo del sistema operativo. Hasta ahora no hemos hablado este tipo de objetos, pero nos bastan con saber que se referencian a través de un descriptor (handle) y que estos descriptores pueden heredarse a los procesos-hijos (o subprocesos) del proceso que los creó. Este es uno de los sistemas para comunicar un proceso-padre con sus procesos-hijos.

Más adelante profundizaremos en estos métodos.

Cuando cualquiera de los dos procesos modifique algún dato, debe notificar al otro proceso (por ejemplo, con un mensaje de ventana) y éste dispondrá de los datos inmediatamente.

Internamente, la compartición de datos se consigue a través de una estructura llamada "prototype page table entry". A esta "cosa", que no sé ni cómo traducirla, le llamaremos PPTE.

Esta estructura, es parecida a nuestro amigo el "Page Table", sin embargo, todos los procesos tienen acceso a un único PPTE global, el cual gestiona qué páginas están compartidas entre procesos y cuales son las direcciones virtuales y físicas de cada una de estas páginas. Creo que con esto nos basta.

Además de compartir datos entre procesos, Windows permite desligar estos datos cuando alguno de los procesos hagan modificaciones. Es decir, los datos se comparten inicialmente, y continúan en este estado mientras no hayan sido modificados, cuando alguno de los procesos cambie el contenido de una página, se hará una copia de esta página y las modificaciones se harán sobre la nueva copia. El proceso que modificó el contenido ahora proyectará su memoria sobre la copia de la página, en vez de la página compartida. Este comportamiento se denomina "Copy on Write" o "Copia con escritura" y es uno de los métodos más utilizados en distintos sistemas operativos.

Windows proporciona otros métodos para compartir datos entre procesos, como el obsoleto DDE o el mensaje WM_COPYDATA, aunque internamente utiliza una sistema basado en archivos proyectados en memoria.
[editar]

1 opinión

Bien.

Cool.

Tutoriales relacionados con 'Los rincones del API Win32: Archivos proyectados en memoria'

Este curso trata el tema de la memoria en la plataforma Win32. En esta ocasión... Más »
Curso que profundiza en el gestor de montones (o montículos) dentro de Win32, así como... Más »
El protocolo FTP desde el API WinInet. Con este curso aprenderás a hacer un pequeño... Más »
Entramos en temas interesantes: el acceso a recursos remotos a través del protocolo de aplicación... Más »

Autor y licencia de 'Los rincones del API Win32: Archivos proyectados en memoria'


Tutorial de Juan Manuel. Extraido de: http://www.lawebdejm.com CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.