Resolver Windows El proceso 2000 /XP conjunto de trabajo

  

En "Análisis de Windows 2000 /XP física Gestión de memoria", que describe en detalle el concepto de la base de datos del marco de página (Base de datos de marco de página) se menciona en la organización y gestión de todos los aspectos del marco de página de memoria física para cada página en el sistema una estructura almacenada en la base de datos de estado de la página de seguimiento. Sin embargo, la base de datos del marco de página y no puede realmente coordinada uso de memoria física. Sabemos, Windows es una multitarea, pero la memoria física es un recurso relativamente escaso, con el fin de evitar un agotamiento del proceso (o sistema) de este recurso, presentado el concepto establecido de trabajo (WorkingSet). gestión de memoria WorkingSet es un término muy importante en Windows 2000 /XP se suele dividir en dos tipos, es decir, el proceso conjunto de trabajo y el conjunto de trabajo del sistema, respectivamente, para el uso de la memoria física de cada proceso y sistema de seguimiento. Desde la introducción del terminal y servicios, y otra de la conjunto de trabajo de sesiones (sesión) conjunto de trabajo, la memoria física utilizada para rastrear donde la sesión correspondiente. A partir de la organización interna del proceso de trabajo conjuntos, describe brevemente el conjunto de trabajo de la organización y gestión en Windows 2000 /XP en.

EPROCESS es una descripción de la estructura del proceso, a partir de EPROCESS, sin duda puede encontrar la representación del proceso conjunto de trabajo. De hecho EPROCESS subestructura situada en MMSUPPORT se trata de algunos de los elementos clave del proceso asociado con el subsistema de memoria, un proceso natural del conjunto de trabajo es también aquí. Para versiones anteriores del kernel no está integrado en la estructura del contenido MMSUPPORT y definidas entre cada versión MMSUPPORT no es lo mismo, se enumeran bajo la definición SP0 MMSUPPORT 2600 en Windows XP construcción (todos los valores de esta estructura sólo pueden aplicarse a versión):

typedef struct _MMSUPPORT {
LARGE_INTEGER LastTrimTime; Banderas
MMSUPPORT_FLAGS;
ULONG PageFaultCount;
ULONG PeakWorkingSetSize;
ULONG WorkingSetSize;
ULONG MinimumWorkingSetSize;
ULONG MaximumWorkingSetSize;
PMMWSL VmWorkingSetList;
LIST_ENTRY WorkingSetExpansionLinks;
ULONG Reclamación;
ULONG NextEstimationSlot;
ULONG NextAgingSlot;
ULONG EstimatedAvailable;
ULONG GrowthSinceLastEstimate;
} MMSUPPORT, * PMMSUPPORT;

MMSUPPORT en PeakWorkingSetSize, funcionamientos etSize, MinimumWorkingSetSize con pico MaximumWorkingSetSize que muestra el funcionamiento de este proceso se establecen, por supuesto, del conjunto de trabajo de tamaño, para permitir que el conjunto de trabajo máximo y mínimo. Monitor de rendimiento (perfmon.msc) y el Administrador de tareas (taskmgr.exe) se pueden visualizar en el proceso de seguimiento de datos. Win32 API GetProcessWorkingSetSize (Ex) y SetProcessWorkingSetSize (Ex) y capaz de obtener o establecer MinimumWorkingSetSize MaximumWorkingSetSize similares y tener un respectivo PROCESS_QUERY_INFORMATION PROCESS_SET_QUOTA después de la autorización.

en el proceso de establecer el conjunto de trabajo proceso es siempre vacío, CreateProcess, que son la responsabilidad del proceso de inicialización del conjunto de trabajo en el proceso de proceso de construcción. Se asigna una página física, y luego llamar proceso de inicialización MiInitializeWorkingSetList conjunto de trabajo. Este último acaba de crear EPROCESS como parámetro de la estructura de inicialización MMSUPPORT hemos mencionado anteriormente. Para ser mencionado aquí es un miembro muy importante VmWorkingSetList (estructura MMWSL), definido como sigue:

+ 0x000 Cupo: Uint4B
+ 0x004 FirstFree: Uint4B
+ 0x008 FirstDynamic: Uint4B
+ 0x00c lastEntry: Uint4B
+ 0x010 NextSlot: Uint4B
+ 0x014 Wsle: Ptr32 _MMWSLE
+ 0x018 LastInitializedWsle: Uint4B
+ 0x01c NonDirectCount: Uint4B
+ 0x020 HashTable: Ptr32 _MMWSLE_HASH
+ 0x024 HashTableSize: Uint4B
+ 0x028 NumberOfCommittedPageTables: Uint4B
+ 0x02c HashTableStart:
Void Ptr32 + 0x030 HighestPermittedHashAddress: Ptr32
Void + 0x034 NumberOfImageWaiters: Uint4B
+ 0x038 VadBitMapHint: Uint4B
+ 0x03c UsedPageTableEntries: [768] Uint2B
+ 0x63c CommittedPageTables: [24] Uint4B

consideraciones de eficiencia, Windows 2000 /XP son para mapear la estructura a una dirección de memoria virtual fijo. Designado por el núcleo MmWorkingSetList variables, de hecho MiInitializeWorkingSetList es una referencia directa a la variable de miembros VmWorkingSetList MMSUPPORT estructuras operan. MmWorkingSetList situado en la zona central (en Windows XP Build 2600 Professional para 0xc0503000), por lo general el área de la base son compartidos por todos los procesos, pero al parecer MmWorkingSetList WorkingSet especifica las circunstancias de cada proceso tiene un mapeo diferente, es decir, con un contenido diferente, este proceso directorio de páginas o tablas de páginas. El último que he hecho pruebas detalladas en "La discusión de Windows mecanismo de paginación NT /2000" en el.

WorkingSet porque el proceso es un proceso utilizado para describir el uso de la memoria física, en otras palabras se encuentran páginas WorkingSet en la memoria física (no a pagefile.sys medio se sustituye), no se accede a las páginas que dará lugar a error de página. Podemos utilizar páginas VirtualLock en el conjunto de trabajo del proceso. Ronda, el sistema sabe cómo existe una página (usando una dirección de página virtual) para este proceso en el trabajo se centró en él? Un rápido vistazo a las definiciones MMWSL dado anteriormente, ya sabes Windows 2000 /XP utilizando una tabla hash (tabla hash) para organizar esas páginas. funciones de recuperación rápida HashTable, justo para funciones de acceso frecuente WorkingSet. Otro ejemplo es la organización del núcleo del sistema de nombres global, consulte "análisis de Windows NT /2000 kernel objetos organización". Y WinDbg proporcionar volcado mundial! Objeto objetos del núcleo de comando, como, WinDbg oferta! Wsle para el proceso de volcado conjunto de trabajo. Por ejemplo:

kd > wsle 7

conjunto de trabajo @ c0503000
FirstFree :! 469 FirstDynamic: 7
LastEntry 46c NextSlot: 4 LastInitialized 658
no directa 145 HashTable: c06f4000 HashTableSize: 400

la lectura de los datos WSLE ... ..

virtual Dirección Edad Bloqueado ReferenceCount
c0300203 0 1 1
c0301203 0 1 1
c0502203 0 1 1
c0503203 0 1 1
c0504203 0 1 1
c06f4203 0 1 1
c06f5203 0 1 1
c0505203 0 1 1
c0506203 0 1 1
77c47029 0 0 1 < BR>.
.
.

Copyright © Conocimiento de Windows All Rights Reserved