P7 - Sobre el rol de la memoria física

Re: P7 - Sobre el rol de la memoria física

de Carlos Luna -
Número de respuestas: 0

Hola,

El modelo de memoria de la plataforma consta de tres tipos de direccionamiento y dos mappings. Van algunos datos que pueden ayudar a entender mejor el modelo. 

  • Memoria virtual: memoria direccionada por aplicaciones de un SO. Se mapea a una memoria de máquina a través de la PT actual del SO activo. Parte de esta memoria está reservada por el hypervisor, para no cambiar de mapeo (PT) durante hypercalls (el hypervisor atiende la llamada de un guest con el mismo mapping del guest).
  • Memoria física: es la memoria que ve el kernel de los SOs guest. Permite que los SOs vean la memoria que tienen disponible en la máquina virtual como un conjunto de direcciones contiguas. Estas direcciones sólo son usadas por el SO guest al realizar hypercalls, el hypervisor aplica el mapping para obtener direcciones de máquina antes de usarlas.
  • Memoria de máquina: es la memoria real de la máquina física en la que ejecuta la plataforma. Se divide en páginas de dos tipos: RW (lectura/escritura, con datos arbitrarios) y PT (page table) con los mappings entre va (virtual address) y ma (machine address). Cada página tiene, además, un propietario que puede ser un SO particular, el hypervisor o ninguno.

En cuanto a los mappings, cada sistema operativo tendrá un conjunto de Page Tables (en principio una por cada aplicación que ejecute en él), que mapea direcciones virtuales a direcciones de máquina. Las aplicaciones al ejecutar utilizan direcciones de memoria virtual. Cuando ocurre un cambio de contexto de aplicaciones dentro de un SO (acción lswitch), se cambia la PT actual de ese SO, indicando que ahora pasa a ejecutar otra aplicación dentro de él. Cabe destacar que ni las aplicaciones ni el SO guest tienen acceso de lectura o mod ificación sobre las PTs: para leerlas o escribirlas, se requiere que el procesador esté en modo supervisor. Esto está implícitamente modelado, y requiere que el hardware de la máquina física se comporte de esta manera. Las arquitecturas comunes funcionan así. 

El mapping entre direcciones físicas y de máquina lo mantiene el hypervisor para cada SO, y es modificado por las acciones page pin (agregando una correspondencia al mapping) y page unpin (eliminando una correspondencia). Asimismo, estas acciones modifican el propietario de la página de memoria y sólo pueden ser ejecutadas en modo supervisor (por el hypervisor).

Saludos, Carlos