
En Process Monitor, si elegimos un proceso específico y luego elegimos su propiedad, en propiedades del evento, la pestaña de proceso muestra la dirección de cada archivo de biblioteca individual y ¿a qué se refieren estas direcciones? ¿También las direcciones en Pila apuntan a una ubicación de memoria física o virtual?
Respuesta1
Todas las direcciones mostradas son virtuales. Son las direcciones iniciales de las DLL u otros archivos asignados en el espacio de direcciones virtuales del proceso. Las direcciones que se muestran en la pestaña Pila también son virtuales.
Puede ver un desglose similar en Process Explorer: habilite la "vista de DLL" en el panel inferior. Y también en VMmap, pero con más detalle. VMmap incluye las direcciones de "secciones" dentro de cada archivo ejecutable. Habrá una sección para código, otra para datos de solo lectura, otra para "recursos", etc., además de información de control.
En realidad, es extremadamente difícil para un sistema operativo de memoria virtual en x86/x64 usar directamente, es decir, hacer referencia, a una dirección física. Una vez que el sistema "se vuelve virtual", es decir, establece el bit "Habilitación de paginación" en CR0, lo que ocurre muy temprano en el arranque, todas las direcciones afirmadas por el código en ejecución (ya sea en modo kernel o usuario) son interpretadas por la CPU como direcciones virtuales. y deben traducirse (usando información de las tablas de páginas) a físico antes de presentarse al controlador de memoria.
El código kernel en el sistema operativo, por supuesto, "administra" la memoria física (por ejemplo, asignándola a procesos que la necesitan) y manipula las entradas de la tabla de páginas y los números de páginas físicas, pero no puede "hacer referencia" directamente a la memoria a través de las direcciones físicas de la memoria.