Windows NT, los recursos del sistema GDI por ejemplo, cómo se gestionan los recursos?

  

# 11 Casa Resultado: 0 vuelta en: 2006-04-29 08:37:18

¿Por qué recursos GDI se quedará sin ella, ¿en qué medida el desempeño de ejecutar fuera de él? Los datos de entrenamiento de recuperación Para responder a esta pregunta, se observó después del uso del Administrador de tareas de Windows encontró que cuando se inició el programa confundir interfaz, objetos GDI del proceso es 9999, ¿por qué objeto GDI llega a 9999 después de sólo ocurren interfaz confusa, con esta pregunta, he encontrado algo de información, aprendí la simple gestión de objeto GDI de Windows. software de oficina fallo GDI objetos, de hecho, parte de la estructura de datos de mantenimiento del sistema de Windows. Microsoft basado en las consideraciones de estabilidad y robustez, la gestión de todos los objetos GDI se entregó a la gestión de Windows gestor de objetos del sistema, los usuarios pueden manipular estos objetos a través del sistema devuelve un "mango". En fallo de la tarjeta de gráficos de Windows 2000, el mango es en realidad un tipo de valor DWORD. El valor DWORD es un dato de 32 bits, que se divide en dos partes: índice de la tabla de identificadores y unicidad, cada uno de ellos utilizan 16 bits, y por lo tanto, en teoría, cada proceso en Windows, puede acceder a GDI el valor máximo del objeto es de 64 KB. Sin embargo, en Windows 2000, el número máximo de clientes manejar es difícil de 16384 (16K); sin embargo, en Windows 2000, tanto el número máximo de clientes que manejan es difícil de 16384, entonces ¿por qué los aumentos de objetos GDI práctica después de 9999, la interfaz del programa para iniciar el caos de la misma? Resultó que en Windows 2000, el valor máximo de objetos GDI por proceso ha sido el defecto es 10000-- Según las estadísticas de Microsoft, el motivo expuesto a 10000, con el fin de impedir que el programa "malo" asigna demasiados recursos, por lo que cuando los objetos GDI después de 9999, el programa ya no puede crear un nuevo recursos GDI de manera que, cada vez con nuevos recursos para sacar el programa de interfaz genera confusión. Sin embargo, en Windows 2000 y versiones posteriores Caozuojitong, el valor máximo de cada proceso objetos GDI que se pueden crear, se puede restablecer mediante la modificación del registro de Windows 2000, la clave de registro que es: HKEY_LOCAL_MACHINE \\ SOFTWARE \\ bajo Microsoft \\ Windows NT \\ CurrentVersion \\ Windows es " GDIProcessHandleQuota ". Después de establecer un nuevo valor, reinicie el equipo, el número de objetos GDI en el sistema se puede utilizar en cada proceso se convertirá en el nuevo número que se defina. Sin embargo, la afirmación anterior no es del todo correcto! De acuerdo con SYBASE de una pantalla de información (? Id = 1019174), en Windwos2000, sólo se puede "GDIProcessHandleQuota" ajustar el valor, si el valor de más de 15.000, el sistema se vuelve inestable. De hecho, he realizado una prueba en Windows 2000, cuando el valor de retorno es la función 12288 (12K) GetGuiResources, no se puede crear un nuevo objetos GDI, y es que, en el proceso en 2000, cuando un total de objetos GDI de Windows después de que la cuenta llega a 12.288, no se puede crear un nuevo objetos GDI. Por lo tanto, el número de objetos GDI en Windows 2000, un proceso que puede ser creado, cada proceso es independiente de, o estar limitado a Windows Caozuojitong ella? Con este fin, escribí un programa de verificación de ese lote crear un número determinado de objetos cepillo y estadísticas del número total de objetos GDI objetos GDI conteo y sistema de la presente proceso en su interfaz de funcionamiento es el siguiente (figura no muestra aquí, pero no tiene nada que ver crítico) en el que el sistema de código de estadísticas objetos totales GDI son como sigue: int GetGDINumInSystem (void) {int nGDINums = 0; /* objetos GDI de todos los procesos y * /int nProcess = 0; /* número de procesos en el sistema * /DWORD aProID [1024]; DWORD cbNeeded; :: EnumProcesses (aProID, sizeof (aProID), &cbNeeded); /* número total de procesos en el sistema * /nProcess = cbNeeded /sizeof (DWORD); /* estadísticas para cada proceso de GDI El número de objetos * /for (int i = 0; I < nProcess; i ++) {MANGO hPro = :: OpenProcess (PROCESS_QUERY_INFORMATION |    PROCESS_VM_READ, FALSO, aProID [i]); nGDINums + = :: GetGuiResources (hPro, GR_GDIOBJECTS); CloseHandle (hPro);} nGDINums retorno;} Con este procedimiento de verificación, prueba de la siguiente manera: ① modificar la entrada del registro de Windows 2000 " GDIProcessHandleQuota "es 12000; ② abrir un proceso de registro, en el que la creación de 11.000 objetos GDI! ③ abrir un segundo proceso de registro (el primer proceso no se cierra), en el que crear 11.000 objetos GDI. Los resultados muestran que el objeto de la primera proceso puede ser creado con éxito, y el objeto del segundo proceso no se pueden crear con éxito, lo que demuestra que en el año 2000, el número de objetos GDI para cada proceso puede crear ventanas, no sólo en los procesos internos ciertas restricciones, que también limitadas por todo el Caozuoxitong. Después de numerosos experimentos muestran que cuando el número total de objetos GDI del sistema de Windows 2000 alcanza un cierto valor después de 15900, el proceso ya no puede crear objetos GDI, el sistema se vuelve inestable, ya que el valor de umbral al final es la cantidad, los resultados de las pruebas no son consistentes cada vez, pero en el futuro 15900. El ensayo anterior se lleva a cabo en Windows 2000 y, a continuación, en Windows 2003, la situación es como? Hazlo ahora, y los sistemas de 2003, modificar la clave de registro "GDIProcessHandleQuota" a 20000, y luego ejecutar el programa de pruebas en el que se creará 20.000 objetos GDI, todo es normal! Otro cambio, 30000, correr, siendo normal; ...... hasta que el tiempo cambió a 70000, el sistema aparecerá para dibujar el problema de interfaz, de hecho, tienen que hacer suposiciones: ¿Es cliente de Windows 2003 canceló la GDI manejar hasta 16 K las restricciones, lo que limitará el conjunto de 64K? Para probar esta conjetura, he creado usando directamente la comprobación de recursos GDI programa de 64K, los resultados muestran, cuando el proceso crea una cierta cantidad de objetos GDI, no se puede crear un nuevo objeto GDI, lo que indica que la especulación por encima embargo, no es del todo correcto, basa en la experiencia de prueba en Windows 2000, y pronto se pensó en objetos GDI en el sistema Windows 2003 que se puede crear también debe limitarse a Caozuojitong, es decir: Windows 2003 relajado cada proceso puede crear objetos GDI el número, pero todo el sistema, el número de objetos GDI no pueden exceder de un cierto valor. Para verificar este resultado, hacer la siguiente prueba: ① modificar las claves del registro de Windows 2003 "GDIProcessHandleQuota" es 50000; ② abrir un proceso de registro, en el que la creación de 40.000 objetos GDI! ③ abrir un segundo proceso de registro (el primer proceso no se cierra), en el que crear 40.000 objetos GDI. Los resultados del ensayo son básicamente el resultado de Windows 2000 y similares, la única diferencia es que el proceso de creación de objetos GDI en el segundo proceso, cuando el sistema alcanza un cierto valor de los objetos totales de GDI será creado después de 63.700 fracaso. Del mismo modo, el umbral no es fija, pero las pruebas repetidas mostraron que cuando después del número total de objetos GDI alcanzó 63700, el sistema se vuelve inestable. Conclusión Después del análisis anterior, podemos saber que en Windows 2000/2003 Caozuoxitong en, objetos GDI que se pueden crear para cada proceso, limitado por tres factores: el propio sistema tanto las limitaciones como la configuración del registro de Windows el límite máximo. En primer lugar, el número de objetos GDI que se pueden crear para cada proceso, en teoría, para el 64K, pero en Windows 2000, el sistema se encargará de que el cliente puede crear una serie de GDI duro para no exceder de 16K, cuando en realidad el número de objetos GDI alcanzó 12K, el sistema que no es normal; en Windows 2003, el sistema restricciones relajado en el número de objetos GDI, de manera que cada proceso el número de objetos GDI que se puede utilizar casi 64K; en segundo lugar, el número de objetos GDI que se pueden crear para cada proceso, también operación limitada el número total de sistema GDI objetos; en Windows 2000, cuando el total objetos GDI en el sistema alcanza un cierto valor después de 15 900, el proceso ya no puede crear un nuevo objeto GDI; en 20.003, este valor se incrementa después de un 63700 los valores. Pero, al final es lo que el valor no es fijo. Por último, el número máximo de objetos GDI creados en el proceso también puede ser limitada por Registro de Microsoft en HKEY_LOCAL_MACHINE \\ SOFTWARE \\ \\ Windows NT \\ CurrentVersion \\ Windows es " valor del conjunto de elementos que se establece para cada uno de Windows; GDIProcessHandleQuota " el número máximo de objetos GDI que pueden ser creados en proceso de sistemas Windows 2000 y 2003, que son el valor predeterminado 10000, que también muestra el número de objetos GDI cuando se creó el programa para lograr la interfaz 9999 ¿por qué meterse.


Copyright © Conocimiento de Windows All Rights Reserved