Por Jose Manuel Tella Llop, extraído de microsoft.public.es.windows98
Muchas veces se ha hablado de los "recursos" de Windows,y de las 3 pilas me mide el "medidor de recursos" de Windows. Voy a intenar explicar cada pila, y su funcionamiento, pero es un poco dificil no utilizar muchos tecnicismos en estos caso. O sea que si me paso..... pues disculparme. Existen por diseño de win 95 / 98 (no en el NT), heredado desde Windows 3.1 tres pilas (montnones, o "heap") limitadas a 64 Kbs cada una. Son el GDI, User y Kernel (system). Es estas pilas se guardan manjadores ("handles"). Cada manejador es un "descriptor" en Windows. Por decirlo de alguna manera, un "apuntador", es decir ocupa muy poquito espacio y solo es un apuntador a un objeto de memoria. GDI Graphics Device Interface, o interfaz de dispositivo gráfico, (que para algo hablamos en Español). El modulo GDI (es un programa de windows), se encarga de exportar (y podemos utilizarlas), las funciones que permiten pintar, dibujar, trazar, imprimir y gestionar el color. Este programa almacana los elementos (mejor dicho los "descriptores" o "handles" de los elementos que componen los objetos graficos tales como pinceles, lapices, y regiones en su propia memoria local que dispone de un maximo de 64 Kb. La informacion necesaria para los objetos GDI de mayor tamaño, como por ejemplo matrices de puntos. iconos y cursores se almacenan *normalmente* en la memoria global que no tiene estas limitaciones de tamaño. Generalmente esta pila no presenta problemas, ya que la vida media de los objetos graficos tiende a ser muy corta. USER El modulo USER controla todo aquello que Windows tiene que ver con la creación de ventanas, comunicaciones, hardware y mensajes. Tanto USER como GDI, emplean su memoria local (64 Kbs) para almacenar todas las clases de ventanas y sus datos, dejando a los menus en un segmento separado. El limite de memoria se hace notar mas en User que en GDI ya que la vida de una ventana, tiende a ser bastante mas larga. Un escenario de pesadilla podría consistir en tres aplicaciones del tipo MDI (Multiple Document Interface) orientadas a ventana con graficos (por ejemplo, una gestion de red, control de fabricacion y contabilidad). Si cada aplicacion crea facilmente un minimo de 300 ventanas (aunque solo "veamos" una, es necesario en programacion estas creaciones para guardar datos), tenderá rapidamente a bloquear al PC. En programacion, se dispone de un procedimiento para evitar estas limitaciones de Windows (pero estamos suponiendo, que los programadores son buenos, -como en la mili, el valor, se le supone-). Dicha solucion en programacion pasa por crear solamente una ventana por clase y mover y actualizar dinamicamente las ventanas a medida que el usuario se desplaza y opera sobre las distintas ventanas y cuadros de dialogo de la aplicacion. (joder que rollo acabo de soltar!!!). KERNEL Las funciones de Windows que se dedican a la gestion de memoria, multitarea y recursos se encuentran en el modulo Kernel. Este modulo es el que exporta funciones para la gestion de cadenas, recursosr y los selectores que se utilizan para acceder directamente a posiciones fisicas del primer megabyte de memoria. *** Bueno, y ¿las definiciones tecnicas anteriores han servido para algo?. Pues creo que lo que debemos sacar en limpio, es que los programas han de ser muy cuidadosos con la creacion / destruccion de objetos en memoria. Fijemonos que Windows no libera ni toca estas pilas de memoria. Por tanto si al programador de turno, que está creando objetos, al finalizar el programa se le "olvida" liberar estos objetos, entonces quedarán para siempre en Windows (hasta que reiniciemos). Pensemos tambien, que no siempre las aplicaciones tienen que liberar. Una aplicaion de Office (Word por ejemplo), la primera vez que se carga en memoria, aloca (perdón "asigna", este palabreja es una derivacion del spanglih que tenemos en programacion y que viene del verbo "alloc" asignar en inglés) deciamos, aloca una serie de objetos que a "proposito" no libera. ¿Para qué?, pues fácil, está suponiendo que esta aplicacion la vamos a utilizar muchas veces, y entonces las siguientes veces al cargarse tardará menos tiempo. La filosofia anterior es peligrosa..... si todo el mundo lo hiciese, el sistema se iría a la mierda enseguida..... Y la conclusion: entre algunos programas que lo hacen a proposito y otros que han tenido programadores "despistados", nuestro Windows,pende de un hilo..... (cada vez mas solido, pero......) ** Y os dejo ya de aburrir....(por hoy, porque volveré a la carga).
Volver a
Artículos y FAQs
|