next up previous contents
Next: Manejo de excepciones Up: Memoria Virtual Previous: Memoria Virtual

Espacio de direcciones virtuales

Un espacio de direcciones virtuales es un conjunto de direcciones virtuales válidas que un hilo ejecuta en la tarea propietaria del espacio de direcciones. La tarea propietara nombra al espacio de direcciones.

Un espacio de direcciones virtuales consiste de un conjunto de páginas de memoria indexadas en forma contínua. El núcleo agrupa internamente conjuntos de páginas contiguas que tienen los mismos atributos (herencia, protección y otras propiedades) en entidades internas denominadas regiones de memoria. Las regiones de memoria se nombran únicamente por los rangos de direcciones virtuales que contienen a este espacio de direcciones. Varias operaciones y mecanismos del sistema son sensitivos a identificar regiones de memoria, pero la mayoría de los accesos del usuario no se afectan, y pueden extenderse sobre las regiones de memoria libremente. El núcleo tiene la libertad para partir y unir regiones de memoria si lo ve adecuado; el cliente ve este espacio de direcciones como un conjunto de páginas.

Un espacio de direcciones se crea cuando se crea una tarea, y se destruye cuando se destruye una tarea. Si se ignora la herencia cuando se crea una tarea nueva, su espacio de direcciones estará vacío y se deberá construir haciendo manipulaciones de la memoria virtual antes de que una tarea pueda tener hilos en ejecución. Una tarea nueva puede heredar rangos de memoria de la tarea prototipo que hace el llamado para la creación de la misma. También se pueden asignar las propiedades de herencia en un rango de memoria:

VM_INHERIT_NONE -- El rango queda indefinido en la nueva tarea.
VM_INHERIT_COPY -- El rango se copia en la nueva tarea al tiempo en que ésta se crea.
VM_INHERIT_SHARE -- La nueva y vieja tarea accesan al mismo rango de memoria.

Se pueden tener distintas semánticas asociadas a un rango de memoria a través de acciones de un manejador de memoria. Cuando un nuevo rango de memoria se establece en un espacio de direcciones virtuales, se especifica un objeto de memoria abstracto (posiblemente por omisión) que representa la semántica del rango de memoria, por estar asociado con una tarea (un manejador de memoria) que proporciona esta semántica.


next up previous contents
Next: Manejo de excepciones Up: Memoria Virtual Previous: Memoria Virtual
Amilcar Meneses
2002-10-03