|
Memoria máxima bajo Windows |
|
|
|
Por Jose Manuel Tella Llop, extraído de microsoft.public.es.windows98
MAXIMA MEMORIA BAJO WINDOWS ---------------------------- Este articulillo va dirijido a aquellos que desean la "maxima" memoria, e incluso memoria superior en las ventanas DOS bajo Windows. Es conveniente haberse leido los articulos mios anteriores sobre la memoria MSDOS para entender perfectamente este articulo. RECORDANDO ---------- Recordando los dos articulos mios anteriores, ya sabemos como conseguir memoria "estendida" (HIMEM.SYS), "expandida" y marco de pagina (EMM386.EXE), y por tando y con las directrices DOS=UMB,HIGH poder utilizar el maximo de memoria en DOS. Pero... curiosamente cuando entramos en Windows y damos el comando mem /d/p vemos que no tenemos memoria "alta" (UMBs) disponibles. Recordemos un poco el mama de memoria "fisica" del msdos. Hasta la dirección 'A000' de memoria son los primeros 640 Ks. Mejor graficamente: 0000 ..... 9FFF 640 Ks A000 Memoria grafica de video -64 Ks- marco de mapeo al video B000 Memoria para pantallas de texto (monocromo) -32 Ks- B800 Memoria para pantallas de texto (color) -32 Ks- C000 ROM BIOS de la tarjeta de video -32 Ks- C800 LIBRE ¿? -96 Ks- !!!!!! E000 Marco de pagina memoria EMS (si tenemos EMM386) F000 ROM BIOS de la placa madre FFFF 64 Ks más donde el dos carga parte de él (DOS=HIGH) Bien lo anterior es una configuracion estandard con EMM386 y memoria EMS y la instruccion DOS=HIGH,UMB (sino se ha entendido hasta aquí, por favor repasar los articulos anteriores). Matizo que es una configuracion "standard". Es decir, si no tenemos otras tarjetas (SCSI, de red, etc...) que tengan ROM BIOS. Si tuviesemos esas tarjetas, la dirección libre en vez de empezar en C800, empezaria mas tarde y tendriamos menos espacio libre. Ya veremos como puede saberse esto. Además, en le EMM386, podemos incluirle la linea I=B000-B7FF para poder utilizar la memoria de los antiguos adaptadores graficos monocromos (otros 32 Kbs). **** ATENCION: esto unicamente sino utilizamos "multimonitor". Si lo utilizasemos, NO SE PUEDE recuperar dicha memoria. Entonces en una configuracion normal, tendriamos: 96 Ks + 32 Ks = 128 Ks libre por la zona alta. Y ahora la pregunta ¿como utilizarlos? UTILIZACION DE MEMORIA SUPERIOR ------------------------------- Bien, la primera parte sencilla. Si a continuacion de la linea del config que carga el EMM386.EXE, ya colocamos las instrucciones "devicehigh" (en vez de device) y en el autoexec, cargamos los programas con "lh" (loadhigh) por delante de ellos, entonces estos programas se cargarán en memoria UMB, igualmente, el propio MSDOS, en cuanto puede, "mete" allí su zona de buffers, files, etc...... (por eso, realmente no "vemos" los 128 Ks libre nunca, porque el propio MSDOS, aunque no hayamos cargado nada, en cuanto se encuentre DOS=UMB, ya carga allí lo que puede). Pero.... muy bien, ahora ya hemos terminado de cargar el DOS y empieza Windows a cargarse. Si arrancamos en "solo símbolo del sistema" veremos con un mem /d/p la memoria superior que tenemos "antes" de entrar Windows. Y además la memoria libre que tenemos bajo MSDOS (recordad, que no haría falta nada más que : en el config, las lineas devicehigh= display.sys.... y el Country. Y en el autoexec, las dos lineas mode *no hay que ponerlas "lh" a estas. Y la linea keybsp con "lh". Con esto es suficiente para Windows. El resto de cosas, como ya hablaremos mas adelante: NO HACEN FALTA, se pueden quitar y ya veriamos como podemos recargarlas si hiciesen falta a posteriori para entrar en modo MSDOS) Retomando lo anterior, sabemos la memoria libre, pero cuando entramos en Windows y damos el mismo comando, vemos que en la zona alta de memoria no nos queda nada....¿? RECUPERACION DE LA MEMORIA ALTA BAJO WINDOWS -------------------------------------------- La memoria anterior se puede recuperar. Unicamente debemos añadir en la seccion [386enh] del System.ini (que está en el directorio de windows), la linea: LocalLoadHigh=On Y reiniciar. Puede..... que el sistema no nos arranque, enviando un mensaje de "imposible, o error al cargar el DOSMRG. Programa detenido". En este caso, podemos hacer dos cosas: 1) Eliminar la linea anterior y resignarnos a no tener memoria superior. 2) Mas elegante: buscar al culpable y reordenar la carga. El posible culpable es que Windows,necesita "al menos" 4 Kbs en cada region de memoria superior (UMB). Pensemos que en la configuracion de memoria descrita anteriormente, tenemos dos regiones (de B000-B7FF y C800-DFFF). Antes de entrar a Windows,debemos "ver" en MSDOS puro al menos 4 Ks libres en cada una de ellas. El punto 2) es muy sencillo en la configuracion que he descrito antes. Pero en maquinas con varias ROM BIOS (scsi, red, etc...) puede ser un poquillo mas complicado, y a veces, por ejemplo, no cargar el keyb en alta a proposito, para dejar esos 4 Ks. O bien cargarlo (forzado) en otra region. Este ultimo tema, lo dejo para un articulo mas profundo sobre el tema. *** Me queda pendente: (que intentaré poner esta tarde en este mismo hilo), el hacerme un programita en ensamblador y enviarosle, que os informe de las ROM BIOS de la maquina vuestra, donde empiezan y cuanto ocupan. Con la informacion de ese programa, puedo realizar configuraciones "a medida" para cualquiera de vosotros que lo necesite.
Volver a
Artículos y FAQs
|