Red de conocimiento informático - Conocimiento sistemático - Buscando explicar los principios de funcionamiento y las conclusiones importantes de la memoria física y la memoria virtual del sistema operativo Windows.

Buscando explicar los principios de funcionamiento y las conclusiones importantes de la memoria física y la memoria virtual del sistema operativo Windows.

Sabemos que cada proceso de Windows tiene 4G de espacio de direcciones, pero su computadora obviamente no tiene 4G de memoria física.

En un entorno multitarea, la cantidad total de memoria utilizada por todos los procesos puede exceder la memoria física del ordenador.

En algunos casos, parte de un proceso puede eliminarse de la memoria física y almacenarse temporalmente en un archivo (pagefile) en el disco duro. Cuando un proceso intenta acceder a estas páginas de memoria que se han intercambiado en el archivo de paginación, el sistema generará una interrupción por falla de página y el Administrador de memoria de Windows será responsable de recuperar las páginas de memoria correspondientes del disco duro a la memoria física.

Nota:

1) La memoria física a la que un proceso puede acceder directamente en un momento dado (sin interrupción por falla de página) se denomina trabajo del proceso

Conjunto ;

2) La memoria física a la que puede acceder un proceso que se ha confirmado desde el espacio de direcciones de 4 GB (Gb) se denomina conjunto comprometido

.

3) Aunque puede existir memoria virtual comprometida

en el archivo de página

, el conjunto de trabajo debe estar ubicado en la memoria física.

Mem

El nombre Uso es algo engañoso. Solo representa la memoria física ocupada actualmente por el proceso, que es el conjunto de trabajo. WorkingSet no representa toda la memoria virtual ocupada actualmente por el proceso. Es posible que el proceso haya intercambiado algunos datos en el archivo de paginación. Sólo cuando se accede a estos datos se cargan en la memoria física.

Tarea

El administrador también tiene una columna de datos: VM

El tamaño representa la memoria virtual asignada por el proceso (comprometida

Tamaño de la memoria virtual

memoria). La definición real es un poco más complicada que eso, pero ahora podemos entenderla como memoria virtual asignada por un proceso.

Cuando se minimiza un programa de Windows, el Administrador de memoria de Windows minimiza el conjunto de trabajo del proceso (basado en FIFO o LRU usado menos recientemente) e intercambia la mayoría de los datos en el archivo de paginación.

Esto es fácil de entender: normalmente siempre queremos dejar más memoria física para que la aplicación en primer plano obtenga un mejor rendimiento. Cuando un programa se reanuda desde un estado minimizado, Windows no carga completamente toda la memoria virtual del programa, sino sólo la parte necesaria. Esto también es fácil de entender: rara vez se accede al código en la fase de inicio del programa después del inicio (esto es especialmente obvio en los programas .NET, si no se usa Reflection después de que el programa se carga normalmente, los módulos como fusion generalmente se no usado).

Pero cuando se trata de memoria virtual, la situación no es tan sencilla. Si el WorkingSet es demasiado pequeño, se producirá una gran cantidad de interrupciones fuera de página cuando el programa se esté ejecutando, lo que afectará gravemente el rendimiento del programa. Por otro lado, si el conjunto de trabajo es demasiado grande, se desperdiciará memoria física valiosa y se reducirá el rendimiento de todo el sistema.

En circunstancias normales (a menos que sea una aplicación muy sensible al rendimiento y esté familiarizado con la administración de memoria de Windows), se recomienda que no ajuste el tamaño del WorkingSet usted mismo en el programa, sino que lo deje Esta tarea debe completarse en el Administrador de memoria de Windows

Sabemos que una de las características de DLL es el disfrute del código. Tomando como ejemplo NTDLL DLL, casi todas las aplicaciones en todo el sistema Windows (específicamente, el subsistema Win32 Todos los programas en el sistema Windows deben hacer referencia a NTDLL.DLL. Si todos hacen una copia de NTDLL.DLL, todas las aplicaciones en el sistema Windows usarán la DLL.

Si todo el mundo utilizara la DLL NTDLL, una sola copia del archivo ocuparía decenas de megabytes de memoria.

La solución de Windows es mantener solo una copia de NTDLL.DLL en la memoria física. Todos los programas que hacen referencia a la DLL asignan la copia a su propio espacio de memoria ****, disfrute de NTDLL El segmento de código de. el .DLL (el segmento de datos de cada proceso sigue siendo independiente).

Entonces, si bien el tamaño de NTDLL.DLL se calcula en el WorkingSet de su programa, ¿eliminar la referencia a esa DLL de su programa realmente no libera mucha memoria física? Si no lo estás usando, ¡alguien más todavía lo está usando!

Por lo tanto, su programa ocupará mucha menos memoria física que la que muestra el uso de Mem

Uso, y será necesario deducir una gran cantidad de uso compartido del uso de Mem

Memoria

Código

Página

(como puedes ver en vadump).

Conclusión importante:

No haga referencia a la tarea

Mem

Datos de uso del administrador. El tamaño de estos datos tiene. ningún impacto directo en el desempeño del programa.