You are on page 1of 127

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........

Jos manuel Tella Llop

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA..... Bueno.... esto puede ser un tema inmenso y voy a intentar escribirlo. Con esto quiero decir que esto promete ser una "saga" que ir escribiendo poco a poco y que intentar que no se haga "pesada" y por tanto intentar no entrar en detalles tcnicos. Por ello, ruego a los "tcnicos" que me concedan la licencia de intentar expresarlo de la manera mas sencilla, y con ejemplos que no "son" del todo verdad tcnicamente, pero que se aproximan a lo que queremos explicar. INTRODUCCION Antes de ponernos en tarea, meditemos un poco sobre nuestros hijos, por ejemplo (quien los tenga). Nuestro hijo, no ser quiz el mejor, el mas guapo, el mas listo y el mas atltico de su clase. Pero s nuestro hijo y lo conocemos perfectamente. Sabemos de que pi cojea y sabemos como podemos orientarlo... Bien, nuestro PC debe ser algo similar (salvando las distancias). No tiene porqu ser el mejor del mercado, pero es "nuestro" PC, y por tanto, debemos conocerlo, y sabremos como "manejarlo" antes situaciones extraas. Debemos perderlo el miedo. Conocer todo sobre l. No hace falta ser un tcnico (no hace falta ser un medico para saber sobre la salud de nuestro hijo), simplemente unos conocimientos superficiales y perderle el miedo.... PULSAMOS EL BOTON DE ENCENDIDO Y..... Acabamos de pulsar el botn de encendido. y que pasa?.. bien, nada mas encender el ordenador, se empieza a ejecutar un programa que est grabado internamente en nuestro PC. La maquina lo que hace es ir a una determinada posicin de la memoria, y lo que est all se lo da directamente al procesador para que empiece a ejecutarlo. Por tanto, nuestra "memoria" del PC, no est tan vaca como parece.... algo debe contener. Este algo es un programa que reside en un chip de memoria llamado BIOS ROM y que al encender el PC, ocupa un posicin FIJA de memoria en cualquier PC. Siempre la misma. BIOS Antes lo hemos descrito como un programa. Realmente es un programa y adems es el nico programa que conoce exactamente (o debe conocer) las tripas de nuestro PC. Debemos pensar que realmente en el mundo, hay bastantes fabricantes de placas madre. Y muy pocos fabricantes de BIOS. Los fabricantes de BIOS (Award, AMI, Phoenix, etc.) lo que tienen son unos modelos de bios semi-estandard (por ejemplo la versin 4.51 PG de Award) y lo que hacen, bajo pedido del fabricante de la placa madre, es adaptar "su" estndar de bios, a "esa" placa madre. Por tanto, fijmonos que la versin 4.51 PG de Award, se ejecuta en muchas maquinas totalmente diferentes, y resulta que la bios es totalmente diferente. Es especifica para "esa" placa madre (y de cara al exterior, lo que pasa es que cumple la funcionalidad de la 4.51 PG - que ser una norma interna fijada por el fabricante de la bios -). Por eso, y por ser un programa, cuando hablamos de "actualizar" la bios, podemos efectivamente "sustituirlo" por una versin superior. Pero, para ello, debemos buscar la "versin" de la bios 4.51 PG de Award para "nuestra" placa madre. Y nicamente, podremos buscarlo en el web del fabricante de "nuestra" placa madre. S el fabricante es una marca "puntera" se preocupar de pedir

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

a Award revisiones y mejoras de sus bios. Si es una marcar "cutre", pues probablemente la placa madre "muera" con la misma revisin de la bios que tenamos al adquirirla. Y ahora una pregunta por qu se llama ROM? ROM quiere decir "Real Only Memory", es decir "Memoria de Solo Lectura", y si es de solo lectura cmo podemos actualizar la bios?. Bueno,.... en un principio, las ROM eran de solo lectura. Actualmente el termino ROM es un poco mas amplio: se entiende por ROM aquella memoria que cuando se apaga de la corriente, no tiene perdida de datos, y por tanto es susceptible adems de ser actualizable (memorias de tipo EPROM). Por tanto con un programa especifico podremos actualizarlo. Esto tiene un problema: s existen programas capaces de actualizarla, no podrn existir virus que sean capaces de borrarla?.... Pues por desgracia: si. Y tiene muy malas soluciones el tema. Pensemos que si nuestra bios est daada, bien por un virus, o bien porque hemos intentado actualizarla y se ha ido la corriente en ese momento, o bien porque nos hemos equivocado y hemos bajado del web un archivo de actualizacin que no es para nuestro "exacto" modelo de placa madre... en ese caso, nuestro ordenador no volver a la vida. Es ms, ni se iluminar la pantalla, ni har intento de arrancar de disco o desde disquete. Nada: muerto. Las BIOS son configurables. Es decir podemos entrar en una serie de pantallas al iniciar el ordenador para poner o quitar algunos parmetros que puede hacer que nuestra maquina responda mejor ante un determinado hardware, o determinado sistema operativo. En muchas de las BIOS, podemos entrar justo nada mas encender el ordenador, pulsando la tecla "DEL" (borrar) o la tecla "ESC". Otras bios pueden requerir otra combinacin de teclas. CONFIGURACION DE LA BIOS Siempre es aconsejable, nada mas adquirir un ordenador, el entrar en la BIOS y apuntarnos TODO lo que tienen las pantallas de definicin. En ciertas maquinas (y adems, con ciertas impresoras), la tecla "Imprimir Pantalla" funciona. Pero no suele ser lo habitual, por lo que nos tendremos que armar de paciencia, bolgrafo y papel, y a escribir.... Esto puede que nos saque de algn apuro alguna vez. En principio, no se debe andar toqueteando en la bios, pero es conveniente intentar dejarla lo mas acorde con las necesidades de nuestro sistema operativo. Hay que recordar que el MSDOS y todas las versiones de Windows (excepto el NT), se apoyan "excesivamente" en la bios. Recordemos los parmetros que podemos tocar (sin apenas riesgo) y adems que es conveniente tocarlos: Puerto paralelo: se debe intentar definir (pongo las opciones de "mejor" a "peor") ECP+EPP (con DMA 3) ECP (con DMA 3) EPP SPP

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Esto no quiere decir que sea lo mejor para nuestro sistema. Depender de que dispositivos tengamos en el puerto paralelo. Existen impresoras (pocas) que nicamente funcionan e modo EPP puro (no sirve ECP+EPP), y existen algunos scanner que tambin les sucede lo mismo. Es solo cuestin de probar cual se adapta mejor a nuestro sistema. Pero para ser un poco ordenados por qu no probar por el orden que he dado antes? Pantalla PnP: Bien, esto puede ser un mundo. En principio, muchas BIOS preguntan como primera opcin: PnP OS (Operating System) : YES | NO Pues aunque parezca mentira, mi consejo es poner NO. (al menos con win98 en Espaol. Con Win98 en Ingls da igual lo que pongamos, pero el Espaol, tiene un "bug" en este sentido. Bug que no aparece en "todas" las placas madre, pero s en un numero alto de ellas, y sobre todo si tenemos dispositivos PnP ISA - mas adelante hablaremos de ello-) Y luego, en esta pantalla, casi todas las bios, nos permiten poner IRQ por IRQ, si en PnP, o PCI, o Legacy ISA o simplemente ISA. Estas opciones depeneden de cada bios. En principio no tocarlo, y posteriormente cuando veamos los "BUSES" y posibles conflictos de dispositivos, veremos para que pueden servir. Pantalla APM (o Power Management). Importantisimo: aqu tenemos que poner Power Management: "Enabled" y posteriormente todos los timer (contadores de tiempo) para los distintos modos (suspender -suspend-, dormir -sleep-, etc...), dejarlos a "cero" o "disabled". De esta manera, windows podr establecer sus propios contadores y no entrar en posible conflicto con la bios. Igualmente, hay ciertas bios que en dicha pantalla pregunta por ACPI (enabled/disabled). ACPI es una caracterstica de control "avanzado" del sistema. Mi consejo, si vuestra lo bios lo pregunta es que pongis activo "siempre" el modo ACPI. Mas adelante hablaremos tambin de l, en la instalacin del sistema operativo. ** Con esto, ya hemos realizado una tarea "importante". La tarea, fijaros que no es configurar la bios como he comentado antes. Sino ESCRIBIR como est la bios por defecto (al adquirir nuestro PC) y que se supone, que mejor o pero, nuestro sistema operativo, al menos funciona. Antes de ver que hace el programa de la bios hasta arrancar nuestro sistema operativo, debemos conocer un poco de hardware. Que nos suenen un poco los temas..... QUINCALLERIA (HARDWARE) Bueno, al menos, ya nos suenan tres cosas: CPU, memoria (por la "pasta" que tenemos que pagar por ella, aunque no est muy clara su funcin todava) y BIOS. Pero que mas hay en la placa madre? Vamos a enumerar un poco, como si realmente existiesen estos componentes por separado. Digo como si existiesen porque actualmente dichos componentes, la mayora estn "embebidos" en algn chip multifuncion de la placa madre. Pero existir: existen. Enumeremos un poco:
3

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

1) BUSES : PCI, ISA, AGP 2) Controlador de disco duro 3) Puertos: serie, paralelo 4) BUS USB Y ahora algunos "chips" importantes: 1) Controlador Programable de interrupciones (IRQ) 2) Chip de DMA. Y luego otra serie de "cosas" de las que hemos odo hablar: puertos, IRQs, etc..... ** Empecemos un poco con el concepto de un: DISPOSITIVOS Vamos a definir los "dispositivos" como el resto del hardware independiente de la CPU y memoria con los que la CPU interactua. Hagamos un poco de historia. El PC actual que conocemos, aunque parezca mentira, es bsicamente el mismo que surgi en el ao 82. Su arquitectura es la misma y lo nico que ha ido evolucionando han sido los "perifricos" o dispositivos. Algunos de ellos, actualmente, se incorporan ya en la placa base (controladores de disco, disquete, puertos serie y paralelo, por poner un ejemplo). Y otra evolucin evidente han sido las CPU, pero recordemos, que por suerte o por desgracia han tenido que mantener su compatibilidad descendente y por tanto, su juego bsico de instrucciones es el del antiguo 8086. Vemos a empezar por la CPU y memoria y luego veremos con detalle el resto de "perifricos". Recordemos que no nos queda ms remedio que ceirnos a la historia. Al ao 82. CPU La primera CPU con una arquitectura de 16 bits que triunf en el mercado (que conste que no era la nica arquitectura existente en sus aos), fue el 8086 de Intel. Su triunfo, al igual que el del Windows actual, fue una decisin de un gigante del hardware: IBM, y un montn de suerte de una persona que empezaba en aquel momento: Billy Gates. Hagamos historia. IBM hasta ese momento estaba dedicado a los grandes ordenadores (mainframes) y bajo el supuesto de que empezaba a surgir un mercado potencial (la microinformatica) decidi empezar a dedicarse a este mercado. Para ello encarg a Intel el diseo (mejor dicho, la mejora de un antiguo 8008 - equivalente a un Z80) de un procesador de 16 bits. Y abri publica subasta (por decirlo de alguna manera), sobre un futuro sistema operativo para dicha arquitectura. El propio IBM defini las caractersticas bsicas de las placas madre: el bus PC que rpidamente evolucion al bus AT, y que por desgracia todava seguimos sufriendo.

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Con respecto al software, en aquellos aos existan unos sistemas operativos serios para los ordenadores de 8 bits que empezaban a surgir. Decimos sistemas operativos "serios" porque realmente lo eran para su poca. Estamos hablando del CPM cuya propiedad intelectual era de Digital. En la propia Digital, una vez abierta la "subasta" (y la apuesta) por parte de IBM para el futuro sistema operativo de 16 bits, empezaron a desarrollarse dos proyectos: el CPM 86 (o "concurrent" CPM) y un sistema basado en DOS. En las fases finales del desarrollo, Digital "apost" por el CCPM (o CMP 86, o Concurrent CPM, como queramos llamarlo), y abandon el proyecto basado en el DOS. Pero Digital era (y sigue siendo) una Empresa "curiosa" con sus ingenieros de Software. El ingeniero de Software tiene la "patente" de lo que desarrolle dentro de la Empresa (esta caracterstica la hace nica en el mundo del software), y una vez implementado un producto de ingeniera, el equipo, o la persona que lo ha desarrollado percibe "royaltis" por cada venta, al igual que la propia empresa. Y si esta persona se va de la Empresa, se va con su "patente" o su "parte de la patente" o sus derechos, y sobre todo si el producto ha sido desechado por la propia empresa se lleva completamente "su" desarrollo y "su" propiedad intelectual. Y este fue el caso. El ingeniero de Digital encargado del proyecto DOS se fue (o bien "cabreado", o bien por una oferta que le hizo nuestro avispado Gates). Y nuestro avispado Gates, hizo una carrera contra-reloj para tener finalizado su primer MsDOS (versin 1.0) seis meses antes de que Digital finalizase su CCPM. IBM tenia prisa por sacar el producto al mercado. Y form alianza con la incipiente Microsoft para empezar a implementar el MsDOS (PCDOS) en sus ordenadores. Fue una decisin acertada?. Personalmente creo que no. Pensemos que el incipiente CCPM ya era capaz de soportar multitarea (hasta 4 tareas) en modo consola (no exista todava interfaz grfica) Por cierto, todava lo tengo y funciona!!!-. Fue una triple decisin de IBM, que nos condiciona hasta el momento actual: 1. Se defini una arquitectura (bus PC que evolucion inmediatamente hasta el bus AT. Este bus AT bsicamente se sigue conservando en nuestros actuales PCs y condiciona un montn de cosas que iremos viendo en estos captulos) 2. Se defini un procesador: arquitectura X86 (el 8086) 3. Se defini un Sistema Operativo (por llamarlo "algo"...), el PC-DOS 1.0 Y de all surge la todava frase hecha: "ordenador COMPATIBLE". Pero compatible con que? pues compatible IBM. Con los aos se ha perdido la palabra IBM. Y surge la frase CPU compatible. con qu? pues con la arquitectura X86 de Intel. ** Bien, repasemos un poco dicha CPU. Como todas las CPUs tiene un montn de "patitas", ests se agrupan lgicamente en las siguientes funcionalidades: a. "patitas" de DATOS
5

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

b. de DIRECCIONES c. de CONTROL Es decir, los buses que salen directamente de la CPU, son de "datos" de "direcciones" y de "control". Para escribir un dato en memoria, es necesario enviar el dato y "adems" enviar su direccin. Y el bus de "control", es para comunicarse con el resto "del mundo", con los perifricos, con la circuiteria externa, etc.... Esta primera CPU, tenia nicamente 20 "patitas" de direcciones. Y adems los registros generales (todas las CPUs tienen una serie de registros generales internos con los que saben hacer ciertas operaciones) eran de 16 bits. Por tanto con 16 bits en principio, solo se podan direccionar 2 elevado a la 16 direcciones. Es decir 64 Kbs de memoria. Intel, introdujo en esa CPU, el concepto de "segmentacin" (concepto por el que todava seguimos pagando "muy caro", muchas, demasiadas "malas herencias"). El concepto de "segmentacin, consiste en utilizar 2 registros generales para formar una direccin fsica. Un registro llamado "segmento" (o base) y un registro llamado "desplazamiento" (offset). Bien, recordemos que 16 bits, son realmente 16 unos y ceros puestos a continuacin. Agrupmoslos en grupos de 4 bits. Esto forma 4 grupos de 4 bits. Cada grupo de 4 bits, puede tener los valores: 0000 0 (posibles "cuartetos") 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D
6

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

1110 E 1111 F En total 16 valores. Por abreviar, podemos representar cada grupo de 4 bites, con el numero o la letra que he puesto a continuacin. Esta es la representacin hexadecimal (base 16). Recordemos que hay 4 grupos de 4 bits, es decir, puesto entonces en representacin hexadecimal un registro, puede tener el contenido 01A5 o bien 23EF, etc. Es decir desde el 0000 hasta el FFFF (en total desde el numero cero al numero 2 elevado a 16 (menos 1 del cero), es decir 65535 o lo que es lo mismo 64 Kbs. En Espaa, utilizamos la palabra "octeto" en lugar de byte por una mala traduccin del francs que fue quien implement esta palabra. Al igual, la palabra "ordenador" proviene de "ordinateur" (francs). Y la palabra "cuarteto" como la mitad de un "octeto" (byte). ** Continuemos un poco ms....... Pero como estamos limitados a 20 lineas de direcciones, tal y como comentabamos antes, se defini, que la manera de "sumar" esos dos registros fuese, poniendo uno a continuzacion del otro y desplazando el codigo de segmento un "cuarteto" (o "nible") aadiendolo un cero. Por tanto, por ejemplo: (segmento A012, offset 2312) Segmento: A0120 Offset 2312

Direccion A2432 Cinco "cuartetos" es decir 20 bits, por tanto se podian direccionar 10 elevado a 20 posiciones de memoria: todo un "mega". Imposible pensar en un mega en aquel entonces !!!! Curiosamente hay que fijarse que la manera de construir esto 20 bites, no es unica. Es deir, la misma solucion, nos podra haber dado por ejemplo: Segmento A0000 Offset 2432

Direccion A2432 (esto ya nos puede empezar a dar los problemas de que con dos direcciones de segmento diferentes, se "alcanzan" posiciones de memoria iguales. Por tanto puedo "machacar" desde una direccion de segmento, otra direccion que "teoricamente" pertenece a "otro" segmento.... malo de cara a programacion no?) A este modo de funcionamiento, es lo que ahora llamamos modo "real" del procesador y a ese mega, es lo que llamamos memoria "real" del procesador.

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Y ademas por definicion, cualquier "compatible" (y los actuales lo sn), su CPU, arranca siempre en modo REAL. Es decir, al encender un ordenador actual (PIII por ejemplo), su funcionamiento es "exactamente" igual al funcionamiento del 8086 primitivo. Pero *EXACTAMENTE* igual. Las CPUs actuales, no han sido ms que una evolucion de esta primitiva. Poco despues de nacer el 8086, surgi ya el 80286 capaz de direccionar 16 megas de memoria. Dur muy poco, ya que fu una transicin al 80386. El famoso 386 con el cual se conserva actualmente compatibilidad absoluta (excepto una y solo una nueva instruccion en el Pentium). Por tanto la arquitectura actual se la llama tambien arquitectura 386. El 386, tena (tiene) un nuevo modo de funcionamiento. El modo "protegido", ademas del modo "real" y otro modo hibrido entre ellos, que es el modo "Virtual 8086". Sepamos simplemente que por compatibilidad hacia abajo, el modo real sigue limitado al famoso "mega" inicial, y el modo protegido ya es capaz de ver toda la memoria. Igualmente recordemos que los registros generales de la CPU, pasan a ser de 32 bits. (excepto los de segmento que siguen en 16). Por tanto con una direccion de 32 bits, podemos direccionar 4 gigas de memoria (2 elevado a la 32). Por compatibilidad, la parte inferior de los 32 bits (los 16 bits inferiores) de cada registro, corresponden a los antiguos registros del 8086. Los registros generales, podian haberse numerado por ejemplo R0, R1, R2...., tal y como sucede en otras arquitecturas. Pero Intel decidi ponerles "nombre" y ademas, que en ciertas operaciones aritmeticas, fuese obligatorio realizarlos unicamente con ciertos registros y no con todos. Los nombres, fueron tambien tan "raritos" como AX, BX, CX, DX, SI, DI, SP, CS, IP, ES, SS, DS. Y estos son los unicos registros con los que se puede operar. La evolucion posterior al 80486, y Pentium unicamente trajo consigo la posibilidad de incorporar un chip matematico, el 387, que era capaz de realizar operaciones en coma flotante y de paso incorporar una pequea pero importantisima cantidad de memoria dentro del procesador: la memoria cach de primer nivel. Posteriormente en el Pentium, se incorpor el juego de instrucciones MMX. Son unas "macro" instrucciones especiales que son muy repetitivas en todo el tratamiento de graficos y video, y que al implementarlas precisamente como "instruccion" hardware, facilitaban la programacion y la "rapidez" a los programas que eran capaces de utilizarlas. No nos llevemos a engao: ningun sistema operativo las utiliza y ademas pocos, realmente pocos programas (fundamentalmente los juegos), las utilizan. El Pentium, solo se distingue de sus predecesores en que tiene una instruccion "ms". una sola: el "cpmexchg" es decir: compara dos registros y en funcion de la comparacin, los intercambia entre s. Por compatibilidad hacia abajo, "tampoco" la utilizan los sistemas operativos, ya que si no, tampoco funcionaria dicho sistema en una CPU anterior. Posterirmente surgi, el Pentium Pro, que basicamente es un pentium optimizado para ejecutar codigo "puro" de 32 bits, pero que se queda ridiculo cuando se le mete codigo de 16. Para solventar esto, naci el PII, que basicamente es un Pentium Pro mejorado para codigo de 16 bits y que ademas se le incorpora de base la tecnologia MMX.
8

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Y por ultimo estamos en el PIII. La unica diferencia es que se amplia el juego de instrucciones MMX a las llamadas MMX avanzadas. ** Internamente existen muchas diferencias para "acelerar" la CPU. En las primeras CPUs, una instruccion maquina, por ejemplo ADD AX,3 (suma 3 al registro general AX), representaba 3 ciclos de reloj. Tengamos presente que un procesador a 25 MHz (de los 386 primitivos), tena 25 millones de ciclos de reloj por segundo). Segun han ido evoluvionando, en los Pentium, esta instruccion utiliza un solo ciclo de reloj (y encima los pentium, pueden llegar ya a 500 millones de cilos de reloj por segundo), y ademas, en el pentium, en "ese" ciclo de reloj, se est utilizando tecnica de "pipeline" (como las fotocopiadoras), es decir aunque este procesando una instruccion, est preparando otra - en total hasta 5 simultaneamente. (en una fotocopiadora, mientras se est haciendo una fotocopia, el papel de la siguiente fotocopia, ya est entrando en la maquina para acelerar el proceso. Esto es la tecnica de "pipeline"). Ademas, para acelerar las CPUs, se ha incrementado su memoria cach de primer nivel, y ademas se ha creado un "predictor de saltos" optimizado. Pensemos que cada vez que un programa efectua un "salto", es decir, realiza una operacion del tipo: "S esta fecha es mayor que 80, ejecuta la rutina tal y tal...". Bien, este condicional, es un "salto" en las direcciones de memoria de programa. Cada vez que se ejecuta un salto, lo que hay en la cach de primer nivel, no sirve para nada. Es necesario vaciarla y cargarla con el nuevo codigo de programa que empieza en donde apunta dicho "salto". Por tanto, es necesario "invalidar" la cach y cargar desde la direccion que apunta el "salto" otra vez en la cach. Esto es una operacion "costosa". Solucion: y que tal, si tenemos un circuito inteligente dentro de la CPU que sea capaz de "predecir" un salto, y por tanto se vaya encargando de invalidar la cach y cargarlo con lo que ha "predicho"?. Pues genial, la unica condicion es que acierte lo mas posible. Si no, la CPU se nos viene abajo. Bueno, pues ahora, Intel tiene un juicio pendiente con la tecnologia ALPHA de Digital, por "piratear" su predictor de saltos en la arquitectura "Alpha". (Aprentemente le juicio no va a realizarse ya que Intel "ha comprado" toda la fabrica de desarrollo de los chips Alpha y su tecnologia hace unos meses.... curioso, tambien no?) Y otra cosa: fijaros que este predictor de saltos, es importantisimo. Esto es lo que realmente "acelera" una CPU (aparte de la tecnologia "pipeline"). Y la pregunta del milln: la competencia de Intel, tiene suficientemente desarrollada este tipo de tecnologia?. Personalmente opino que n. No existe ningun indice de velocidad que sea capaz de medirnos esto, y esto, precisamente es lo que sucede en un programa real. MEMORIA Poco podemos contar de ella. Es donde se guardan los datos. La evolucion de ella, ha sido unicamente respecto a la velocidad, y poco ms. Variantes:

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

EDO, DIMM, etc..... pero informaticamente, excepto la compatibilidad con nuestra placa madre, y su velocidad, poco mas puede interesarnos. PLACA MADRE (NORMA DE COMPATIBILIDAD IBM) Bien, llegado a este punto, y debido a las con-notaciones que tiene actualmente, es necesario introducir un par de chips basicos que se definieron en las placas madre primigenias. Son: El controlador de Interrupciones El controlador de DMA Recordemos, que siguen "exatamente" igual a como se definieron al principio. Tan exactamente igual, que hasta la frecuencia de funcionamiento del chip de DMA sigue siento de unos ridiculos 4 MHz, que quiz fuesen rapidos en su momento, pero que actualmente son ridiculos comparados con el resto de funcionamiento de una placa madre. (Recordad, entonces que hay que "huir" de los dispositivos que utilicen DMA, simplemente por su lentitud -y bloqueos de la CPU-. Igualmente recordad que la DMA y la UDMA no tienen *nada* que ver. Ya lo iremos viendo ms adelante). Veamos primero, como puede comunicarse la CPU con el resto de dispositivos. Recordad que la CPU, tiene una serie de lineas de "control". Estas son las importantes para la mayoria de los dispositivos. Veamos las tres "unicas" maneras que tiene la CPU de "enterarse" o "recibir/enviar" datos a un dispositivo. Antes de eso, vamos a introducir que realmente la CPU, solo tiene dos instrucciones llamadas IN y OUT para poner un byte (o maximo, 2 bytes) en un "puerto". Y que un "puerto" no es nada mas que una direccion de destino que tiene algun chip o dispositivo de la placa madre. Un puerto, se direcciona con 2 bytes, es decir existe un maximo de 65535 puertos en un PC. Bueno, ya ahora como podemos direccionar un dispositivos, al cual sabemos que por "hardware" tiene un determinado (o determinados) puertos. ** Podemos mediante la instruccion IN poner datos en un puerto. La secuencia de datos que estamos poniendo para un determinado hardware, puede ser por ejemplo, una "peticion" de que ese hardware haga algo, o bien le estamos "escribiendo" datos, en vez de ordenes, etc.... Esto depende del dispositivo. Del hardware, en s,... es decir del "manual" del fabricante de hardware (del manual "tecnico"). Igualmente, mediante la instruccion OUT, podemos "leer" un dato que un dispositivo nos haya dejado en un puerto. Perfecto!. Pero ahora como nos enteramos que el dispositivo ya tiene un dato preparado para que lo leamos? Bueno, pues dos posiblidades: 1) A lo "bruto". Empezamos enviamos una peticion a un dispositivo (mediante la instruccion IN), y segun el manual del fabricante, ahora ese dispositivo, nos va a responder en un puerto. Pues

10

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

bien, empezamos a leer (mediante OUT), de ese puerto hasta que exista un dato. Hala!, a lo loco!, OUT->no hay dato?->OUT->no hay dato?->OUT....... 2) Es decir nos metemos en un bucle, sin hacer nada ms hasta encontrar el dato que nos dice el manual. Pero.... si por desgracia falla el dispositivo, o hemos programado mal la peticion que realizamos con el IN, pues... nos hemos metido en un "bucle" infinito. La CPU nunca tendr ese dato y ademas la secuencia programada no se puede interrumpir....... malo, malo. Una mejora de esta solucion, sera mira unicamente cada cierto tiempo. Se puede hacer que se mire cada "tic" de reloj. Y ese "tic" de reloj interno lo podemos programar (exite tambien un circuito de "timer" para estas cosas). Bueno.... hemos mejorado, pero reconozcamos que estamos perdiendo mucho tiempo en "ver" si el hardware nos responde. Este es el modo PIO (Program Input Output) 3) Un poco ms sofisticado. Alguien invent las IRQ (Interrupt Request). Es ms logico: le pedimos algo al dispositivo, y nos dedicamos a hacer otras cosas. Cuando el dispositivo tenga el dato, simplemente que nos avise enviando una "interrupcion" (IRQ). Se llama as porque una interrupcion, interrumpe obligatoriamente lo que est haciendo la CPU y la obliga a tomar alguna accion. Ya veremos cual. (en este caso por ejemplo, leer una vez del correspondiente puerto, porque tenemos la seguridad que ahora s que hay dato). Estas interrupciones, pueden ser interrupciones hardware, o bien interrupciones software, las veremos tambien mas adelante. * Este es el metodo IRQ. ** Y existe un tercer metodo para llevar ciertos tipos de datos desde un dispositivo hardware. 4) Imaginemos que tenemos un "chip" inteligente, y que somos capaces de decirle que una vez que tenga LOS datos (digo "LOS", porque este chip admite programacion a nivel de decirle cuantos queremos), nos los pase a una direccion de memoria prefijada sin necesidad de que la CPU trabaje para nada. Esta es la tecnica DMA. Esta tecnica aparentemente genial tiene un incoveniente (mejor dicho dos). Primero, cuando el chip va a pasar los datos a la memoria, o desde la memoria, para asegurarse que nadie los toca, lo que hace es "desconectar" a la CPU del bus. Y mientras est "desconectada" la CPU no hace nada. Sufre un "parn". Bueno,... esto no era tan importante en la primera arquitectura del PC, con CPUs a 4,77 MHz, y una DMA rapida (4 MHZ), este tipo de acceso simplificaba la programacion y ademas era mas rapida que las tecnicas IN, OUT (tecnicas PIO). Pero por desgracia y para conservar la compatibilidad la velocidad de la DMA sigue siendo la velocidad primitiva (4 MHZ), y ademas por el mismo motivo, la DMA solo sabe hacer transferencias de 8 y 16 bits simultanemanete (cuando la memoria actual se direcciona en un bus de 32). Y ademas, por desgracia, mientras est haciendo la transferencia "interrumpe" a nuestro flamante PIII, que durante ese tiempo habra podido hacer cientos de miles de operaciones en multitarea. Esta es la transferencia DMA. Bien retomando un poco el inicio de este capitulo, habiamos visto que existia el:
11

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

** Controlador programable de interrupciones. y que hace este "bicho"?,pues facil, lo que hace es que cuando recibe una interrupcion, lo primero es enviar una seal a todo el hardware "prohibiendo" que se emitan mas interrupciones, y posteriormente se la comunica a la CPU mediante una linea de control especial (y unica!!). Se le llama "programable" ya que tiene la posibilidad de que si recibe "simultaneamente" mas de una interrupcion, puede ordenararlas por las prioridades que le haya programado el sistema operativo, para irselas dando a la CPU de una en una. Igualmente recordad, que como este controlador, ha prohibido las interrupciones, una vez que se ha notificado a la CPU de esta intrrupcion y la CPU ha llamado a la rutina de servicio (driver) que controla esta interrupcion, lo primero que tiene que hacer, en cuanto pueda, el "driver" es emitir una instruccion STI, es decir informar a todo el sistema que ya est permitido de nuevo enviar interrupciones. Fijaros, lo "peligroso" que puede ser un driver mal programado, simplemente porque al programador de turno se le olvida de vez en cuando el emitir una instruccion STI. IRQs (INTERRUPT REQUEST) Bueno, pues tambien arrastramos aqu una desgraciada herencia. Solo se definieron 16 IRQs (y ademas, no vectorizadas, por lo que en principio NO pueden compartirse. Ojo!!, he dicho en "principio"). Y ademas de "pocas", pues mal distribuidas. De base, sin tener NADA en el PC, estn utilizadas: IRQ 0 Reloj del Sistema IRQ 1 Teclado IRQ 2 Controlador Programable de Interrupciones IRQ 3 Puerto de Comunicaciones Serie 2 IRQ 4 Puerto de Comunicaciones Serie 1 IRQ 5 LIBRE IRQ 6 Controlador de Disquetes IRQ 7 Puerto paralelo. IRQ 8 Reloj en tiepo real (CMOS de la BIOS) IRQ 9 LIBRE IRQ 10 LIBRE IRQ 11 LIBRE IRQ 12 LIBRE IRQ 13 Coprocesador matematico
12

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

IRQ 14 Primer controlador IDE de disco duro IRQ 15 Segundo controlador IDE de disco duro Fiejmonos que en principio, solo quedan 5 libres. Pero.... si tenemos raton en puerto de ratn, este utilizar la IRQ 12. Quedan 4. Si nuestra placa tiene bus USB, este necesita otra interrupcion, si ademas tenemos bios ACPI, esta necesita otra interrupcion..... y la tarjeta de red, otra, etc,etc,etc, Mala pinta tiene el asunto como para poder poner nuevas tarjetas no? Vamos a introducir un poco los "buses" del sistema para dialogar con dispositivos. All veremos como a pesar de las restricciones que aparecen por las pocas IRQs libres, podemos llegar a un ten con ten con el hardware y el sistema operativo, para poder compartir al menos, alguna interrupcion entre varios dispositivos. Con esto de los "buses" debemos remitirnos otra vez a la "historia" de la evoluvion de las primeras placas madre y su enlace con las actuales BIOS y el sistema en general. Con esto ya podremos empezar a preguntarnos otra vez el tema del titulo de estos articulos: "Desde que pulsamos el boton de arranque hasta..." BUSES Se conoce por BUS el conjunto de cables por los que circulan los datos de un dispositivo a otro o de un dispositivo a la memoria y/o CPU. COMUNICACION DE UNA TARJETA CON LA CPU Solo a modo de recordaorio, recordemos que cualquier tarjeta, tiene, o puede tener para comunicarse con la CPU, un rango de puertos, una(s) posible(s) interrupciones y una(s) posibles DMA(s). A continuacion, veremos como se asignas o no estos, en cada tipo de BUS. BUS ISA Empecemos otra vez por las "herencias". El primer bus que se implement en la arquitectura PC fu el bus ISA. En un principio era de 8 bits y rapidamente evolucion a 16 bits. Esto indica que cada vez, en cada ciclo de reloj, era capaz de poner un byte o 2 bytes en el bus. Y... cuantos ciclos de reloj tiene el bus ISA?, pues 8,33 MHz es decir 8 millones de ciclos de reloj. Tena esta frecuencia y la "sigue" teniendo (por el consabido motivo de compatibilidad descendente las herencias pesan-). Es decir el bus ISA con tarjetas de 16 bites, es capaz de soportar un maxion de 16 megas de transferencia por segundo PARA todos los dispositivos. Ridiculo en la situacion actual. Y ahora la pregunta del millon: como se comunica con la CPU?.

13

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Bien, existan y siguen existiendo dos posibilidades principales. Esto es general para todas las tarjetas, sean ISA, PCI, etc, pero vamos a empezar a hablar de ello en esta parte. Un tarjeta, ademas de los consabidos puertos, irqs y DMs que pueda pillar (evidentemente de la lista de "libres" que diamos con anterioridad, puede ser que tengo o no tenga su "propia" BIOS. ** En la arquitectura del primer PC, IBM, defini que la memoria principal del PC, podia llegar hasta la direccion hexadecimal A000:0000 (es decir, recordando un poco, hasta el segmento A000, offset 0). Siu pasamos esta dirteccion a Kbs nos d la increible capacidad de 640 Kbs os suena esta cifra, no?. Digo "increible capacidad", porque en el ao 82, era realmente increible. Igualmente IBM defini las areas con los segmentos desde A000 a C000 como reservadas para los buferes de video. Dfinini ifualmente el segento F000 hasta el final del mega para contener la informacion de la BIOS de la placa madre, y dejo libre las direcciones C000 hasta F000 para posibles BIOS de dispositivos y tarjetas que necesitasen su propia BIOS para funcionar. Haciendo un mapa de la memora (referida a segmento y sabiendo que cada uno de estos ocupa 64 Kbs), tenemos: 0000 1000 2000 .... 9000 A000 Hasta aqu los 640 Kbs primeros de memoriaB000 Desde A000 hasta aqu el area para el video "grafico" C000 Hasta aqui, dos zonas B000 a B7FF y B800 a BFFF .... Libre F000 Desde aqu al final para la BIOS del PC. (nota la zona B000 a B7FF es para la memoria grafica en modo monocromo y modo texto. La B800 a la BFFF es para la memoria grafica en como color y mod texto. Lo que normalmente se utiliza en el modo MSDOS puro). Bine, pues ahora a las BIOS de las tarjetas: la primera tarjeta y totalmente necesaria en nuestro PC es la tarjeta grafica o de video. Esta tarjeta "siempre" tiene BIOS, y normalmente de 32 Kbs, y normalmente ocupa las direcciones desde C000 a C7FF. No es obligatorio, no est escrito, pero es una norma no escrita que practicamente siguen todos los fabricantes de tarjetas de video.

14

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Como tal BIOS, incluso es actualizable. Al menos las de las tarjetas "buenas". (Matrox, etc...). Recordad que en principio cualquier bios se puede actualizar y a veces, en las tarjetas graficas, ha sido obligado para soportar alguna de las normas del ActiveX de windows). En principio, ahora ya sabemos las cuatro posibles cosas que puede "tener" una tarjeta: 1) BIOS y por tanto "ocupar" un rango de memoria desde C000 a F000). 2) Puertos 3) IRQs 4) DMAs. ** Alguno de las 4 "cosas" anteriores (o cualquier combinacion de ellas) se necesitan para que la tarjeta sirva para algo. Y ahora ciendonos a nuestro caso del BUS ISA. como se asignaban las IRQs, los ports, etc, en aquel entonces?. Recordad que no exista la norma PnP (Plug and Play, Plug and Pray para otros). Pues medinate switches. Asi de facil. Era responsabilidad nuestra saber que IRQs o prots teniamos libres y mediante switches se configuraba la tarjeta. Bueno, se configuraba lo que se poda. Cada fabricante escogia al azar un conjunto de puerto y/o IRQs de funcionamiento de su tarjeta y t lo instalabas. Pero claro, si queras aadir otra tarjeta, era responsabilidad tuya que no "chocasen" entre ellas. Y a lo mejor, el nuevo fabricante, no te daba opciones. Resulta que los posibles puertos de tu nueva tarjeta, ya estaban siendo utilizados por otra. Y a lo mejor teniamos que utilizar una u otra. No podiamos instalar ambas a la vez. Curioso y diro el tema, no?. Antes de comprar habia que leerse con lupa que IRQs podia utilizar y que puertos y que DMAs y que direcciones poda pillar la posible BIOS. Llevar en el bolsillo, los uqe ya tenias utilizados con las otras placas, y ver, antes, si era posible instalar esa nueva..... Bien una vez instalada y asignadas (a mano) las IRQs y ports, etc, pues ya teniamos nuestra flamante tarjeta. Pero ya nos teniamos que olvidar de la IRQ o de la DMA "sacrificada". Ahora su entrada en funcionamiento era como siempre. Un driver se encargaba de su funcionamiento y dialogaba con ella con las tecnicas que hemos comentado anteriormente PIO, DMA e IRQ. (como nota curiosa, todas las bios empiezan por los caracteres hexadecimales AA55. Las rutinas llamadas de POST de la bios de nuestro PC, lo que hacen es recorrese al encender el PC, la memoria comprendida dentre C000 y F000, en bloques de 2 Kbs en 2 Kbs y ver si all se encuentra esos caracteres hexadecimales. Si se encuentra, ya sabe que es una BIOS) (y como otra nota curiosa, recordad que antes hemos hablado de tarjetas ISA de 8 bits y 16 bits. Esto implica que hay tarjetas "mas cortas" que lo que es el bus en donde se pinchan. No pasa nada. Pueden pincharse ya que el bus ISA actual soporta ambos formatos de tarjeta). BUS PCI

15

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Surgi mucho mas tarde. Es relativmente joven (vamos a saltarnos aqu una serie de buses intermedios -EISA y VESA- que ya carecen de sentido). La norma PCI, indica que un bus PCI es unicamente de 4 slots (pero permite saltarse la norma e instalar mas slots en grupos de hasta 4 ms, mediante un "bridge" -puente- "PCI to PCI"). Igualmente la norma define al bus PCI como un bus de 32 bites a 33 Mhz. Esto implica una velocidad de transferencia de 4 * 33 = 133 Megas por segundo. Aqu la velocidad ya empieza a ser apreciable frente al bus ISA. Igualmente, define las IRQs que pueden utilizarse como IRQs de dos tipos: "level" (por nivel) y "edge" (esquinado). Precisamente este ultimo tipo: "edge", es el que permitir cuando surgi la norma PnP, el poder compartir una IRQ con mas de un dispositivo!... ya era hora no?. Lo veremos en cuanto tengamos definidos todos los buses. Esto ultimo, ya empieza a parecer un poco mas serio. Ya nos empieza a abrir las posibilidades del PC un poco ms del "corset" que teniamos hasta ese momento. Pero de paso, empieza a complicarle la vida a la BIOS de la placa madre. En ese momento, fu cuando las BIOS, pasaron de ser una cosa "tonta" y practicamente "la misma" para todas las placas madre, a tener su "propia vida" y ser capaz de identificar los dispositivos. Complicaron la existencia a los fabricantes de BIOS.... BUS AGP Es completamente nuevo. Unicamente consta de 1 slot, y est pensado para graficos a alta velocidad. No es importante llevar un chequeo de la integridad de los bites en este bus (ya que si se pierde un bit de un grafico en un instante dado, ni se nota). Lo unico importante aqu es la velocidad. Existen varios estandares 1X, 2X, 4X Y en general se v a llegar a utilizar la misma frecuencia que el BUS de la placa madre. Con esto, actualmente se consiguen tasas de transferencia de 500 Megas por segundo. Solo es importante aqu un matz: *) El BUS AGP se inicializa "despues" del BUS PCI. Esto para respetar al pie de la letra la norma PCI. Por tanto, si tenemos dos tarjetas graficas, una PCI y otra AGP, siempre ser la tarjeta primaria la PCI (teoricamente ms lenta que la AGP). Pero como las normas estan hechas precisamente para saltarselas, pues ciertos fabricantes de bios, empezaron a poner la pregunta "Primary AGP/PCI o PCI/AGP" en la configuracion de la bios para saltarse esta secuencia. Pero repito: no es un estandar, por tanto nuestra BIOS, pudiera no tener esa opcion. PLUG AND PLAY Bin, hasta aqu hemos visto los posibles "buses" incorporados en nuestra placa madre. Queda todavia por ver el bus SCSI. Debido a que este ultimo, no es nada ms que una tarjeta SCSI de la cual salen un nuevo bus, podemos abordar el tema de Plug and Play en este momento y dejar para mas adelante el SCSI.

16

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Hasta ahora, las tarjetas que hemos visto, haba que configurarlas "a mano". Teniamos que asignarlas una IRQ de la lista que teniamos "libre" (recordad que en principio solo tenemos la IRQ 5, 9, 10, y 11 -y puede que la 12 dependiendo si en la bios se la hemos asignado o n a un posible ratn en puerto de ratn-) Evidentemente este conjunto de IRQs libres empieza a quedarse excaso, maxime cuando en la actualizada todo el mundo tiene tarjeta de sonido la cual nos va a pillar otra IRQ, y probablemente la tarjeta de video nos va a solicitar otra. Evidentemente entonces para que queremos slots libres y para que otros dispositivos, si aparentemente no vamos a poder instalarlos?. ** Bueno, algo "nos salva". Recordad que habiamos comentado que el bus PCI fu diseado para poder "pillar" las IRQs de dos modos "level" y "edge". En principio entonces, el bus PCI (y AGP), ha sido diseado para poder compartir interrupciones. Ahora solo queda el definir el como compartirlas. Igualmente debemos recordar que "por diseo" el bus ISA no puede compartir las IRQs y ademas, debemos recordar que las IRQs asignadas a los puertos serie, paralelo y controladores de disco y disquete (es decir IRQ 3, 4, 6, 7, 14, y 15) y las del sistema (IRQ 0, 1, 2, 8, 13) tampoco pueden compartirse. Y si adems tenemos raton en puerto de ratn, o nuestra bios se lo asigna SIEMPRE a un posible puerto de ratn, la IRQ 12 *tampoco* podr compartirse. Igulamente quiero resaltar que en las IRQs "fijas" hay alguna matizacin: a) Los puertos COM1 y COM2 /serie), necesitan una IRQ. Lo "normal" es que la bios le d la 4 y la 3 respectivamente. Pero en ciertas bios PnP, la propia bios puede decidir (o puede ser configurada) para que le d otra. Si el puerto no tiene IRQ no funcionar. Igualmente si el puerto tiene conflicto con la IRQ porque la "pilla" otro dispositivo, tampoco funcionar. b) La IRQ del puerto paralelo (normalmente la 7, pero estamos en un caso similar al anterior, con respecto a que la bios puede darle otra), puede ser que no sea necesara. En win95 / win98, "siempre" la bios le asigna una IRQ y por tanto windows la utiliza (y los drivers de impresion la necesitan). En Windows NT (y windows 2000), esto no es necesario. NT y 2000 "pasan" de la bios, y los drivers de impresion no lo necesitan. Lo gestionan mediante tecnica de "pool" y liberan al sistema una IRQ que puede ser preciosa. c) La IRQ 12 es ISA s est asignada a puerto de raton. Si en nuestro PC tenemos el raton en un puerto serie, lo normal es que entremos en la BIOS y le digamos que no asigne la IRQ al puerto de ratn. Hay ciertas bios que son capaces de detectar esta situacion y "liberan" automaticamente dicha IRQ. Pero esto no es lo normal y por tanto somos nosotros responsables de informrle a la propia bios. ** He repetido los conceptos anteriores que ya habiamos visto para tenerlos frescos en este momento. Vamos a para entonces a hablar realmente del PnP. En windows 95, Microsoft prepar una especificacion del PnP. No vamos a entrar en detalles tecnicos, unicamente conceptuales. En resumen, la especificacion PnP es la siguiente: 1) Cada fabricante de perifericos PnP tiene asignado un numero identificativo unico en el mundo.

17

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

2) Los fabricantes son responsables de "numerar" sus dispositivos. Es decr una tarjeta suya tedr en numero 1, otra el 2, etc. Numeros UNICOS. 3) Los dispositivos se agrupan por "funcionalidades" (dispositivos de "Mass Storage" para los de acceso a disco, "Video" para los de video, "Multimedia Device" para los multimedia, etc.... es decir hay una clasificacion. 4) El conjunto de estas dos caracteristicas definidas en el punto 1) y 2) forma un "string" (cadena de caracteres) identificativo "unico" para un dispositivo. Por ejemplo de la forma: VEN_8086&DEV_7110. Este ejemplo corresponde al fabricante INTEL (VEN es abreviatura de "vendor") e Intel tiene curiosamente el "numero" identificativo de fabricante el 8086 (igual que su primera CPU "compatible"). DEV indica "device" (dispositivo) y el 7110 es un numero interno de Intel con el cual identifica de manera unica su dispositivo (el que sea, que en este caso en particular es el: Intel 82371EB PCI to ISA bridge (ISA mode)). 5) Existe una "norma" estandar para preguntar al dispositivo que IRQs le "gustara" y "puede" utilizar (tanto en plan exclusivo como "compartidas", si fuesen dispositivos PCI). Y cuantas "Necesita". Lo mismo para los puertos y lo mismo para la DMA. Es decir, preguntandole al dispositivo, este es capaz de informarnos que quiere y que posibilidades tiene. 6) La BIOS en inicializacion, es la responsable de preguntarle a los dispositivos esto. 7) La propia BIOS, es "lista". En principio "ve" que dispositivos tiene la placa madre y le d las IRQs del sitema FIJAS que hemos comentado antes. Realmente la secuencia que sigue es: 7.1 Asigna las IRQs fijas a los elementos incorporados en la placa madre. (puertos serie, paralelo, raton, etc) 7.2 Mira en la tabla (que es modificable por nosotros entrando en la bios), a ver si alguna IRQ, nosotros la hemos bloqueado (es decir, en la bios le hemos marcado, por el motivo que sea, que la IRQ 10, por ejemplo, es una IRQ ISA o "Legacy ISA"). Si la tenemos marcada as, la ignora en su lista de asignacion a dispositivos PnP. 7.3 En este momento tiene la bios una linsta de IRQs que le quedan librs. 7.4 Se recorre el bus ISA y "pregunta" a cada tarjeta s es o n, PnP. Y si es PnP que necesita y que posibilidades alternativas le d. Posteriormente selecciona una IRQ de "su" lista de "libres" y le informa al dispositivo de que esa IRQ es para l. Y SOLO PARA l. (Recordad que la IRQ ISA no se pueden compartir. Por tanto se la d a un dispositivo y la borra de su lista de IRQs libre). 7.5 Cuando termina con el bus ISA, empieza con el bus PCI y AGP. Se recorre igualmente estos buses preguntando a los dispositivos lo mismo con respecto a las IRQs. Y ahora les va asignando las libres. Como las IRQs de las PCI, normalmente son "edge", es decir, se pueden compartir, cuando la bios termina con su "lista" de libres, vuelve a asignar otra vez el comienzo de su lista al dispositivo siguiente. Es decir "comparte la IRQ). 8) Lo anterior, no implica que el dispositivo funcione. Implica unicamente que ahora el dispositivo "sabe" y la bios "sabe", que "debe" utilizar. Pero ahora queda que el sistema operativo lo soporte. Este es el caso de w95 / w98. El MsDOS y el w3.1 *no* soportan IRQs compartidas. Y
18

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

en cambio en NT y el windows 2000, debido a que no hacen ni caso de la bios, vuelven a reprogramar a su gusto todas las tarjetas para asignarlas lo que mas le interese a cada driver de dispositivo. RESUMEN Y POSIBLE USO POR NUESTRA PARTE Y ahora que posible uso, o que posibles conclusiones debemos sacar de lo anterior?.... ** Bien, en principo, y lo primero es saber si las tarjetas que tenemos o vamos a aadir a nuestro PC (las ISA), son o no son PnP. S no son PnP y ademas no tenemos ningun "jumper" para que lo sean, debemos ver que IRQ va a necesitar (mirando el manual nos dir cuales "puede", y ademas si tenemos o no que poner algun jumper para esto). Una vez identificada la IRQ libre que queremos para esa tarjeta, debemos entrar en la pantalla de la BIOS, en la parte de PnP y a dicha IRQ, ponerle "ISA" o "Legacy ISA". Con esto unicamente conseguimos que la bios NO se la asigne a ninguna tarjeta. Curiosamente tampoco se la asigna a la nuestra. Es responsabilidad luego del driver (o del propio windows), el asignarsela, por lo cual "puede" que tengamos que informarle al sistema operativo (windows) en las "propiedades del sistema" que dicho dispositivo utiliza esa IRQ para que a su vez windows se lo informa a "su" driver. ** Gracias a Dios, de estas tarjetas, practicamente no quedan.... (a excepcion de algun modem interno ISA). IMPORTANTE: Igualmente, si entre los dispositivos PCI, vemos que la bios (y windows) asignan una determinada IRQ a un dispositivo, y por el motivo que sea, no nos gusta, o nos causa problemas y queremos que le asigne "otra" de las posibles asignadas al bus PCI, es facil. Abrimos la maquina y cambiamos a la tarjeta de "slot". Recordad que la bios asigna su lista de libres recorirendose el bus PCI. Por tanto cambiandola de slot se la encontrar en otra posicioon y "seguramente" le asignar otra IRQ. (Realmente aqu intervienen ms factores de tipo tecnico, ya que existen las denominadas IRQ#A, IRQ#B, IRQ#C e IRQ#D. Estas son las que realmente solicita un dispositivo y el proio bus PCI las tiene "entrelazadas" y juega con estas IRQs "logicas" y la lista de IRQs libres. Pero este es un tema "tecnico" que se sale del alcance que quiero dar a estos documentos) ** Bien hasta aqu hemos visto una "nueva" tarea que realiza la bios "Desde que pulsamos el voton de encendido"...... y antes de empezar a cargar todavia el sistema operativo. BUS SCSI Y SUS DISPOSITIVOS Como introfuccion, debo comentar que la tecnologia SCSI siempre es la puntera (y la mas cara). Los discos SCSI siempre son mejores que los IDE. Y mucho mas rapidos, pero evidentemente a igualdad de "tecnologia". Me explico, todo lo "puntero" siempre nace en los dispositivos SCSI. Posteriormente los IDE (uno o dos aos mas tarde) los alcanzan. Hagamonos una idea: los discos a 7200 revoluciones, eran normales hace 2 aos en SCSI. Ahora se estn introduciendo en los discos IDE de ultima generacion.

19

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Actualmente el SCSI tiene ya discos de 10.000 revoluciones y con cach interna de 4 megas. Los IDe todavia ni suean con esto. SCSI=Small Computer System Interface Bueno, pues una de las tarjetas que podemos pinchar a la placa madre, son las tarjetas SCSI (se pronuncia "escasi"). Ests tarjetas lo que hacen es definir un nuevo "bus". Estas tarjetas pueden ser PCI o ISA (casi no quedan de estas), e incluso hay placas madre que ya las llevan incorporadas. Pero en este ultimo caso, a todos los efectos, es como si fuese una tarjeta independiente. Por firmar un BUS, desde la tarjeta scsi, podemos colocar uno o dos cables que van a ir a uno o varios dispositivos. Veamos: un bus scsi no es nada mas que un cable. Y de este cuelgan los dispositivos. Y uno de los posibles dispositivos es precisamente la tarjeta SCSI. Si salen dos cables, (por ejemplo uno interno y uno externo), la tarjeta scsi est en el "medio" del BUS. Si unicamente tenemos un cable, la tarjeta est en uno de los "extremos" del bus. Es decir, teoricamente podemos tener: 1) D---D---D--T---D 2) T---D---D--D---D (he representado por "D" cualquier dispositivo scsi (disco, CDROM, scanner, etc) y por "T" la propia tarjeta). En el caso 1) se supone que tenemos dos cables que salen de la tarjeta (uno interno y otro externo) con dispositivos. En el caso 2) Solo tenemos dispositivos en uno de los cables (d igual). IMPORTANTE: El BUS SCSI debe estar "terminado" por *ambos* extremos. Esto es *OBLIGATORIO*, son propiedades electricas del dispositivo y si no prestamos atencion a esto, en cualquier momento puede suceder un malfunionamiento de bus, o que uno de los dispositivos no sea reconocido, etc. Mas adelante veremos que quiere decir "terminado". Vamos ahora a ver que es lo que tiene cualquier dispositivos SCSI. Previamente, debemos saber que cada dispositivos SCSI (incluso la misma tarjeta, ya que como hemos dicho anteriormente es un dispositivo ms), tiene que tener un numero UNICO en el BUS. Este numero debe ser un numero de 0 a 7 (luego veremos las ampliaciones del bus scsi). Este numero se asigna en los dispositivos. Todos los dispositivos SCSI, tienen mediante "jumpers" la posibilidad de asignarle un numero. Este numero se asigna en binario. Veamos como: Normalmente hay tres jumper numerado 0, 1 y 2 Posibilidades (S=jumper colocado, N=no colocado): 2 1 0

- -

20

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

N N N N S S S S

N N S S N N S S

N Identificacion cero (ID 0) S ID=1 N ID=2 S ID=3 N ID=4 S ID=5 N ID=6 S ID=7

** Cada dispositivo un numero UNICO en el bus. Y ademas hemos dicho que la tarjeta es un dispositivo ms. Recordar ademas que las tarjetas SCSI, realmente son realmente una CPU especial y que ademas tiene su propia BIOS. Por tener su propia BIOS es configurable, por ejemplo en las tarjetas Adaptec, se puede entrar en dicha bios pulsando CTRL-A cuando se est inicializando la tarjeta. Entonces como se asigna el numero "ID" a la tarjeta?. Facil: en las "antiguas" tarjetas, normalmente por jumpers como los anteriores, y en las tarjetas actuales, entrando en su BIOS y asignandoselo. Por defecto la tarjeta SCSI siempre viene con el ID=7. Estos numeritos, no solo son para deifrenciar cada dispositivo, sino que ademas nos determinan la "prioridad" del dispositivo. La norma SCSI define que el dispositivo de maxima prioridad es el ID 7, y luego va disminuyendo la prioridad desde el ID 6 hasta por fin el ID 0. Este es el motivo por el cual la tarjeta scsi, viene siempre de fabrica con el ID 7. Evidentemente la tarjeta SCSI debe ser, por logica, la que tiene mayor prioridad en el BUS. ** Otra caracteristica de la que hemos hablado anteriormente es la "terminacion". Y habiamos comentado que el bus SCSI debe estar "terminado" en ambos sentidos (AMBOS). que es la terminacin?: pues no es nada mas que una "resistencia" electrica que cierra el extremo del bus. Normalmente cada dispositivo "tiene" esta resistencia internamente. La manera de "activarla", es decir la manera de decirle a un dispositivo que l es el ltimo del bus y por tanto "debe" tener la resistencia colocada, es mediante un jumper (este jumper, suele denominarse "TE" termination enabled-). Es decir cada disco o dispositivo que vayamos a conectar, al menos tiene 4 jumpers. Los 3 anteriores para asignarle el ID y uno mas marcado como "TE". Unicamente el *ultimo* dispositivo en cada parte del bus, debe llevar el "TE" activo. CUIDADO con esto. De fabrica TODOS los dispositivos que copremos suelen tener el "TE" activo.

21

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Y la propia tarjeta?. En el caso 1) que hemos visto anteriormente NO debe estar "terminada" y en caso 2), bien sea externo o interno el cable con dispositivos, la tarjeta debe estar "terminada" siempre. Entonces la terminacion, depende del tipo de tarjeta: en algunas (viejas, o incorporadas en la propia placa madre del PC), puede ser un jumper. En las actuales, se define tambien en la propia BIOS de la tarjeta ademas de asignarle all el numero de ID. Algunos de los dispositivos "viejos", en vez de tener el "jumper" TE, lo que fisicamente tienen es una fila (o dos) de resistencias ("resistor"). La manera de quitar la "terminacion" es eliminar fisicamente las resistencias. Igualmente, existen "tapones", que no son mas que un pequeo conector que se pone al final del cable, en uno o en ambos extremos y que realmente son resistencias. Hacen de tapon. Esto es muy util, mi costunbre, segun compro un dispositivo scsi, es quitarle siempre el jumper TE, y finalizar *siempre* los buses con estos "tapones". As tengo la seguridad que no se me olvidar. La velocidad "base" de tranferencia del bus scsi es 10 megabytes en total en todo el bus. El cable es un cable de 50 hilos. El bus que hemos definido hasta aqu es el llamado NARROW SCSI. Y ya realmente es de los "viejos". ULTRA SCSI Es el mismo bus (aparentemente), con un chip especial que permite una comunicacion al doble de velocidad. Por tanto soporta 20 megabytes en el bus. Los dispositivos deben soportar negociacion "ultra". Practicamente todos los actuales lo soportan. WIDE SCSI Cambia el bus. En vez de 50 hilos es de 68 y soporta 16 dispositivos, y por tanto los dispositivos en vez de 3 jumpers para asignar el numero, tienen 4, para poder asignar un numero del 0 al 15. Por compatibilidad el orden de prioridad sigue siendo del 7 al cero y luego con "menor" prioridad todavia el 15, 14, 13,.....,8. Debido a que el cable es de 68 hilos, fisicamente los dispositivos son diferentes. Su conector es diferente. Estas tarjetas, lo normal es que uno de los conectores (bien el externo o bien el interno, o incluso hay veces en que ambos son internos), sea de 50 hilos y el otro de 68. As los dispositivos "normales" los conectamos al de 50, y los "wide" al de 68. ULTRA-WIDE SCSI Pues una combinacion de ambos anteriores. Evidentemente duplica la velocidad, por lo que la velocidad del bus llega a 40 megabytes por segundo. ULTRA 2 SCSI o ULTRA 2 WIDE SCSI Es la ultima tecnologia, llamada tambien LVD (Low Voltage Diferential).

22

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Normalmente estas tarjetas son 2 buses en 3 conectores. Dis de los conectores forman un bus normalito ULTRA-WIDE de los comentados anteriormente y con los terminadores conectados tal y como hemos comentado. Y ahora el canal LVD. Este canal es el "otro" bus. Uno de los extrmos sigue siendo la tarjeta. Por tano, una tarjeta ULTRA 2 con tres conectores, tiene dos posibles terminadores. Uno para la parte normal ULTRA-WIDE y otro para la parte LVD (por tanto este ultimo debe estar siempre "terminado"). Los dispositivos LVD (discos), son especiales. En un bus LVD todos los dispositivos que enchufemos "deben" ser obligatoriamente LVD. Sino lo hacemos as, TODO el bus se comportar como un bus NORMAL. En este caso, los discos LVD, tambien tienen un jumper que se debe activar, para decirle que debe comportarse como un disco normal y no como un disco ULTRA 2. Por tanto en este caso, existen dos posibilidades: 1) Todos los dispositivos son LVD en ese bus. Entonces NINGUNO de los dispositivos debe tener activo el jumper de "normal". Y el bus debe terminarse "externamente" (al final, no puede ser que uno de los dispositivos haga de terminador), mediante una resistencia especial llamada resistenc a "activa" o "terminador activo". 2) Alguno de los dispositivos en ese bus NO es LVD. Entonces el resto de dispositivos LVD, deben tener al jumper de "no LVD" o bien "SE" conectado. En este caso, en dichos discos ya puede activarse el jumper "TE" y por tanto, el ultimo debe tenerlo activo. S el ultimo no lo tueviese activo, el bus debe terminarse tambien con una resistencia externa. Pero debe ser una resistencia "pasiva" o "terminacion pasiva" en este caso. Es decir una resistencia normalita como si fuese un bus ULTRA-WIDE de los citados anteriormente. La velocidad de este bus soportada es de 80 megabytes por segundo. *** Y por ultimo comentar que actualmente hay tarjetas y dispositivos que soportan la tecnologia SCAM. Esta tecnologia es simplemente que los dispositivos negocian (o pueden negociar) su ID con la tarjeta y la propia tarjeta puede cambiarselo automaticamente. Con esto nos evitamos el "engorro" de tener que asignar un numero a cada dispositivo, pero perdemos la flexibilidad de poder asignar nosotros mismos las prioridades, ya que existe la posibilidad de que la tarjeta nos lo cambie de prioridad. Particularmente yo desactivo dicha opcion en la bios de la tarjeta y lo gestiono "a mano". *** Y ya por ultimo, recordar que sino tenemos discos IDE y queremos que uno de los discos de nuestra tarjeta SCSI sea el disco de "boot", la norma SCSI dice que este disco debe tener el ID 0 o el ID 1. Esta es la norma, pero en las tarjetas actuales, esto tambien es configurable mediante su bios. OTROS DISPOSITIVOS EN LA PLACA MADRE: CONTROLADOR IDE Este dispositivo, historicamente era una tarjeta "aparte" que se pinchaba en un slot ISA. Despues de aparecer el bus PCI dichas tarjetas empezaron a ser PCI y en la actualidad, practicamente en todas las placas madre vienen incorporadas.

23

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

** Se le llama controlador IDE, pero realmente es "la mitad" del controlador. Me explico: la electronica de los actuales discos duros lleva incorporada la otra mitad. Recordemos que un controlador IDE soporta dos "buses" o "canales" IDE. Cada canal IDE unicamente puede soportar a su vez dos dispositivos: dicocs dura, disco y CD, o dos CDs. Por tanto estamos limitados a un maximo de 4 dispositivos IDE. Cada dispositivo debe estar identificado dentro del mismo "canal" IDE como "master" o como "slave". Esto se configura mediante un switch o jumper en el propio disco del le dice si es "MA" (master) o "SL" (esclavo). S solo tenemos un dispositivo en un canal IDE, este debe ser "master". Por tanto existen dos canales IDE (primario y secundario), y cada uno de ellos con dos dispositivos (uno master y otro slave). ** Cada canal IDE, "pilla" una IRQ del sistema. El canal primario, la IRQ 14 y el secundario la IRQ 15. Es importante la matizacion anterior, ya que si unicamente tenemos utilizado un canal no podriamos utilizar la IRQ 15 para otra cosa? Pues efectivamente: s. La manera de decirle a la bios que deje libre la IRQ 15 porque no vamos a utilizarla en la controladora IDE, es precisamente entrar en las pantallas de la bios y decirle que *no* tenemos canal IDE secundario. Esto ultimo, puede que a windows no le guste y nos mrque una admiracion amarilla en el canal IDE secundario. No es problematico y no pasa nada. Todo funcionar correctamente. De todas maneras, si esto nos pasase y queremos que wndows no nos informe de esta "incidencia", en la mayoria de los controladores actuales (drivers de windows), se puede entrar en al Administrador de dispositivos y en la controladora existe una opcion (en casi todas) para decirle lo mismo que le hemos dicho a la bios: que se utiliza solo el canal primario. Con esto dejaremos ya de ver la admiracion amarilla. Pero repito, esto no influye en el rendimiento ni en el comportamiento de windows. VELOCIDAD DE LOS DISPOSITIVOS IDE Siempre hemos oido hablar de las velocidades del disco duro, de la DMA, del modo PIO 4, de las UDMA, y siempre nos han querido vender las cosas con frases majestuosas: soporta UDMA 33 y nosotros nos quedamos con la boca abierta y luego incluso vamos "fardando" de rapidez. Pero realmente sabemos lo que nos han vendido? realmente es tan rapido? Tenemos varios componentes que influyen desde que un sector de datos est en el dsico hasta que ese sector de datos, est en la memoria principal de nuestro PC. Por una parte tenemos la verdadera velocidad del disco duro. Esta velocidad es unica. Es un componente mecanico y por tanto unicamente depende de la velocidad de rotacin del disco (actualemtne en los IDE, hay velocidades de 4200, 5400 y 7200 revoluciones por segundo). Cuando queremos leer un sector de datos, lo peor que nos puede pasar es que el sectar, acabe de pasar por debajo de la cabeza de lectura. Si es as, tendremos que esperar una revolucion completa del disco hasta que vuelva a pasar por debajo de la cabeza de lectura. Lo mejor que puede pasar es que est justo antes de la cabeza lectora. En este caso se leera inmediatamente.

24

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Y estadisticamente la media de los sectores que queremos leer, estarn a la "mitad" de distancia de una revolucion completa del disco. Esto es lo que se define como "average", y realmente solo depende de la velocidad de rotacion. A mas velocidad, mas rapido ser el disco (y mas caro). No tenemos en cuenta aqu tambien otro factor. Si la cabeza lectora no est en el cilindro correspondiente al sector que queremos leer, el brazo que soporta a la cabeza lectora, tendr que hacer un moviemiento transversal de posicionamiento a ese cilindro. Esto es lo que se denomina "seek". Por otra parte, pensemos, que la "mitad" de las controladoras actuales, estan integradas dentro de la electronica del disco duro. Y all es donde podemos tener el verdadero cuello de botella (otro ms), ya que a circuiteria y la logica del propio disco, lo mas normal, cuando le solicitamos un sector, es que "lea" ms sectores y se lo pase a la controladora (a un mini-cach) por si acaso inmediatamente despues solicitamos otro sector contiguo (suele ser bastante normal que nos interese leer mas de un sector: 512 bytes, incluso el propio sistema operativo, se organiza en cluster que siempre son mayores de ese tamao, por tanto siempre se le solicitar al disco ms de un sector en diversas peticiones sucesivas). Pasemos a ver ahora como van los datos de la controladora a la memoria. DE LA CONTROLADORA A LA MEMORIA Se pueden utilizar 4 metodos diferentes. Programmed I/O (PIO) Memory Mapped I/O DMA Busmaster DMA PROGRAMMED I/O En el "programmed I/O" la transferencia de datos entre controladora y memoria principal se desarrolla a traves de los diferentes ports de I/O (Entrada / Salida) de la controladora que tambien sirven para la transmision de comandos. En el lado del software, se encuentra un programa correspondiente con los comandos de lenguaje maquina IN y OUT. Pero esto significa que cada BYTE del disco, debe pasar por la CPU despues de ejecutar dicho comando. Uno a uno (o dos a dos, como maximo)En este caso, la tasa de transferencia de datos no solo est limitado por los valores maximos de velocidad del bus, sino tambien por el rendimiento de la CPU, y evidentemente en un sistema multitarea, la CPU puede que llegue a estar demasiado ocupada preocupandose del acceso a los datos. MEMORY MAPPED I/O

25

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

La CPU podra recoger los datos de la controladora de una manera mas rapida, si esta los dejase en una zona de memoria fija. En este caso, la cpu puede trabajar mucho mas rapidamente con estos datos ya que puede moverlos mediante las intrcciones MOV que trabajan mas rapidamente que los accesos mediante IN y OUT. De esta manera, en las actuales CPUs se puede obtener un mayor rendimiento. Pero por desgracia, las controladoras no "saben" de memoria virtual, no sbaen del modo protegiod (protected mode) de la CPU. Unicamente conocen la memoria real. Esto causa un problema muy serio de rendimiento en los actuales sistemas operativos basados en las tecnicas de memoria virtual (frente al antiguo MSDOS que operaba con memoria real). DMA Ms conocido que los dos procedimientos anteriores, es la transferencia DMA, que en los PCs se soporta en un chip DMA propio. Este chip, debe posibilitar la transferencia de datos desde un dispositivo (disco duro, disquete, CDROM, etc..) a la memoria y evitar con ello, el largo camino a traves de la CPU. DMA = Direct Memory Access. La idea es buena, ya que el software solo debe indicarle al controlador DMA, cuantos bytes se han de transportar de donde adonde. Pero esto en el PC se realiz de una manera bastante chapucera, ya que el controlador de DMA que emplean los PCs, no solo es bastante inflexible (lo que an se le podra perdonar), sino sobre todo lento. Tan lento, que an el acceso segn el procedimiento PIO en el peor de los casos es mas rapido a partir de los antiguos 486. Ya que como anacronismo en la historia de los PCs, el controlador DMA en los AT y sus sucesores, sigui haciendose funcionar a 4 MHz, en donde los primeros PCs ya alcanzaban los 4,77 MHz. En ellos, en los antiguos, la transferencia DMA es mas rapida que el PIO. De esta forma no se puede alcanzar mas de 2 Mb /segundo. Por ello, la mayoria de los discos modernos ya no controlan segun el metodo DMA BUSMASTER DMA Otra forma del Direct Memory Access es el Busmaster DMA, pero este no tiene nada que ver con el chip de DMA integrado en la placa madre, y del acual hemos hablado anteriormente. En este tipo de acceso, la controladora del disco duro, desconecta a la CPU del BUS y transfiere los datos con ayuda de un controlador Busmaster DMA con control propio. De esta manera se pueden conseguir tasas de transferencia de has 8 mb/seg. Busmaster DMA solo se empleaba en el caso de controladoras SCSI. UDMA No lo he mencionado al principio del articulo, debido a que no es nada mas que una variante del Busmaster DMA, implementada en controladoras IDE y aumentada su velocidad de transferencia a 16 MB/s. Posteriormente surgi la UDMA 2 (o UDMA 33) hasta 33 megas/s. Y actualmente ya se estan vendiendo placas madre con controladoras incorporadas a 66 MB/seg.
26

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

NO LLEVARSE A ENGAO No hay que llevarse a engao con todo lo anterior. En las controladoras / discos actuales, ambas cosas forman un TODO. Es decir, no solo el chip de la placa madre debe soportar esa velocidad, sino que tambien el propio dispositivo (la electronica del propio disco duro), debe soportarla. Es decir un disco UDMA actual (UDMA 2) por mucho que lo pongamos en una placa madre con controladora UDMA 66, no dar mas rendimiento que el que daba en una UDMA 33. GOODBYE AL MODO PROTEGIDO Como colofn de esto, voy a hacer unos pequeos comentarios de diseo del propio nucleo del sistema operativo, en relacion con los metodos de acceso anterior. Recordad que existen dos modos de funcionamiento del procesador. El modo "real" que es el modo en MSDOS puro y duro, con el limite de 640 Ks en memoria contigua y el limite de 1 mega + 64 Kb para todas las direcciones reales. Y el modo "protegido", en donde se tiene acceso a toda la memoria de la maquina, y es el modo en que funciona windows, linux, OS2, etc..... Las formas vistas antes de transferencia DMA, solo se pueden utilizar en el mundo del modo Real (Real-Mode), y llevan al procesador a un "cuelgue" si no se toman las medidas adecuadas. El problema es la gestion de memoria virtual, mnejada por la Memory-Management-Unit (MMU) de la CPU. Es el encargado de formal las direcciones virtuales para los programas que trabajan en modo protegido y proyectarlas sobre las direcciones verdaderas (fisicas) en la memoria. Pero de esto, los programas no se enteran, ya que nunca entran en contacto con las direcciones fisicas, y el controlador de DMA no es una excepcin: tampoco se entera, ya que no tiene acceso a la MMU de la CPU. Esta problematica, no solo suerge en windows y otros sistemas en modo protegido. Tambien afecta al MSDOS cuando este est trabajando o conmuta a modo Virtual-86 (el tercer modo de funcionamiento del procesador). Por ejemplo en cuanto instalamos el EMM386.EXE en el config.sys que sirve para la emulacion de la memoria expandida y que depende de la gestion de la memoria virtual del procesador. Solo hay un modo de evitarlo, y es la vigilancia de la controladora DMA. Esto es posible en modo protegido mediante el control de los ports I/O (virtualizacion del hardware). As por ejemplo, windows instalar un Control-Monitor virtual en el fondo (en la capa mas baja), que vigila la programacion del controlador DMA, mediante la BIOS o un programa, y que convierte las direcciones virtuales indicadas en direcciones fisicas verdaderas antes de que se escriban los registros del controlador DMA (antes que se programe una lectura/escritura) RESTO DE DISPOSITIVOS INCORPORDOS EN PLACA MADRE En las placas madres actuales, tendermos incorporados: 1) Puertos serie (COM1 y COM2) 2) Puerto paralelo

27

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

3) Puerto de raton 4) Puertos USB (practicamente en todas las placas actuales). PUERTOS SERIE Simplemente son unos puertos de baja velocidad (115200 bits/segundo) Esta velocidad es adecuada para los modem o el raton serie, pero para comunicacion PC a PC mediante la conexion serie que nos suministra windows, se queda bastante escaso. Esta comunicacion equivale a unos 14 Ks por segundo. Evidentemente se queda muy corta para conexion por cable. Debemos recordar que la velocidad se configura en el Administrador de dispositivos. La velocidad configurada all unicamente tiene efecto en la conexion por cable y no tiene ningun efecto en el modem. Esto es importante, ya que por defecto en windows, viene a 9600. Mi consejo es configurarlo al maximo de velocidad (normalmente 115200). Las placas madre de ultima generacin llevan incorporado un chip multipuerto que nos puede dar hasta 1.000.000 (un millon) de bps. (en este caso, la comunicacion via puerto serie, empieza a ser "decente"). PUERTO PARALELO Este dispositivo, aunque muy "viejo", vamos a "mirarlo" con un poco mas de cario, y esto es debido a que ya no solamente se utiliza para la impresora, sino que ya pueden conectarse a ella un monton de dispositivos. Los mas "genericos", por ejemplo, son: el ZIP, el LS-120 (SuperDisk), algunos modelos de Scanners y algunos modelos de grabadoras de CD-ROM. Debido precisamente a la conexion de estos dispositivos, debemos prestar especial atencion a su configuracion en la bios. Recordemos que las bios soportan normalmente: ECP+EPP ECP EPP 1.9 EPP 1.7 Bidireccional SPP (nota: no todas las bios soportan el metodo ECP+EPP, y no todas tienen dos normas para EPP -1.9 y 1.7-) En general he escrito lo "optimo" de abajo arriba, pero lo optimo en funcion de la velocidad y prestaciones, no quiere decir que sea lo optimo para nuestros dispositivos.

28

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Yo aconsejo realizar las pruebas del puerto paralelo seleccionando en la bios el puerto paralelo con lo metodos anteriores, y probando cada opcion de arriba a abajo. Cuando encontremos la primera en la cual funcionen todos los dispositivos que tenemos en el puerto paralelo, esa es la que debemos dejar. No todos los drivers de impresora, ni drivers de scanner, etc, soportan todos los metodos del puerto paralelo. Por ello es necesario "probar". Es importante este tema, fijaros que por ejemplo un ZIP en puerto paralelo, pasa de unos ridiculos 5 Megabytes por minuto, hasta unos "buenos" 30 megas / minuto, unicamente configurando correctamente el puerto (y ejecutando luego el "optimizador de puerto paralelo" de iomega, que lo unico que hace es "mirar" como tenemos el puerto para "decirselo" al driver del ZIP. De esta manera, pasamos de 5 a 30, simplemente tocando la bios y ejecutando en ambos casos el "optimizador"). ** La velocidad tipica de puerto paralelo en una comunicacion directa por cable entre dos PCs, llega a 1 Megabyte por segundo, pudiendo alcanzar los 2,5 megas en las placas madre de ultima generacion que utilicen un "buen" chip de multipuerto. PUERTO DE RATON Es un puerto (una conexion) especifica incorporada en la placa madre, y que por desgracia nos "roba" una preciosa IRQ (suele ser la 12). Lo normal es que pueda deshabilitarse el puerto de raton en la bios. En ese caso no se utilizar esa IRQ, pero... no todas las bios la van a dejar disponible para otros dispositivos en la placa madre al deshabilitarlo. He visto situacion (placas madre SuperMicro) que aunque deshabilitemos el puerto de raton en la placa madre, no deja que ningun otro dispositivo "pille" la IRQ 12 (al menos dispositivos PnP). En otras placas, al deshabilitar el puerto de ratn, vemos que inmediatamente es seleccionada por algun dispositivo PnP. Otra desventaja de este puerto, es que la IRQ que "pilla", es del tipo ISA. Es decir la pilla "en exclusiva" y no puede ser compartida por otros dispositivos. Como comentario personal, no entiendo el porqu apareci este dispositivo, maxime teniendo 2 puertos serie en un PC, y siendo el raton un dispositivo que *no* necesita "velocidad" en el puerto. Entiendo que es una herencia arrastrada y que surgi en sus epocas unicamente por motivos de marketing (de IBM). PUERTOS USB Bien, en un principio se apostaba por ellos como la conexion universal y el futuro de todos los perifericos a conectar a un PC. Desde luego, este tipo de apuesta no va tan rapido como se esperaba. * La mayoria de las placas madre actuales, suelen llevar incorporados dos puertos USB. Si no fuese as, podemos adquirir por un precio no excesivo, una placa PCI especifica que nos suministre los dos puertos. * Por tener USB, la bios le asigna una IRQ, pero en este caso, esta IRQ es del tipo PCI y se puede compartir con el resto de dispositivos PCI que tengamos en el PC. Al igual que en el caso de puerto
29

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

de raton normalmente en la bios podemos "desactivar" el USB si no vamos a tener dispositivos de este tipo. Si lo desactivasemos, se quedar libre para el sistema, pero en este caso no tiene mucho sentido, ya que "no molesta" al ser una IRQ que es capaz de ser compartida. * La velocidad de un bus USB son 12 megas (bastante aceptable comparado con los anteriores "buses"). * Recordemos que un bus USB puede tener hasta 127 dispositivos. La pregunta del millon es si solo tengo 2 puertos en el PC, como es posible conectar hasta 127 dispositivos?. Pues facil, desde un puerto puedo conectar un HUB (como en las "redes", es decir una especie de distribuidor) que tiene una entrada y "n" salidas. Y as se pueden conectar en "cascada" tantos HUB como queramos hasta tener las 127 posibles salidas (incluidos en ellas los propios HUB). ** AVISO: Existi un problema de hardware con los primeros chip de bus USB fabricados por Intel que no funcionan correctamente. Para ver si nuestro "chip" es bueno, debemos ir al Administrador de Dispositivos, y abrir el dispositivo "Controlador serie universal USB" y debajo de l veremos colgando un dispositvio del tipo "Intel XXXXX PCI to USB Universal Host Controller" Pinchandolo, podremos ver en esa pantalla la "Revision de Hardware". Debe ser la 001 o superior. La version 000 no funciona e Intel aconseja que nos pongamos en contacto con el fabricante de la placa madre y se la devolvamos (como si fuese tan facil!). ** IMPORTANTE: Normalmente los puertos USB, pueden dar un pequea cantidad de corriente a los dispositivos. Existen dos "estandard": de 100 mA (miliAmperios) y de 500 mA. Windows controla en funcion del dispositivo "colgado" su consumo, y si el consumo es superior al tipo de puerto, desconecta el dispositivo. Debe prestarse atencin, entonces, a ciertas camaras de video, las cuales toman "corriente" del puerto. Las camaras de video son "devoradoras" de corriente, por lo que corremos peligro que windows las desconecte. Igualmente, conozco placas madre, que a pesar de montar el chip correcto de Intel capaz de dar hasta 500 mA, fallan estrepitosamente al informar incorrectamente a windows del consumo de sus perifericos. (problemas de la bios de la placa madre y que normalmente se corrige em alguna revision de la bios) *** Y con esto cerramos el capitulo (por ahora) dedicado al hardware y las inicializaciones que efectua la bios sobre l en el momento en que "pulsamos el boton de encendido de nuestro PC". Igualmente hemos visto las posibles parametrizaciones que podemos hacer del hardware a traves de la bios. A partir de ahora, vamos a entrar con el "software", es decir una vez que la bios a inicializado los componentes hardware y empieza a construir ciertas tablas de interrupciones y parametros en la memoria del PC, para a continuzacion "buscar" un disquete o un disco duro con el sistema operativo y cargarlo en memoria. PREPARACION DE LA CARGA DE UN SISTEMA OPERATIVO Bien llegados a este punto, suponemos que la bios ya ha inicializado todos los dispositivos de la maquina. Asignado las correspondientes IRQs y recursos a los dispositivos y ahora va a proceder a cargar el sistema operativo.

30

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Lo mas normal es que intente su carga desde un disquete primero. Si esta carga falla, lo intenta desde el primer disco duro. Hay que matizar, antes de continuar, que esto es configurable en la bios de la maquina. Lo comentado en el parrafo anterior es la opcion por defecto de casi todas las bios, y matizando precisamente en esta opcion, mi consejo es precisamente desactivar el intento de carga desde disquete en la bios. Casi todas las bios, permiten cambiar la sequencia de arrancada de A,C (es el defecto) a C,A o bien C only. Las ventajas que tenemos con esto son: 1) Se iniciar la carga mas rapidamente ya que no ir a buscar a disquete. 2) No tenemos el riesgo de habernos dejado un disquete en la maquina con un virus del boot. Si lo tuviesemos e intentase arrancar desde el disquete aunque no lo consiguiese, ya nos habra infectado el disco duro. Vamos a ver primero, precisamente la carga (el inicio de la carga) desde disco duro. Luego veremos una variante de este metodo de carga, que coincide precisamente con el arranque estandard desde un disquete. Para ver la carga desde disco duro, debemos conocer primero como est logicamente particionado el disco. PARTICIONES EN UN DISCO DURO Bien, por definicion un disco duro permite hasta 4 particiones. No puede tener ms y la explicacion, proviene del diseo del sector de boot del disco duro. Este sector de boot, se le llama tambien MBR (Master Boot Record). Dicho sector que ocupa siempre la misma posicion fisica en todos los discos duros (cabeza cero, cilindro cero, sector 1), tiene un diseo fijo. Todos los sistemas operativos tienen un FDISK o similar, que "sabe" crear en vacio este sector y ademas lo hace automaticamente si el disco est nuevo (recien comprado). Todos los sistemas operativos, lo crean exactamente igual. Recordad que el tamao de un sector es unicamente 512 bytes. La estructura de dicho sector, es un mini-programa y una pequea tabla de 4 elementos. Cada elemento de la table, tiene los datos de cabeza, cilindro, sector de donde empieza una particon, de donde termina, el tipo de particion (hay unos codigos para FAT 16, FAT 32, Linux, NTFS, primaria, secundaria etc...), y una marca de cual es la particion "arrancable". El mini-programa de este sector, lo unico que sabe hacer es leer dicha tabla, buscar si existe una particion "arrancable" y si existiese, va a la posicion del cilindro, cabeza, sector de comienzo y all carga en memoria el primer sector que encuentra y lo ejecuta. Este nuevo sector es precisamente el "boot" de la particion (no confundirlo con el MBR, o sector 2 "boot" del disco que hemos citado anteriormente). Este ultimo "boot", el responsable de crearlo es el "format". Y el responsable de la creacion de las particiones es el FDISK (en sistemas Microsoft) Entonces, retomando un poco el titulo de estos articulos, la bios lo que hace es cargar en memoria el MBR del disco duro (en la direccion 7C00 hexadecimal) y cede el control a dicho programa. Este se realoja en otra posicion de memoria, busca la particion "activa" o "rrancable" y carga en memoria su sector de "boot", tambien en la direccion 7C00 y le cede control.
31

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Pero antes de continur con esto, merece la pena que echemos una mirada al sector de particiones o MBR. EL SECTOR DE PARTICIONES El llamado sector de particiones es creado por FDISK en su primera llamada (con un disco recien adquirido y sin preparar) o cuando ejecutamos el comando FDISK /MBR. Es el primer sector del disco duro (cabeza 0, cilindro 0, sector 1). Este es el sector que siempre arranca la BIOS primeramente antes de cargar ningun sistema operativo. La bios lo carga en la poscion de memoria 0000:7C00 siempre que no encuentre un disquete en la unidad A:. Si los dos ultimos bytes de los 512 de este sector contienen el codigo 55h,AAh (hexadecimal) considera este sector como ejecutable y comienza la ejecucion de programa en el primer byte de ester sector una vez se ha cargado en la posicion de memoria anterior. El codigo de programa que hay en este sector de arranque, tiene como tarea el reconocer la particion "activa" y con ello, el sistema operativo a ejecutar, cargar su sector de arranque y comenzar la ejecucion del codigo de programa que all est contenido. Ya que este codigo de programa, por definicion, se ha de encontrar en la posicion de memoria 0000:7C00, el codigo de particion, primeramente, se desplaza a la posicion de memoria 0000:0600 y con ello deja espacio para el sector de arranque. Direccion +000h +1BEh +1CEh +1DEh +1EEh +1FEh Contenido Codigo de la particion Tipo Codigo

1 entrada en la tabla de particiones 16 Bytes 2 entrada......... 3 entrada......... 4 entrada......... Identificacion AA55h 16 Bytes 16 Bytes 16 Bytes 2 Bytes

Longitud= 200h = 512 Bytes. Veamos cada entrad de 16 Bytes que define una particion, que es lo que contiene: Direccion Contenido +00h Estado de la particion 00h = Inactiva 80h = Particion de arranque +01h Cabeza de lectura/escritura donde comienza la particion.
32

Tipo 1 BYTE

1 BYTE

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

+02h

Sector y Cilindro donde comienza la particion (formato WORD - palabra)

2 BYTES

+04h

Tipo de particion 00h = Libre 01h = DOS con la vieja 12-bit FAT 02h = XENIX 03h = XENIX 04h = DOS FAT 16 05h = Particion extendida 06h = Particion DOS 4.0 > 32 Megas DBh = Concurrent DOS .... etc

1 BYTE

+05h

Cabeza de lectura/escritura donde termina la particion.

1 BYTE

+06h

Sector y cilindor donde termina la particion.

2 BYTES

+08h

Distancia del primer sector de la particion (Sector de arranque)

4 BYTES

+0Ch

Numero de sectres de esta particion

4 BYTES

Longitud = 10h = 16 Bytes Luego las funciones del programa de boot (MBR) del disco duro son: 1) Localizar el sector de arranque de la particion activa, para esto se recorre las 4 entradas de las 4 posibles particiones para ver cual es la activa. 2) Posicionar la cabeza de lectura escritura en dicha particion. 3) Volver a cargar los 512 primeros bytes de esa particion en memoria y ceder el control (este es el verdadero sector de arranque del sistema operativo. En el caso de MSDOS o WINDOWS, es creado al dar un FORMAT a la particion) PARTICIONES. SU SIGNIFICADO Y SU CREACION

33

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Una particion, no es ni mas ni menos que reservar un "trozo" (o todo) del disco para contener un sistema operativo o datos. La manera de crear / borrar paticiones bajo MsDOS (o en los sistemas operativos de microsoft), es mediante el comando FDISK. * La primera pregunta que nos realiza FDISK es si queremos soporte para grandes particiones (por defecto viene activada la letra "S" en windwos 98). Esta pregunta a lo que realmente se refiere, es que si decimos "S", la particion que vamos a crear en ese momento, ser FAT 32. Si decimon que "N", la particion a crear ser FAT 16. Al contrario de lo que cree mucha gente, no es en el FORMAT en donde se le dice en tipo de FAT, sino justo en el momento de crear la particion. Antes de continuar con las particiones, vemos que hemos introducido un concepto: FAT 16 y FAT 32. Vamos a hablar un poco de ellas. FAT 16 y FAT 32 Bien, imaginemos que ya tenemos un "pedazo" de disco. Imaginemos ahora que queremos guardar all archivos. de que manera "fisicamente" puede hacerse, para ser capaces de almacenarlos y recuperarlos rapidamente?. Se admiten ideas...... Bueno, los primeros programadores del MsDOS, de los cuales heredamos el actual windows, tuvieron que "disear" un sistema de archivos... El diseo, quiz no sea el mejor (seguro que no), pero funciona y por suerte o por desgracia lo hemos heredado. Pensemos un poco.... como lo disearon? Pues mas o menos razonando de la siguiente manera: 1) Evidentemente la manera mas rapida de acceder a un archivo, siempre es si tenemos un "indice" a donde est ese archivo. 2) S tenemos un "indice", debemos guardarlo siempre en el mismo sitio para que el sistema lo busque rapidamente. 3) Ademas, de alguna manera, deberemos ser capaces de buscar rapidamente sitios no utilizados en el disco para poder grabar un archivo nuevo. 4) Lo mejor sera tener numerados todos los "pedacitos" del disco. Sabemos "por diseo" que la minima cantidad que entiende un controlador de disco son 512 bytes. Es decir se grabar de 512 en 512. 5) Pero 512 es poco. por qu no agrupamos pequeos grupos de 512 bytes?.Correcto. Pues tenemos que dar un nombre a esta "agrupacion". Y se decidi darle en nombre de "cluster". Ya veremos cual es el tamao mejor. 6) Ahora bien, si tenemos "cluster". no sera mejor tenermos en un indice tambein al inicio del disco para saber si est libre o ocupado?. Vale, pues parece correcto. Pero como esto es delicado por si acaso, vamos a tener 2. El original y otra copia de l.

34

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

7) Bueno ya tenemos un indice para tener los archivos. Vamos a llamarle "Directorio principal". Tambien tenemos unos pequeos indices o tablas que nos indican si un "cluster" est libre o ocupado. Vamos a llamarle FAT (File Allocation Table, o "tabla de asignacion de archivos"). 8) Y como podemos ahora guardar un archivo. A ver que nos hace falta saber de un archivo?. Pues, "Su nombre", "la fecha de creacion", "la fecha de modificacion", en que "cluster" comienza, su tamao en "bytes", y de paso, vamos a ponerle tammbien "atributos". Del tipo "rchivo", "Oculto", "Sistema", "Solo lectura".... Bueno, pues todas estas caracteristicas comunes las guardamos en el "directorio". 9) Y ahora su contenido. Hemos dicho que en el directorio est el numero del "cluster" en donde comienza el archivo. Como lo hemos buscado?... Bien hemos hablado de la FAT. La FAT en principio podra ser simplemente un bite por cada cluster del disco, al inicio del proio disco, que nos dijese 1 o 0 para saber si est libre o ocupado. Pero que tal si utilizamos esto para algo ms?. Vamos a utilizarlo. 10) y si cada "entrada" en la FAT, en vez de ser de 1 bite, con contenido uno o cero, lo definimos de "n" bites de tal manera que tengan un cero si est libre. Pero si est ocupada, que su contenido sea distinto de cero pero puede ser perfectamente el numero del siguiente cluster que utiliza el fichero, en el caso de utilizar mas de un cluster. Y ademas, si es el "ultimo" cluster del fichero, pues podemos ponerle una marca. Por ejemplo todo a "unos" binarios. 11) Parece que encaja. Entonces para grabar un archivo nuevo, primero buscamos un hueco en el directorio. All grabamos su nombre y sus datos de fecha, atributos, tamao, etc. Ahora vamos a la FAT. La recorremos buscando una posicion que tenga "ceros". Esto nos indica que ese cluster del disco estar vacio o se puede utilizar. Pues nos guardamos dicho numero en el directorio, y asignamos todos a unos binarios en esa posicion de la FAT. Igualmente guardamos en el cluster fisico del disco el primer pedacito de nuestro archivo. Ahora miramos si el archivo ocupa mas tamao de un cluster. Si es as, continuamos recorriendonos la FAT para buscar el siguiente "hueco" a ceros. Cuando lo encontremos, en la posicion ANTERIOR que habiamos grabados unos binarios, le ponemos la direccion de este nuevo "hueco" y a este hueco le llenamos con unos binarios (y grabamos en ese cluster, el segundo pedacito de nuestro archivo). Y as continuamos hasta el final del archivo. 12) que estamos haciendo con lo anterior?. Facil: crearnos una "lista" de apuntadores al disco. Supongamos, que el tamao del cluster es 4 Kbs. Supongamos que cada entrada en la FAT es de 16 bites y recordad que el numero maximo en binario que puede tener con 16 bites es 2 elevado a 16, es decir, desde cero a 65535. Con la suposicion anterior, vamos a ver como guardariamos un archivo de 7150 bytes. 12.1) Primero se busca un hueco en el directorio. Una vez encontrado recorremos la FAT de 2 bytes en 2 bytes (16 bites = 2 bytes). Imaginemos que encontramos "cero" en la posicion 124 desde el inicio de la FAT. Como vamos de 2 en 2 bytes, indica que el "cluster" numero 64 del disco est libre. 12.2) Entonces guardamos el numero 64 en el directorio. Grabamos unos binarios en esa posicion de la FAT, y en el cluster 64 real del disco grabamos los 4 primeros Kbs del archivo. 12.3) Como el archivo tenia 7150 bytes y hemos guardado 4 Kbs, quiere decir que para guardar el resto, debemos guardar otro pedacito de 4 Kbs. Entonces, realizamos la secuencia definida en 12.1)

35

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

es decir buscamos el siguiente hueco, Por ejemplo el 250 (esto indica el cluster 125). Guardmos el numero 125 en la posicion anterior de la FAT en donde habiamos guardado unos binarios, ponemos unos binarios en la posicion actual y guardamos otros 4 Kbs, en el cluster real 125 del disco. 12.4) Si nos fijamos, ha quedado la lista: 64->125->unos binarios (o marca de fin). Y ademas hemos "utilizado" 8 Kbs fisicos del disco, cuando querimos guardar unicamente 7150. Por tanto se deperdicia un espacio. Logicamente a mayor tamao del cluster, mas espacio podriamos perder..... 13) Pues lo que acabo de describir es el funcionamiento de la FAT 16. Se le llama 16 porque utiliza 16 bites para cada "apuntador". Realmente en el proceso anterior que hemos supuesto que el tamao del cluster era 5 Kbs, esto no es verdad. como calcula el sistema operativo cual va a ser el tamao del cluster?. Bien, tal y como definimos antes, sabemos que solo podemos tener hasta 65536 pedacitos. Ademas sabemos el tamao total de la particion. Pues el sistema divide el tamao en Kbs entre 65536. El resultado lo redondeamos hacia arriba a un numero que se multiplo de una potencia de dos. O sea a 2, 4 , 6, 16, 32.... y el numero que nos salga es el tamao del cluster. Se consider que para no perder mucho espacio, se debria limitar el tamao maximo del cluster. Y se defini as que el tamao maximo del cluster debia ser 32 Kbs. Por tanto 32 Kb * 65535 maximos posibles cluster, nos d la cantidad de 2 Gigas maximo. Por tanto la particion maxima que podemos tener en FAT 16, est limitada a 2 Gb. Y ahora la FAT 32. Simplemente y debido a la limitacion anterior, se ampli el tamao de fat a 32 bites (o 4 bytes). Con esto el numero maximo que cabe, ya no es 65535, sino 4.294.967.295 y como el tamao maximo de cluster se define aqu en: 16 Kbs, entonces el tamao maximo del disco sera: 68.719.476.736 es decir 68000 Gigas (o lo que es lo mismo 68 Teras). CONSEJOS UTILES (Y NECESARIOS) * Recordad que tal y como hemos comentado antes, un disco soporta 4 particiones maximo. Como consejo, se debe seguir esta secuencia (IMPORTANTE): 1) Arrancar con la tecla CTRL pulsada y seelccionar "Solo Simbolo del Sistema), o bien arrancar con el disco de inicio de win98. Es decir en modo MsDOS "puro". 2) Crear o borrar una particion con FDISK 3) Inmediatamente despues, salir y reiniciar el ordenador (boton de reset). Aunque parezca una tonteria, es importante. Sinoi lo hacemos as puede que la particion no sea creada correctamente. TIPOS DE PARTICION Habiamos hablado de dos posibles tipos de particion: Promaria y Extendida (o secundaria). Es simplemente un "marca". Pero una marca muy importante, ya que el sistema operativo lo va a hacer caso.

36

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

En el caso de los sistemas operativos de Microsoft, unicamente nos deja crear una particion primaria y una particion "extendida". El disco de arranque (el C:) del sistema operativo, debe tener obligatoriamente una particion primaria. El propio FDISK, al ser la particion primaria del C:, la deja igualmente marcada como "arrancable". Ademas, estos sistemas operativos, permiten a su vez, el volver a partir la partcion extendidad en otros pedacitos. Por cada "pedazo", el sistema le asignar una letra de disco. cual?. Bien esto es IMPORTANTE, si tenemos mas de un disco. El sistema se recorre todos los discos buscando particiones primarias en TODOS (repito). En este primer proceso ignora las extendidas. Por cada particion primaria que se encuentra, le asigna una letra consecutiva de disco. C:, D:, etc.... Cuando se ha recorrido TODOS los discos, ahora empueza a busczar particiones extendidas, empezando otra vez desde el primer disco. Cuando las encuentra, continua asignando letras a todas las "subparticiones" dentro de cada particion extendida que se encuentre. ** Para que nos puede ser util lo anterior?. Facil. Imaginemos que tenemos 2 discos. Ademas que al primer disco le queremos tener "partido" en dos, y ademas queremos "entero" el segundo disco. Y ademas, queremos que el primer disco fisico, tenga las letras C: y D:, y el segundo la E: Pues bien, si creamos en el primer disco una particion primaria y una extendida, y ahora en el segundo creasemos una primaria, lo anterior no podra ser, ya que por los razonamientos anteriores, se recorre primero todas las particiones primarias. Por tanto a la del primer disco, le dara la C:, ahora va al segundo disco. Como tiene una primaria, le dara la D:, y ahora empieza con las secundarias, y por tanto a la particion extendida del primer disco, le daria la E:. Esto no es lo que queriamos. Repetir el ejercicio anterior, suponiendo que en el segundo disco, la particion (unica) creada, en vez de primaria es secundaria. Vereis como "sale" lo que queriamos hacer. FDISK * La primera pregunta, a "compatibilidad para discos grandes", realmente est camuflada. Lo unico que nos quiere decir, es que lo que vayamos a crear en dicha sesion, como lo queremos: FAT 16 o FAT 32. Si decimos que "S" a esa pregunta, la partcion que creamos en ese momento ser FAT 32. Si decimos que "N", ser FAT 16. * Recordar que SIEMPRE, una vez creada una particion, hay que salirse de FDISK y reiniciar el ordenar. SIEMPRE (insisto). Basicamente continene 5 funciones. 1. Crear una particion o una unidad logica de DOS 2. Establecer la particion activa 3. Eliminar una particion o unidad logica del DOS 4. Mostrar informacion sobre la particion

37

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

5. Cambiar la unidad actual del disco duro Antes de hacer nada, debemos saber que nada mas arrancar el FDISk, este est "apuntando" a nuestro primer disco fisico. Si queremos operar sobre otro disco, lo primero sera cambias la unidad de disco (opcion 5). Cuidado con esto, ya que por error podriamosm por ejemplo, borrar una particion de un disco, creyendo que estamos en otro disco..... y si hacemos esto, *no* hay marcha atrs. * La opcion numero 1). nos permite crear una particion primaria, una extendida o bien "dentro" de la extendida, crear unidades logicas (es decir realmente crear "subparticiones" de dicha extendida como si esta fuese un nuevo disco. Las particiones primarias, tienen una marca que le indica al sistema si es "activa" (arrancable). Evidentemente la particion primaria correspondiente a nuestro primer disco fisico, debe estar "activa" (opcion 2). En principio, esto no debe preocuparnos, ya que el propio FDISK, al crear la primera particion del primer disco, siempre la pone la marca de "activa". De todas maneras, saber que existe dicha opcion, por si acaso en algun momento nuestro sistema no arranca. La opcion 2), solo pone la "marca". No es "destructiva", es decir, no hay perdida de datos. * La opcion 3) corresponde a borrar una particion. O bien borrar unidades logicas dentro de una particion extendida (sub-partiones). Mi consejo es siempre el mismo. Si borramos y deseamos crear una nueva, lo primero, borrar y debemos salir y reiniciar la maquina, luego volver a entrar y crear la particion que queriamos. NOTA: (para quien tenga ademas dispositivos SCSI). Recordar que le FDISK unicamente las unidades a las cuales la bios les ha asignado la INT 13 de acceso a disco. Las bios (todas) por diseo, unicamente asignan dicha interrupcion a los 8 primeros discos que se encuentran. Por tanto, el FDISK est limitado a esos 8 primeros discos ("discos" fisicos). Esto no causa Problemas a uien tenga unicamente unidades IDE, ya que estas estan limitadas a 4 posibles discos. Bien en el caso de tener mas de 8 discos fisicos, para "particionarlos" con FDISK, se hace necesario "quitar" alguno para que el nuevo disco entre en los limites de los 8 anteriores. Particionarlo, y luego volver a poner las unidades quitadas. Otra solucion sera utilizar herramientas de terceros para particionarlos. (normalmente las utilidades que nos sumnistran con las tarjetas SCSI, suelen tener un software de este tipo, debido a que son conscientes de esta problematica). * Conocemos ya un poco de FAT 16 y FAT 32, y ademas hemos visto las particiones y como crearlas. Ahora que analizar un poco cual es la mejor de dichas opciones. Existe mucha discusion sobre el tema y entiendo que es debida a una mala informacion (o desinformacion) por parte de Microsoft al anunciar la FAT 32. Los programas por ejemplo, de instalacion de windows 98, nos dicen que nuestro sistema ir un 33% mejor. Esta frase es totalmente incorrecta. La frase "real" debera ser: "puede ahorar hasta un 33% de espacio en disco, penalizandose (ligeramente, dependiendo del sistema) los tiempos de acceso a disco". Vamos a ver esto ultimo con detalle. FAT 16 y FAT 32: VENTAJAS E INCONVENIENTES * A astas alturas supongo que tenemos "asimilado" un poco los capitulos anteriores. Es necesario el haberlo intentado al menos (s que me explico muy mal, y menos sin una "pizarra" para dibujar, pero al menos se debe intentar comprender.....). Por tanto empezemos a "pensar" un poquito:

38

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

1) La FAT es importantisima. Se utiliza para todo. Es el "indice" de cmo estn los archivos en el disco duro. Tanto para leer un archivo o para grabarlo, se hace necesario "varios" accesos a la FAT. 2) Y ademas es peligrosa, ya que si se daa perderemos informacion. 3) Por tanto el sistema operativo "intenta" tenerla en memoria siempre para ahorrar accesos a disco (debido al punto 1). Y ademas una vez que se "actulice" por la grabacion de un archivo, intenta escribirla inmediatamente a disco (debido al punto 2). ** El punto 3) nos implica varias cosas. Pensemos un poco que tamao real tiene la FAT?. Recordemos que la FAT 16 tiene un maximo de 65535 entradas cada una de 16 bites (2 bytes). Es decir, tiene un tamao maximo de 128 Kbs. Como existen 2 FAT por seguridad, es un tamao maximo de 256 Kbs. Totalmente aceptable para tenerlo en memoria y actualizarla a disco en el momento en que es actualizada en memoria. Pero y en FAT 32?... pues muy mal: un disco tipico de 3,2 Gb, tiene 800.000 entradas en la FAT (en FAT 32). Y como es FAT 32, son 32 bites (4 Bytes). Es decir en total 3,2 Megas y por dos copias de la FAT son: 6,4 megas que el sistema intenta tener en memoria para no penalizar los accesos. Y ademas si actualizamos un fichero, intenta escribirla inmediatamente en disco. ** CONCLUSION: A) PENALIZACION 1) Se utiliza bastante mas memoria real para FAT 32 que va en detrimento de la memoria "ejecutiva" de programas. 2) Se utiliza mas CPU en la busqueda en memoria de las entradas en la FAT (es dirente recorrese "muchas" veces una tablita de 65000 elementos maximo, que una tabla de casi un millon de elementos (al menos y dependiendo de que disco tengamos) 3) Se penaliza cada actualizacion de un archivo ya que hay que reescribir todo o parte de la FAT en disco. Y la FAT 32, es "bastante" mas grande. 4) El disco C: no puede ser FAT 32, si deseasemos instalar ademas un sistema operativo diferente de win98. Por ejemplo NT 4 obliga a que el disco de "boot" del sistema sea FAT 16, independientemente de donde instalemos el NT (es decir independientemente de si la particion real de instalacion es FAT 16 o NTFS). B) VENTAJAS 1) Se puede superar el limite de 2 Gb por particion. 2) Como el tamao de "cluster" es menor, "ahorramos" una cantidad de espacio en disco, que en este caso, y en un disco tipico de 2 Gb, s que puede llegar al famos 33% anunciado por Microsoft. (depende del numero de archivos este ahorro de espacio). ** Las medidas tipicas de penalizacion en un disco, FAT 32 frente a FAT 16 con una CPU PII 400, on aproximadamente del 7% de perdida de rendimiento en FAT 32.

39

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

NOTA: Existe una manera de "ver" cuanto espacio tenemos "perdido" en el disco por culpa de los "cluster" de gran tamao. Es sencilla: a) Abrimos una ventana msdos b) tecleamos: dir \*.* /s/v Esperamos a que finalice, y nos mostrar los bytes utilizados por los archivos y los bytes "asignados" a esos archivos. La diferencia de tamao es el espacio "perdido" que "casi, casi", podremos recuperarlo con una FAT 32. **** Es interesante, ahora que hemos introducido un poco la FAT, particiones y discos, retomar "Desde que pulsamos el boton de nuestro PC...." en el punto en que la bios habia finalizado el reconocimiento, asignacion de IRQs, e inicializacion del hardware. Hemos introducido tambien, que la siguiente tarea era "cargar" el MBR del disco, que realmente es un mini-programa, y le haba cedido el control a dicho programa. Pero es importante saber, que hace la propia bios, inmediatamente antes de iniciar dicha carga. Como ha preparado la memoria real (por debajo del mega, ya que los sistema intel, arrancar siempre en modo real tal y como vimos anteriormente), para que el sistema operativo, el que sea, sea capaz de comenzar a hacer algo...... LA BIOS. PREPARACION DE LA MEMORIA REAL PARA INICAR UN O.S. (esto hay que leerlo despacio... tiene su "miga", y si veis que es un poco lioso, la culpa es unicamente mia. Es un tema dificil de explicar, y tampoco es imprescindible para continuar con estos capitulos. Pero por "culturilla" lo cuento aqu). * Bien, la bios ademas de la inicializacion del hardware, se encarga de crear una serie de estructuras en memoria y deja ademas en ella, las rutinas "minimas" para escribir en pantalla, manejar el teclado y acceder a disco. Mas adelante veremos por ejemplo, que "cisco" se tiene que montar, solo para pulsar la letra "A" y que esta aparezca en pantalla..... Aunque el procesador en modo real y en MsDOS no es multitarea, si pensamos un poco en la que est haciendo, si que "parece" que est hacindo multitarea. Pensar que mientras estamos tecleando algo, no solo lo muestra por pantalla, sino que a la vez, por ejemplo, est actualizando el "reloj" del sistema.... este es el ejemplo ms sencillo. Un ejemplo que realmente sorprendi a todo el mundo de la programacin, fu en los primeros aos del MsDOS, cuando Microsoft sac un programa residente "print". Recordad que en esa epoc ademas, las impresoras iban muy lentas.... pero maravillosamente con el comando print empezaba a imprimir un archivo, y dejaba "libre" la pantalla el teclado, con lo cual podiamos seguir haciendo cosas. Y la impresora mientras tanto, iba sacando hojas..... Esta tontera que ahora no nos llama en absoluto la atencin, caus furor en el mundo de la programacion. Inmediatamente a "destripar" el programa para ver dos cosas: 1) Como se creaban los residentes en MsDOS (no estaba "documentado") 2) Como hacer o "simular" una multitarea.
40

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Ahora cualquier programador, sus primeros "pinitos" es construir residentes. No tiene ningun merito. Est ya perfectamente documentado. * Pero la pregunta es como podemos hacerlo?. Relativamente facil. A base de manejar interrupciones (interrupciones de "software", no de hardware como las que vimos al principio de estos capitulos. Ms adelante veremos estas interrupciones). Me explico: por definicion, una interrupcion, "interrumpe" el programa que se est ejecutando y cede control a una rutina. En principio la que queramos. Entonces, sabemos que hay interrupciones cada cierto tiempo. Por ejemplo existe una interrupcion que se activa 11 veces por segundo y que se encarga de mantener el reloj de nuestro PC. Si fuesemos capaz de que esa rutina de actualizcion del reloj, "ademas" de eso, por ejmplo, enviase una linea a la impresora.... pues ya tendriamos activo el "print". Genial idea. Este es el concepto basico de multitarea: reparto de tiempos de una CPU entre varias tareas. Y la idea, para su epoca, no estuvo mal.... Pasemos ahora a ver las interrupciones "software". INTERRUPCIONES SOFTWARE En el diseo del primer procesador Intel de la serie X86 (de los cuales derivan por compatibilidad los Pentium actuales), se pens en implementar por hardware dentro del procesador de una serie de interrupciones "software", que cada vez que se activasen se cediese el control a cierta rutina. En dicho diseo, se definieron 256 posibles interrupciones. Y ademas la intruccion maquina INT para provocar una interrupcion. Por deficion, entonces se reserv el area de memoria mas "baja" de la maquina, es decir desde la direccion "cero" para contener las direcciones de esas 256 posibles rutinas (o programas que son llamados) de interrupcion. Para el mundo "real" del procesador, una direccion de memoria es un "segmento" y un "desplazamiento". Es decir 4 bytes. Por tanto 256 * 4 = 1024. Es decir de la direccion 0 a la 1024 "fisica" de la memoria de nuestro PC, se reserva para tener 256 posibles direcciones de las rutinas de dichas interrupciones. La manera de invocarlas por software en INT 21h (por ejemplo). Esto hace que el procesador salte a la direccion 21h * 4 y all se encontrar a su vez con la direccion que apunta a la rutina que d el "servicio" a la INT 21h. Evidentemente no todas las posibles 256 interrupciones estn ocupadas. No son necesarias tantas. Por tanto, las no ocupadas apuntan a una instruccin IRET (volver desde interrupcion). Es decir: no hacen nada. Pero est la posibilidad de que nosotros, en nuestro programa, "colguemos" en vez del IRET, una rutina nuestra que haga lo que queramos.... Bin, ppues lo que la bios hace, es "disparar" unas interrupciones "software" cada vez que sucede una interrupcion "hardware". Recordar que habia 16 IRQs (del la 0 a la 15).

41

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

La bios, lo que hace, es que cada vez que suceda una IRQ 0 a 7, dispara una interrupcion 50 a 57h "software". Igualmente las IRQs 8 a 15, disparan de la 70 a la 77h. Por tanto esas interrupciones software, debern contener la "direccion" del programa o driver que va a manejar dicha IRQ. * Veamoslo con un ejemplo real. Recordad que habios dicho al ver las IRQs que la IRQ 1 era la de teclado. Entonces que sucede al pulsar una tecla?. Bien lo primero que sucede es una IRQ 1. Esto interrumpe lo que est haciendo el procesador y tal y como acabamos de comentar, esto disparar la interrupcion software 51h. Esta interrupcion software, entonces lo que provoca es que el procesador, busque en la direccion de memoria 51h * 4, y pega un salto a la zona de memoria que est apuntada por el contenido de esa direccion. Se supone que en esa zona de memoria "debe" haber un programa, o una rutina que se encarga de analizar la tecla pulsada y ademas de "sacarla en pantalla". Efectivamente, esa rutina existe, y es la propia bios quien la ha puesto all. Realmente el tema es un poco mas complicado. La INT 51h lo que hace a su vez, es invocar a la INT 09h. (tambien software). Esta, mediante los comandos IN vistos anteriormente, lee del puerto de teclado. All puede saber la tecla pulsada y no solo eso, sino admeas si tenemos a la vez pulsada otra tecla (MAY, CTRL, ALT), y ademas si en ese momento se est pulsando o "soltando" la tecla. Es decir realmente al pulsar una tecla, suceden 2 interrupciones una en le momento de pulsarla y otra en el momento de soltarla -y otra ms por cada ciclo de tiempo que la tenemos pulsada-. Una vez analizada la tecla pulsada, hay que sacarla en pantalla. Bien, el "servicio" de video, lo ha definido tambien la bios, en la interrupcion 10 h. Por tanto, la INT 09h lo que hace una vez analizada la tecla pulsada en cuando tengamos disponible ya el caracter, se emite una INT 16h que a su se emite una INT 10h. Y todavia es mas complicado. Si pulsamos un CTRl-G d un "pitido" el altavoz. Por lo tanto ademas, debe analizar dicha rutina, si es algun caracter especial como el anterior. Si lo fuese, ahora se deben emitir las correspondiente interrupciones tambien software para "activar" el altavoz. Esta activacion, ser tambien mediante comandos IN y OUT a unos puertos que son los correspondientes al "timer" para generar una onda de sonido hacia el altavoz del PC. *** Todos un verdadero lio no?. Bien, el encargado de situar estas rutinas "basicas" y de generar la tabla de interrupciones es la bios. Ademas, pensemos que lo hace "casi" instantanemanente nada mas encender el PC. Si no lo hiciese, no podriamos ni "ver" las letras en la pantalla. De echo, hasta que no ha definido la INT 10h de video, no podemos ver nada en pantalla. Y hasta uqe no estn activas la INT 09 y 16h, no se podr pulsar el teclado. Y vemos que eto ultimo es casi instantaneo!!!!. Buen cisco se monta la bios nada mas encender nuestro PC, no? RESTO DE RUTINAS EN MEMORIA REAL

42

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Al igual que define los accesos a pantalla y teclado, la bios nos d soporte "minimo" para acceso a disco. INT 13h, etc.... Cuando se emite una interrupcion, se le pasan parametros (contenidos) en los registro generales del procesador. Por tanto cada INT, por decirlo de alguna manera, admite "parametros" o ordenes especificas de que hacer. Por ejemplo, la de acceso a disco, espera, en un regustro general, si es en escritura o en lectura. Y en otros registros generales, el numero del cilindro, la cabeza y el sector que queremos leer. Y por supuesto, la direccion de memoria en donde queremos que nos deje el dato. Y ciuantos "bytes" hay que "traer" del disco. Lo importante en esta parte, que acabamos de ver, es que aunque "todavia" no se ha cargado nada del sistema operativo, la bios, ya ha sido capaz de deajrnos perfectamente preparado nuestro hardware y nuestra memoria con las rutinas basicas para empezar a hacer algo. Y ahora viene ese "algo". Hay que empezar a cargar el sistema operativo. Empieza la busqueda...... CARGA DEL SISTEMA OPERATIVO La bios ha terminado sus tareas y ahora decide cargar el sistema operativo. Empieza la busqueda por las unidades de busqueda que tenga definidas en los parametros de la bios. Por defecto, suele ser A,C. Es decir, intenta cargar desde disquete y si no puede lo hace desde el disco C:. Para ello, lee el primer sector fisico del disco: cilintro 0 cabeza 0 sector 1. Lo carga en memoria y le cede control para su ejecucion. Vamos a imaginar que el sistema que queremos cargar, es el windows 98. Bien, windows 98 comienza su carga desde un MsDOS, por tanto lo primero que se cargara sera un MsDOS. O bien, tambien podemos cargar un MsDOS desde el disco de inicio de win98, o desde un disquete formateado con el parametro /S (es decir, contiene el "sistema"). ARRANQUE DESDE DISQUETE Supongamos ahora que la carga es desde disquete. El sector de boot del disquete (el cual es creado con el format), contiene (si ha sido formateado con el sistema - parametro /S -), un mini programa que lo unico que sabe hacer es buscar un archivo oculto en esa unidad de disco, llamado "IO.SYS", cargarlo en memoria y cederle control. * EL IO.SYS inicia la carga y ejecucion. Lo primero que busca es otro archivo oculto en la misma unidad llamado MSDOS.SYS. Este archivo no es un archivo de ejecucion, sino un archivo de parametros del sistema que en cualquier momento podemos ver (no es aconsejable tocarlo), con un editor. Mas adelante veremos el posible contenido de este archivo. * A continuacion, el IO.SYS, busca en el directorio raiz de esa unidad, un archivo llamado CONFIG.SYS. S el archivo existe, lo lee y ejecuta las instrucciones que lleva dicho archivo.

43

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Basicamente el config.sys, lo que puede contener son parametros del propio sistema y sobre todo, carga de drivers de dispositivo. No es obligatorio que exista. Solo si lo encuentra lo ejecuta. *A continuacion, el IO.SYS, busca el COMMAND.COM. Es decir al interprete de comandos. No es obligatorio (pero s lo mas usual), que el command.com sea el interprete de comandos. En el archivo config.sys que acaba de ejecutar previamente el IO.SYS, podria haberse cambiado este interprete, y decirle al sistema que utilice otro. * Supongamos que es el COMMAND. entonces lo carga en memoria y le cede control para su ejecucion. * El COMMAND, busca a su vez la existencia de un archivo llamado AUTOEXEC.BAT tambien en el directorio raiz de la unidad de arranque y lo lee para ejecutar los comandos que all existan. Dichos comandos, serian basicamente programas (no pueden ser ya drivers de dispositivos) y algun parmetro de configuracion (como el PATH por ejemplo) propio del interprete de comandos. Al igual que el CONFIG.SYS no era obligatorio, el AUTOEXEC.BAT tampoco lo es. NOTA: debido a que en Espaa o en otros paises distintos de USA, se utilizan tablas de codigos especiales (para los caracteres especiales, por ejemplo los acentos, la "", o caracteristicas regionales) y teclados de acuerdo con el idioma, es obligado en este caso el tener CONFIG.SYS y AUTOEXEC.BAT con las "pocas" lineas de comando que definen tanto las tablas de codigos como el teclado. Esto sera lo unico obligatorio. Todo el resto sobra y son herencias del antiguo MsDOS. Por tanto mi consejo, es no andar tocando estas cosas. Es muy facil, que windows pierda prestaciones por haber incorporado lineas indebidas en estos archivos. Incluso todavia, hay "viejos" programas instaladores, que tocan estos archivos y lo unico que hacen es daar nuestra configuracion de windows. ** Bien, si hemos arrancado desde disquete, esta habr sido la secuencia de arranque, y el sistema se nos queda en este punto. ARRANQUE DESDE DISCO DURO El arranque desde disco duro es ligeramente diferente. Lo primero, al igual que en el disquete, carga el primer sector del disco duro (cilindro 0, cabeza 0, sector 1). Pero en este caso, tal y como debemos recordar de capitulos anteriores, este sector en un disco duro es el MBR (Master Boot Record). Como tambien es un miniprograma, se carga en memoria y comienza su ejecucion. Pero este miniprograma lo unico que sabe hacer, es localizar la particion activa del disco duro (la primaria y "activa"). Una vez que la localiza, es como si ahora estuviesemos en la secuencia de arranque desde disquete que acabamos de ver. Es decir, carga otra vez, el "primer" sector de esa particion, que al igual que el primer sector de un disquete, contiene un miniprograma que ha sido generado con el format /S, que es "identico" al que tiene un disquete. Por tanto, inicia la carga del IO.SYS, y la misma secuencia de carga que la definida anteriormente. ** Es necesario, recordar de nuevo: en un disco duro, hay dos sectores de boot. Uno el MBR que ha sido creado con FDISK, y otro el "boot" de la particion, que ha sido creado con el FORMAT. Ambos son necesarios para el inicio del sistema operativo.

44

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

* Vamos a ver a continuacion, por parametros de configuracion en los tres posibles archivos de los que hemos hablado. MSDOS.SYS, CONFIG.SYS y AUTOEXEC.BAT. Pero unicamente vamos a ver en este momento los parametros de configuracion. No los posibles drivers (config) o programas (autoexec) que pueden ser ejecutados o cargados desde all. PARAMETROS DE CONFIGURACION - MSDOS.SYS ** Contiene dos secciones diferenciadas. La seccion [Paths] puede contener las siguientes opciones: HostWinBootDrv=<Disco en donde esta instalado windows> Defecto: C Proposito: Especifica la localizacion de en que disco est instalado windows. UninstallDir=<Disco de "desistalacion"> Defecto: C Proposito: Especifica la localizacion de los archivos W95undo.dat and W95undo.ini. Son los ficheros necesarios para desistalar windows cuando se ha seleccionado la opcion de parmitir desistalar en caso de una actualizacion. WinBootDir=<Directorio de windows> Defecto: Directorio donde reside windows (por ejemplo, C:\WINDOWS) Proposito: Indicar al cargador del sistema desde donde debe inicarse windows. WinDir=<Directorio de windows> Defecto: Directorio especificado en la instalacion (por ejemplo, C:\WINDOWS) Proposito: Localizacion del directorio de windows especificado durante la instalacion. La seccion [Options] puede contener las siguientes opciones, o bien pueden ser insertadas manualmente. NOTA: El valor "booleano" que aparece a continuacion, indicar un "0" para NO y un "1" para SI. AutoScan=<Numero> Defecto: 1 Proposito: Define cuando o no, Scandisk va a ejecutarse debido a un apagado de maquina incorrecto. Una opcion de 0 indica no ejecutar Scandisk. 1 indisca preguntar antes de ejecutar Scandisk; 2 indica no preguntar antes de ejecutar Scandisk, pero preguntar antes de "fijar" posibles errores si estos fuesen encontrados.

45

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

BootDelay=<Segundos> Defecto: 2 Proposito: Cantidad de segundo en los que aparece la frase "Iniciando windows" y por tanto permite pulsar F8, en windows 95. NOTA: Esta opcion no est soportada en windows 98. BootSafe=<Booleano> Defecto: 0 Proposito: Si tiene valor 1, el PC arrancar en el "modo a prueba de fallos". BootGUI=<Booleano> Defecto: 1 Proposito: Si tiene el valor 1, arrancar windows automaticamente, con el valor de 0, una vez ejecutado el config.sys y el autoexec.bat, permanecer en el simbolo del sistema. En este caso, ser necesario teclear "win" para que windows cargue la interfaz grafica. BootKeys=<Booleano> Defecto: 1 Proposito: Un valor de 1 activa el uso de las teclas de funcion (F4, F5, F6 y F8). Un valor de 0 desactiva el uso de teclas de funcion durante el proceso de arranque de windows. NOTA: Colocando BootKeys=0 sobreescribe el uso de BootDelay=n. BootMenu=<Booleano> Defecto: 0 Proposito: Colocando un 1, activa el que siempre aparezca el men de seleciion de incio. Si est colocado a 0 se debe pulsar F8 cuando aparezca la frase "Iniciando windows 95" (o pulsar y mantener pulsada la tecla CTRL en windows 98 al inicio del PC), para invocar el men de inicio. BootMenuDefault=<Numero> Defecto: 1 si el sistema se est ejecutando correctamente 3 si el sistema fall en el arranque anterior. Proposito: Se utiliza para seleccionar la opcion del menu de incio de windows que se ejecutar por defecto. BootMenuDelay=<Numero> Defecto: 30

46

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Proposito: Este valor es usado para colocar el numero de segundos que el sistema va a esperar en el men de inicio de windows, antes de arrancar automaticamente sino seleccionamos ninguna opcion. NOTE: Esta opcion no tiene sentido a no ser que la opcicion BootMenu=1 haya sido aadida en la seecion [Options]. BootMulti=<Booleano> Defecto: 1 Proposito: Un valor de 0, desactiva la opcion de "multi-boot" o arranque del "antiguo" o previo sistema operativo. Un valor de 1 activa tanto la tecla F4 como la posibilidad en el men de seleccionar la opcion de arrancar el sistema operativo anterior. BootWarn=<Booleano> Defecto: 1 Proposito: Un valor de 0 desactiva el aviso del modo a prueba de fallos al ejecutarse el menu inicio. BootWin=<Booleano> Defecto: 1 Proposito: Colocando un 1 fuerza a windows a cargarse en el incio. Un valor de 0 desactiva windows como su sistema operativo por defecto. (esto solo tiene sentido si teneiamos instalado MS-DOS 5.x o 6.x previamente en nuestro PC) NOTA: Presionando F4 invierte el defecto de arranque solo si BootMulti=1. (Por ejemplo, presionando F4 con una opcion 0, fuerza a Windows 95/98 a arrancar). DoubleBuffer=<Booleano> Defecto: 0 Proposito: Colocando un 1 activa el "double-buffering" para los controladores que necesiten esto (por ejemplo los controladores SCSI). Colocando un 2, es una opcion incondicional que activa el "double-buffering" mirando cuando el controlador es necesario o no. DBLSpace=<Booleano> Defecto: 1 Proposito: Un valor de 1 carga automaticamente el DBLSPACE.BIN. Un valor de 0 impide su carga. NOTA: Windows 95 usa o Dblspace.bin o Drvspace.bin si alguno de ellos est presente en el directorio principal de C: Para desactivar esta opcion sino tuviesemos discos comprimidos, debe forzarse un valor de 0. Por ejemplo:
47

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

DBLSpace=0 DRVSpace=0 DRVSpace=<Booleano> Defecto: 1 Proposito: Mismo sentido que la opcion anterior pero con DRVSPACE.BIN. LoadTop=<Booleano> Defecto: 1 Proposito: Un valor de 0 no permite a windows cargar COMMAND.COM o DRVSPACE.BIN o DBLSPACE.BIN por encima de los 640 Kbs. Si tenemos problemas de compatibilidad con alguna vieja aplicacion DOS, es conveniente probar a forzar un cero en esta opcion. Logo=<Booleano> Defecto: 1 Proposito: Si tiene el valo 1 hace que aparezca el logo de windows al arrancar. Con el valor 0 se desactiva el logo de windows. Un valor de cero, libera una serie de interrupciones software que pudieran causar incompatibilidades con antiguos TSR del modo DOS o incompatibilidades con cierto manejadores de memoria de terceros. Network=<Booleano> Defecto: 0 Proposito: Con un valor 1, nos paparecer la opcion "Modo a prueba de fallos con soporte de RED" como una opcion en el menu de inicio. PARAMETROS DE CONFIGURACION - CONFIG.SYS Tericamente, debemos recordar que el config.sys no es necesario. No debera existir y es una reminiscencia del antiguo MsDOS. Unicamente en paises diferentes a USA, es necesario especificar un par de lineas en l debido a las clasicas configuraciones regionales. (y esto unicamente si tenemos un teclado diferente al teclado normal utilizado en USA) Las lineas a utilizar en Espaa, deberan ser: device=C:\WINDOWS\COMMAND\display.sys con=(ega,,1) Country=034,850,C:\WINDOWS\COMMAND\country.sys Y extrictamente no es necesaria ninguna linea ms en el config. (en otros paises de America Latina, los parametros pueden variar ligeramente)
48

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

** Recordemos un poco de la historia del MsDOS y del antiguo windows 3.1. * Windows 3.1 fu el primer sistema (mejor dicho, fue la primera interface grafica sobre el MsDOS -no puede llegar a la categora de sistema operativo-), que era capaz de superar la barrera del mega. Para ello, era capaz ya de poner a trabajar al procesador en modo protegido. (Veremos este funcionamiento mas adelante). * Para ser capaz de realizar esto, necesitaba un manejador de memoria en modo protegido. Este manejador fu un standard creado por microsoft como driver de DPMI (Dos Protected Mode Interface). Dicho driver era el HIMEM.SYS * Windows 98, necesita por cuestiones de compatibilidad de la misma interface DPMI para iniciar su carga. Por tanto es necesaria, pero es opcional el declararlo o n en el CONFIG.SYS. Windows lo cargar de todas maneras. * Igualmente, aunque no est declarado en el config.sys, windows cargar el DBLBUFF.SYS. Este es un driver para suministrar un marco en memoria baja para todos los dispositivos SCSI que lo necesiten para transferencia de datos via DMA (esto se refiere a las antiguas tarjetas SCSI ISA cuya transferencia es DMA y que practicamente ya, no existen). NOTA IMPORTANTE: Ademas de lo anterior, en el antiguo MsDOS, era necesario cargar aqu todos los drivers de dispositivos de los fabricantes (y alguno del propio Microsoft que veremos a continuacion). Es importante recordar, que estos drivers ya no son necesarios en windows 98, y que si los ponemos, podemos correr el riesgo de malfuncionamiento, o lo que es peor, de perdida grave de prestaciones y velocidad dentro de windows 98. Por esto, debemos ser excesivamente cautos con este archivo de configuracin y ademas vigilar despues de cualquier instalacion ya que todavia circula mucho software muy viejo el cual tiene la "insana" costumbre de tocar sin permiso nuestro CONFIG.SYS Todos los drivers de dispositivos, se cargan con el comando DEVICE o DEVICEHIGH. Vamos a ver ahora un driver especial de Microsoft. Tambien es una vieja herencia, pero a veces nos puede resultar necesario el instalarlo para poder utilizar viejos programas MsDOS, o algun juego que requiere mucha memoria MsDOS. Me estoy refiriendo al EMM386.EXE. Para poder estudiar el funcionamiento del EMM386.EXE, es necesario repasar un poco la memoria real por debajo del mega. Es necesario tambien que recordemos lo que vimos en los primeros capitulos sobre la memoria real. A modo recordatorio, debemos tener presente que una direccion en MsDOS (debido al funcionamiento del hardware, es decir debido al funcionamiento del propio procesador de Intel en modo real), estaba formada por una direccion de segmento y un desplazamiento. El segmento en hexadecimal, podia valer desde 0000 a FFFF. Exactamente igual el desplazamiento. La manera de sumarlos era desplazando un cuarteto el segmento y sumando entonces el desplazamiento para formar una direccion real. (repasar los capitulos anteriores). Igualmente recordemos, que por diseo, IBM defini la direccion del adaptador de video en el segmento A000. Por tanto la memoria real, podia (y por degracia, todavia es as por compatibilidad) llegar desde 0000 hasta A000 (esto corresponde justo a 640 Kbs.). Es por el propio diseo de donde se encuentra el adaptador de video. Por tanto esta es la maxima memoria real
49

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

"contigua" que puede existir en el PC. Podeis verificar con la calculadora de windows que A0000 en hexadecimal son justo los famosos 640 Kbs de los que hemos oido hablar por todos los lados. Debemos recordar tambien que desde la C000 hasta la F000 (en la cual se encuentra la bios), estan en principio reservadas para otras bios de otros posibles dispositivos y tarjetas que puedan necesirtarlo. En particular la tarjeta de video tiene siempre (practicamente, aunque no es una norma), su direccion en C000 hasta C7FF. Pero...... all hay 196 Kbs. y de ellos, unicamente 32 Kbs utilizados por la bios de la tarjeta grafica. Entonces.... si no tenemos mas tarjetas que tengan bios propia, por qu no utilizar esos Kbs de memoria para meter algun driver de dispositivo?. O bien por qu no utilizarlos para que el propio MsDOS meta all sus rutinas, en vez de utilizar el espacio de los primeros 640 Kbs? Efectivamente, esta idea surgi en el MsDOS 5.0 (y superiores). Recordad que el MsDOS de windows 98, se identifica internamente con la version 7.10. ** Microsoft en el MsDOS 5.0, modific el codigo del sistema para poderse cargar todo o parte, tanto codigo como areas de datos reservadas, en dicho espacio. Y ademas dise un driver (el EMM386) para recuperar dicho espacio y poderlo utilizar incluso para cargar posibles pequeos programas que se quedaban residentes en la maquina. A esta memoria se la llamo UMB (Upper Memory Block). Antes de ver con detalle el EMM386.EXE, veamos que otras necesidades podiamos tener con respecto a ese posible "mega" de memoria. * Existi antes de la especificacion DPMI de Microsoft, la cual suministraba el concepto de memoria XMS (eXtended Memory System) o memoria Extendida, otro tipo de memoria. La memora Espandida. o memoria EMS (Expanded Memory System). Era la memoria LIM definida por el consorcio Lotus-Intel-Microsoft. Dicha memoria lo que hacia era utilizar un marco de pagina (una ventana) que apuntaba a 64 Kbs de memoria en cualquier posicion por encima del mega. Es decir en un momento determinado, al escribir o leer en ese marco de pagina, estabamos escribiendo realmente en una zona determinada por encima del mega. Cambiando simplemente una direccion en el PC, esa ventana apuntaba a otro marco de 64 Kbs, diferente al anterior. De esta manera, cambiando simplemente unas direcciones, nos estabamos moviendo en pequeos bloques de 64 Kbs por encima del mega. Esto en un principio era memoria hardware especial. Una tarjeta especial con un chip controlador. Esa memoria se direccionaba mediante la programacion del chip, cambiando la direccion de un puerto, y nos hacia ver una ventana de 64 Kbs en la direccion fisica de memoria E000 de nuestro PC, la cual se "movia" a lo largo de esa memoria EMS (o memoria LIM). Cuando se modific el procesador 8086 en sus sucesores, el manejo de memoria unicamente cambi para poder ver mas direcciones contiguas por encima del mega en el modo protegido. Es decir empez a "crecer" dicho mega. Esta memoria era contigua y por tanto muy diferente a la memoria manejada por el controlador fisico de EMS. Se decidi entonces crear un controlador "logico" EMS, el cual nos permitiese ver la "nueva" memoria ahora definida como si fuese una memoria EMS de las que acabamos de ver. Se hizo as para que los antiguos programas que necesitasen EMM, pudiesen seguir funcionando.

50

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Pues de paso.... se dot de dicha funcionalidad al controlador EMM386. ** Y por ultimo, las malas lenguas comentan que cuando se cre el primer procesador capaz de ir al modo protegido, el 80286 (los antiguos 286), algun ingeniero de intel, coment a algun tecnico de Microsoft, que si era capaz de controlar la linea A20 de direcciones del procesador, sera capaz de obtener otros preciosos 64 Kbs (realmente 64 Kb menos 16 bytes) de memoria real. Esta historia es curiosa, por lo que vamos a comentarla un poco. Curiosa en plan tecnico, por lo que pido disculpas por salirnos un poco del tema. Veamos: la definicion de las lineas de direcciones en un 8086, eran de 20 direcciones. Lineas de direcciones A00 a A19. Recordad igualmente que para obetenr una direcion real, sumando un segmento y un desplazamiento, se hacia (por hardware) aadiendo un cuarteto con contentido cero a la direccion de segmento y sumandole el desplazamiento. Es decir por ejemplo, para sumar el segmento 1234 al desplazamiento 5678, se hacia: 12340 5678 -------179B8 Y la maxima direcion que podia sumarse entonces era el segmento F000 (ya que como el desplazamiento iba desde 0000 a FFFF, de esta manera no habra "desbordamiento") Es decir: F0000 FFFF ------FFFFF (FFFFF era la maxima direccion real que podia expresarse con 20 lineas de direccion: 5 cuartetos = 20) Bien, pues Intel, le "sopl" a Microsoft, que si se utilizaba el segmento FFFF, con linea A20 activada no habra desbordamiento. Pero para esto, el software debera estar preparado. Es decir podriamos sumar: FFFF0 FFFF -----10FFEF Para esto necesitamos las 20 lineas del modo real, mas la linea 21 (la A20) para manejar el "1" que nos sobra.
51

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Si la linea A20 no est activada, entonces por ejemplo: FFFF0 00010 ------00000 nos vuelve justo al comienzo de la memoria fisica. Pero con la linea activada, esa misma suma nos d: FFFF0 00010 ------100000 es decir por encima del mega. Y as nos puede llegar hasta 64 Kbs - 16 bytes. A esta memoria se la llam memoria HMA (o HIGH). Pues ahora ya estaba relativamente sencillo. La manera de controlar la linea A20, era facil. El HIMEM.SYS de por s controla todas las lineas de direcciones. Por tanto controla esta en particular. Y ahora el EMM386, podia ser el encargado de comunicarse con el HIMEM para activar o desactivar dicha linea, tomar control de dicha memoria y suministrarsela a los programas de aplicacin. Como el "primer" programa que podia hacer uso correcto de ella, era el propio MsDOS, se procedio a modificar su nucleo (al objeto de ensearle a "sumar" direcciones de 21 bites), para poder utilizar dicha memoria. Resumiendo: EMM386 tiene (o puede tener) tres funciones basicas:
1) Control de la memoria EMS (LIM) y creacion del marco de pagina 2) Soporte a la memoria UMB. 3) Soporte a la memoria HMA (HIGH). Y de pas se le dot al EMM386 de una serie de parametros para poder controlar esta memoria. En particular, el parametro RAM suministra memoria UMB. El parametro RAM implica tambien memoria EMS (y por tanto utilizar el segmento E000 por defecto como marco de pagina). Se defini tambien la combinacion RAM NOEMS, si queremos unicamente UMB y no queremos marco de pagina. Existen ademas otra serie de parametros que se salen del contenido de este capitulo. ** Es importante indicar, que si ponemos el driver EMM386.EXE en el config.sys, entonces *SI* que es obligatorio poner primero el HIMEM.SYS en dicho archivo. ** Ademas, tambien es importante resaltar, que aunque pongamos el parametro RAM, esto solo indica que esta memoria estara disponible para programas que "sepan" utilizarla. En particular si queremos que el propio MsDOS pueda

52

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop utilizarla, se deber incorporar en el config.sys (en cualquier sitio), la linea: DOS=UMB Y por ultimo, tambien, para que el propio MsDOS pueda utilizar la memoria HIGH (HMA), se deber igualmente incirporar la linea: DOS=HIGH Ambas lineas, pueden resumirse en: DOS=HIGH,UMB (pero recordad que solo tendran sentido si tenemos el EMM386 con el parametro RAM, y esto ademas obliga a tener el HIMEM.SYS) OTROS PARAMETROS DEL CONFIG.SYS ------------------------------** Lo primero y mas importante, es recordar que NO hac falta ningun parametro en el config.sys (excepto el DOS=HIGH,RAM visto en el capitulo anterior). ** Igualmente quiero insistir en tres cosas: 1) Estos parametros unicamente tendrn efecto en MsDOS no en windows. 2) Cuando me refiero a MsDOS, me estoy refiriendo a MsDOS "puro". Las ventanas MsDOS bajo windows no se ven afectadas por estos parametros. Incluso la apertura de ficheros se hace a traves de windows en estos casos. 3) Lo que he comentado en los puntos 1) y 2), es la teoria. La practica nos demuestra, que efectivamente, si que influyen en windows: pero NEGATIVAMENTE. Es decir, jugando con estos parametros, lo unico que podemos conseguir es que windows funciones peor. Por curiosidad vamos a ver estos parametros y comentar su efecto tanto en MsDOS como en windows. ---------NOTA: Algunos de los parametros que veremos a continuacion, pueden terminar en la palabra HIGH. Esto indicar que el MsDOS lo cargar en memoria alta si tenemos activo el EMM386. Pero esto no es necesario (y ademas es contraproducente), si ademas hemos especificado el parametro DOS=HIGH,UMB que vimos anteriormente, el propio MsDOS ya cargar automaticamente en memoria alta y sin necesidad de "forzar" esta situacion. ---------ACCDATE=disco1+|- disco2+|- .... Nos guardar la fecha de la ultima vez que hemos accedido a los archivos de un disco o n (en funcion del + o del -). Este parametro no tiene efecto en windows, ya que por defecto windows nos informa de estos accesos. ---------BREAK [ON|OFF]

53

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Sirve para activar la manera de "parar" un proma MsDOS.En un programa MsDOS, pulsando CTRL-C podemos casi siempre teclear CTRL-C y pararlo. Pero el MsDOS, unicamente chequea el que hayamos pulsado CTRL-C, cuando v a escribir en pantalla o cuando va a leer desde teclado. Si nuestro programa no est haciendo ninguna de estas dos cosas en ese momento, no se parar. Si tenemos BREAK ON en el config.sys, el MsDOS tambien chequer el que pulsemos CTRL-C cuando va a leer o escribir en disco. De esta manera, aunque nuestro programa no escriba en pantalla, se supone que al menos, acceder al disco y por tanto de esta manera podremos pararlo. No tiene ningun efecto en windows, y este parametro no ser pernicioso tampoco para windows. Es conveniente tenerlo. NOTA: En cualquier ventana MsDOS, podemos teclear BREAK y veremos la situacion en la que estamos. ---------BUFFERS=n[,m] BUFFERSHIGH=n[,m] Assigna memoria "real" para contener bufferes de disco. Recordad que cada sector de disco son 512 bytes, por tanto cada buffer que asignemos, nos robar medio k de la memoria real. No tiene ningun efecto bajo windows ni bajo las ventanas MsDOS bajo windows. Unicamente tiene efecto en MsDOS puro. Y tambien tiene efecto al "arrancar" windows, antes de que este entre en modo protegido. Antes de que entre el procesador en ese modo, se est utilizando todavia el antiguo sistema de apertura y carga de ficheros en MsDOS. Por tanto se ahorraria "algo" de tiempo al arrancar windows, si este parametro fuese elevado. Mi consejo es NO ponerlo. Solo sirve para ahorrar unos segundos en el arranque de windows. Por contra, nos disminuir muchisimo nuestra memoria real. Recordad que esta memoria es "preciosa", no solo por la posibilidad de rodar antiguos programas o juegos MsDOS en ventana que requieren mucha memoria, sino tambien porque el propio windows necesita "parte" de la memoria real para cargar ciertas secciones de DLLs (normalmente DLLs de 16 bites heredadas del 3.1), pero de todas maneras, influye negativamente en las prestaciones de windows el tener "poca" memoria real. -------DEVICE= DEVICEHIGH= Con estas lineas cargamos un dirver de dispositivos. Ya hemos comentado que windows, excepto el HIMEM.SYS y el EMM386, *NO* necesita ninguno. Y no es conveniente tener *ninguno*. El poner alguno, indica que es un "viejo" programa o necesario para un "viejo" dispositivo. Por tanto esto influye negativamente en el comportamiento de windows. En caso de tener que poner algun driver (solo en caso de "extrema necesdad), podemos utilizar el DEVICEHIGH (en vez del DEVICE), en este caso y una vez que ademas hemos utilizado el HIMEM y el EMM386. Casi (pero no todos) todos los drivers admiten funcionar en memoria alta.

54

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop Existen especificos (sobre todo los de acceso a las antiguas tarjetas SCSI, y alguno de red en modo real), que no funcionaran o provocarn cuelgues aleatorios si los cargamos en memoria alta. La instruccion DEVICEHIGH admite ademas la "region" de carga (con el paramtro /L, pero es opcional). Se llama "region" de carga, al numero del posible hueco en memoria superior. Recordad que en el capitulo anterior, y en el de memoria real, comentamos que hay huecos en la memoria superior que se pueden utilizar, si hemos puesto el EMM386 con el parametro RAM y utilizamos DOS=UMB. Evidentemente, como en teoria podemos tener varias "bios" de varias tarjetas en esos huecos de memoria, puede que no queden "contiguos". Si no quedan contiguos, admiten "numeracion". Pues bien, podramos especificar as el "numero" del hueco UMB. --------DOS=HIGH|LOW[,UMB|,NOUMB][,AUTO|,NOAUTO] No conviene andar jugando con este paramtro. Unicamente poner DOS=HIGH,UMB si utilizmos EMM386. El intentar forzar la memoria de otra manera es unicamente para alguna situacion muy especifica (y totalmente improbable). ---------DRVPARM= Unicamnete a utilizar para disuqeteras *no* estandard. En este caso, normalmente el fabricante nos indicar que parametros debemos especificaer aqu. Evidentemente se ca de su peso, que no debemos tocar esto para las disqueteras estandard que nos dan en nuestro PC. ---------FCBS=x FCBSHIGH=x Es un parametro viejisimo. Herencia del MsDOS 1.0 (del ao 82). Este MsDOS abra los archivos mediante la tencica de "File Control Block". Es decir era necesario crear en memoria una estructura de control y pasarselo a las funciones de acceso a disco. Esto ya no se utiliza (desde hace mas de 15 aos). Pero por cuestiones de compatibilidad con los posibles programas MsDOS del ao 82 que nos quedasen, todavia existe esta opcion. ---------FILES=nn FILESHIGH=nn Indica el numero maximo de archivos que puede tener abierta una aplicacion MsDOS. Mismos comentarios que he realizado para los BUFFERS: No tiene ningun efecto bajo windows ni bajo las ventanas MsDOS bajo windows. Unicamente tiene efecto en MsDOS puro. Y tambien tiene efecto al "arrancar" windows, antes de que este entre en modo protegido. Antes de que entre el procesador en ese modo, se est utilizando todavia el antiguo sistema de apertura y carga de ficheros en MsDOS. Por tanto se ahorraria "algo" de

55

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop tiempo al arrancar windows, si este parametro fuese elevado. Mi consejo es NO ponerlo. Solo sirve para ahorrar unos segundos en el arranque de windows. Por contra, nos disminuir muchisimo nuestra memoria real. Recordad que esta memoria es "preciosa", no solo por la posibilidad de rodar antiguos programas o juegos MsDOS en ventana que requieren mucha memoria, sino tambien porque el propio windows necesita "parte" de la memoria real para cargar ciertas secciones de DLLs (normalmente DLLs de 16 bites heredadas del 3.1), pero de todas maneras, influye negativamente en las prestaciones de windows el tener "poca" memoria real. --------INSTALL= INSTALHIGH= Equivale exactamente lo mismo que cargar un programa (no un dirver de dispositivo), en el AUTOEXEC. Si estas lineas se ponen, se ejecutarn siempre al final del config, independientemente de en donde las hayamos situado. --------LASTDRIVE= LASTDRIVEHIGH= Indica cual es nuestra "ultima" unidad o letra de disco. Este parametro afecta a windows, por lo que no conviene tocarlo. En el antiguo MsDOS 6.22, si no lo poniamos por defecto, era la F:. En el MsDOS de windows 95 / 98, por defecto es la letra Z:, por tanto no debe tocarse. --------NUMLOCK=[ON|OFF] Indica si queremos que la tecla de bloqueo del teclado numerico est o no activa. No es necesario ponerlo y se asumir lo que est definido en la bios de nuestra maquina. --------REM Escrito por delante de cualquier linea, la convierte en linea de "comentarios". Por tanto no se jecutar la instruccion que va a continuacion. ---------SET variable=xxxxxxxx Permite especificar variables de entorno. En los antiguos MsDOS, esto era posible unicamente en el AUTOEXEC.BAT. Actualmente es posible en ambos sitios: en el config y en el autoexec. ---------SHELL=[[disco:]path]programa [parametros] Este comando *si* es importante. No es necesario, pero algunas veces nos

56

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop puede ayudar a solucionar algun problema. Aqu se define el "interprete de comandos". Normalmente sabemos que dicho interprete es el COMMAND.COM pero puede ser perfectamente otro interprete que no sea de MS (existen interpretes de comandos de terceros). Por defecto, si no ponemos la linea, asume que es el COMMAND.COM. Pero recordad que el command.com, admite parametros. Podeis verlo dando command /? en una venta MsDOS. Imaginar que quereis que por defecto TODOS los command (o ventanas MsDOS) de vuestra maquina se abran con unas determinadas caracrteristicas de tamao de entorno ,etc... BIen en este caso, como queremos "todas", lo mas comodo es especificarlos en el SHELL del config.sys. ----------STACKS= STACKSHIGH= Define el numero de stacks (pilas) para el uso internos del MsDOS. No es conveniente ponerlo y no tiene ningun efecto en windows ni en ventanas MsDOS bajo Windows. -----------SWITCHES= /F /K /N /E[:n] /K Fuerza un teclado "enhanced" como teclado normal. /N Deja inactivas dirante el arranque las tecla F5 y F8 que nos permite "pasar" del archivo de comandos. /E[:n] Si se usa sin el reasignacion de ciertas tocar este parametro ya de la maquina al forzar baja. parametro :n indica que se debe suprimir la extensiones de la bios (EBIOS). No es conveniente que puede tener efectos negativos en la memoria real la carga de las extensiones de la bios en memoria

PARAMETROS DE CONFIGURACION - AUTOEXEC.BAT -----------------------------------------* Como introduccion (y casi, casi como unico resumen), podemos decir que el autoexec.bat se encarga, o puede encargarse de ejecutar cualquier programa MsDOS, as como de establecer las condiciones de "entorno" (ya las veremos mas adelante), de todo el MsDOS, y lo que es mas importante: de todo Windows. Esto ultimo, deriva de que Windows "hereda" todo el entorno que tena al arrancar. * Extrictamente este archivo no es necesario (al igual que el config.sys), pero por desgracia, el MsDOS y el Windows, estan pensados para configuraciones regionales USA (as como el teclado). Por tanto como nuestro sistema (y nuestro teclado) no est en USA, debemos incorporar unas pocas lineas, tanto en el config, como en el autoexec. Recordemos que en el config eran: device=C:\WINDOWS\COMMAND\display.sys con=(ega,,1) Country=034,850,C:\WINDOWS\COMMAND\country.sys

57

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop Y en el autoexec.bat, son: mode con codepage prepare=((850) C:\WINDOWS\COMMAND\ega.cpi) mode con codepage select=850 keyb sp,,C:\WINDOWS\COMMAND\keyboard.sys (en ambas me estoy refiriendo a "Espaa" y teclado Espaol. Para configuraciones en Latino America, estas lineas variarn ligeramente) Basicamente, en estas lineas, estoy configurando la tabla de codigos, como la 850, el pas Espaa como 034, y el teclado como espaol "sp". ** NOTA: Es importante, sobre todo si vamos a tener ms de un sistema operativo, es decir, si nuestro sistema va a convivir con NT 4 o con Windows 2000, que estas lineas esten correctamente definidas. El problema nos puede venir causado, porque si no tenemos correcta la pagina de codigos en Windows 98, los caracteres acentuados y caracteres locales (como la "") aunque la veamos correctamente en pantalla, se almacenan con la tabla de codigos por defecto del MsDOS. Entonces veramos correctamente los nombre de archivos acentuados, pero internamente el nombre estara almacenado con otro codigo. En esta situacion, si instalamos windows NT o Windows 2000, estos, al configurarse (recordad que son independientes y no se apoyan en el MsDOS), se configuran con la tabla correcta de codigos: 850. Por tanto los caracteres acentuados en nombres de archivos, sern otros. De esta manera, un scandisk desde windows 98 a la particion NT, nos dar errores en los nombres de archivo, y lo que es mas grave: intentar arreglarlos (estropeando el correcto desde "su" sistema). Exactamente igual nos pasar desde windows 2000. CONDICIONES DE ENTORNO ---------------------* Se entiende por entorno, auqellas variables que son comunes a todo el sistema. Se heredan entre los procesos. * En general no son necesarias, excepto para programas particulares que las vayan a utilizar. Las variables que queramos que se vean en "todo" el sistema y que puedan ser leidas por un programa, se asignan en el autoexec mediante el comando SET. Esto lo utilizan muchas aplicaciones. La variable ms curiosa de entorno, es la TEMP. Esta la utilizan desde el comienzo del MsDOS, muchas aplicaciones, y en particular, tambien la utiliza windows. Por defecto, sino est definida, el propio MsDOS le asigna el contenido C:\WINDOWS\TEMP y por costumbre desde los inicios del DOS, esta carpeta se utiliza para escribir en ella ficheros temporales que necesiten las aplicaciones, y que por definicion pueden ser borrados en cualquier momento. Los programas o aplicaciones bien realizadas, deberan ademas ser las responsables de borrarlos. Pero esto, quiz sea mucho pedir..... Tal y como estabamos comentando con el entorno, nosotros podemos definir en el autoexec otra localizacion de la carpeta TEMP. Lo mas normal es tener:

58

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

SET TEMP=C:\TEMP y a su vez tener creada la carpeta TEMP en C:. ** Una de las variables de entorno mas importante en el PATH (camino). Cuando tecleamos un programa para su ejecucion, tanto el MsDOS como Windows, buscan el programa en la carpeta en donde estamos en ese momento, y si no lo encuentran, lo buscan en el "camino" que est definido en nuestra variable PATH. Por defecto, sino especificamos un path, en windows por defecto el path es C:\WINDOWS;C:\WINDOWS\COMMAND (se debe tomar nota, que los distintos caminos, se separan por punto y coma). Como PATH, ademas, es una variable de entorno, puede ser asignada mediante el comando SET. Es lo mas comodo. Imaginar que queremos "aadir" al PATH que tuviesemos en un momento determinado, la carpeta C:\KK. Bien, lo mas sencillo sera escribir: SET PATH=%PATH%;C:\KK Fijaros que lo que estamos haciendo, es decirle que el nuevo PATH, es igual al anterior (en este caso, se pone %PATH% -es decir encerrado entre simbolos %), y a continuacion, separado por punto y coma, el camino que queremos aadir. NOTA 1: Para ver el PATH que tenemos en un determinado momento, podemos abrir una ventana MsDOS y teclear simplemente PATH. Esto nos mostrar el contenido del PATH. Iguelmente en una ventana MsDOS, si tecleamos el comanto SET nos mostrar todas las variables de entorno, y en particular el propio PATH, ya que esta es una variable de entorno. NOTA 2: Cuando dentro de windows, vamos a Inicio->Ejecutar y tecleamos el nombre de un programa, windows primero buscar en C:\WINDOWS\SYSTEM y si no lo encuentra, a continuacion buscar en el PATH.

EMPIEZA LA OPTIMIZACION DE NUESTRO SISTEMA -----------------------------------------Recordar que el directorio de archivos temporales, "debe" estar vacio. Si tiene muchos archivos, degrada de una manera apreciable las prestaciones y velocidad de windows. Es conveniente borrarlo de vez en cuando. Y ahora la pregunta del milln: no podriamos utilizar el propio autoexec.bat, para que cada vez que arranquemos, sea l el encargado de "limpiar" esta carpeta?. Pues s podemos y "debemos" hacerlo. Una manera muy sencilla de hacerlo, es incorporar las siguiente lienas de codigo en nuestro autoexec. if not exist c:\temp\*.* goto cont0 attrib c:\temp\*.* -s -h -r echo S | del c:\temp\*.* >nul :cont0 Esto nos borrar el contenido de la carpeta C:\TEMP. Si tuviesemos los temporales en otra carpeta (por ejemplo, en la carpeta por defecto de

59

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop windows C:\WINDOWS\TEMP), deberemos sustituir C:\TEMP por el nombre de la carpeta que tuviesemos los temporales en nuestro sistema. Es importante recordar ademas que debe sustituirse la "S" de la linea "echo S", por una "Y" (sin las comillas) si tuviesemos windows en Ingls. CONFUSION EXISTENTE EN TORNO AL MSCDEX -------------------------------------En muchas consultas realizadas y debido a cierta confusion que existe con el MSCDEX y la posibilidad de ver o n nuestra CDROM desde MsDOS puro, voy a hablar un poco sobre este tema. Notas a tener encuenta: 1) No le hace falta a windows, que tengamos definido "nada" en nuestro config y autoexec, para ser capaz de ver la CDROM. 2) Si tuviesemos algo definido, es mas que probable que a windows no le quede mas remedio que acceder a nuestra CDROM, utilizando el viejo metodo de acceso de 16 bites, perdiendo entonces la capacidad de acceso en 32 bites. Ademas, tambien es mas que probable, que si nuestra CDROM fuese IDE, perdamos el acceso a 32 bites tambien en nuestro disco duro si este est en el mismo cana IDE. * Con lo anterior, quiere decir: "cuidadito" con lo que tenemos o ponemos all. ** Repasemos un poco el antiguo MsDOS, para entender como se acceda a una CDROM (sistema de 16 bites). Para acceder a la CDROM, necesitamos dos componentes software: 1) Un driver de dispositivo (por ser driver, debe estar en el config.sys), que nos permite ver un dispositivo de tipo "stream" (o de flujo) como un dispositivo "record" (orientado a registro). Recordad que un CDROM es un dispositivo "stream" -como si fuese una unidad de cinta-. 2) Un programa (por tanto, montado en el autoexec), que sea capaz de acceder al dispositivo virtual montado en el punto 1), y devolvernos los datos como si fuese una unidad de "disco". Este programa es un estandard de Microsoft: el MSCDEX (pero podra ser cualquier otro y de echo existieron algunos durante la vida del antiguo MsDOS). * A partir de ahora me voy a referir unicamente a los CDROM IDE. (la idea basica, de todas maneras, es igualmente extrapolable a los CDROM SCSI). ** Hasta que surgi windows 98, y nos incorpor un driver casi "universal" para todas las unidades de CDROM, era bastante normal en el MsDOS em deter drivers del tipo: DEVICE=C:\HITACHI.SYS /D:MSCD001 .... o DEVICE=C:\PIOONER.SYS /D:...... Es decir un driver de nuestro fabricante de CDROM (normalmente lo identificamos por el parametro /D:MSCD001) en el config.sys para poder ver nuestra CDROM. Igualmente teniamos una linea del tipo MSCDEX /D:MSCD001 en el autoexec.

60

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop Fijaros que el nombre puesto en /D:MSCD001, puede ser cualquiera, con tal que sean el mismo en el driver del config y en el programa MSCDEX. Bien, retomando el tema, estabamos diciendo que windows nos aporta un driver "casi" universal: el OAKCDROM.SYS (que podemos encontrarlo en el disco de inicio de windows 98, o bien en la carpeta C:\WINDOWS\COMMAND\EBD). Por tanto incorporando este driver en el config y a su vez invocando al programa MSCDEX, tendramos acceso a la CDROM en modo MsDOS puro. ** Pero... debido a los problemas que he comentado al principio de este capitulo, esto est completamente desaconsejado. Perderiamos muchas prestaciones en nuestro sistema. ** Entonces, la pregunta es como puedo acceder a la CDROM, al reiniciar en modo MsDOS, desde windows?. Bueno, y ademas, existe un problema: un driver de dispositivo, "debe" cargarse en el config.sys. Veamos tres posibilidades para solucionar este problema: 1) Cargar el OAKCDROM.SYS en el config de nuestro propio windows. Y *no* cargar el MSCDEX. Con esto evitamos que el acceso se haga a 16 bites. Posteriormente crearnos un archivo en nuestro directorio de windows, llamado DOSSTART.BAT que unicamente tuviese la linea de MSCDEX /D:MSCD001. Si este el archivo ya existiese, incorporarle dicha linea. Esta solucion funciona, pero no me gusta por dos motivos: uno, consumo de memoria MsDOS (al cargar el driver anterior), que luego no sirve para nada bajo windows. Y segundo motivo, este tipo de drivers en combinacion con ciertas controladoras y unidades de CDROM, pueden causar inestabilidades al windows. 2) Utilizar algun programa de los llamados "cargadores" de drivers. Por ejemplo, Creative Labs, tenia en su servidor FTP, un programa llamado CTLOAD, que era capaz de cargar un driver una vez que estuviesemos en MsDOS y sin necesidad de incorporarlo en el config. La manera de cargarlo sera entonces: CTLOAD C:\WINDOWS\COMMAND\EBD\OAKCDROM.SYS /D:MSCD001 MSCDEX /D:MSCD001 (y suponiendo que el programa CTLOAD, lo hemos dejado por ejemplo en C:\windows\command para que lo encuentre en el path). Incorporando estas lineas en el DOSSTART.BAT citado anteriormente, tendriamos acceso a la CDROM al reinicar en modo MsDOS. 3) Tercera posibilidad: utilizar un config y autoexec propio y crear un acceso directo a un "command.com" desde el escritorio con ese config y autoexec propio que incorporte esas lineas cada una en su correspondiente archivo. Tampoco me gusta, porque esto implica el tener que "mantener" otros config y autoexec. La solucion mas "limpia" en mi opinion es la 2). SE INICIA YA LA CARGA DE WINDOWS -------------------------------Llegado a este punto, ya hemos visto un poco de la maquina, del procesador

61

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop del MsDOS, y nos empiezan a "sonar" los terminos de memoria real, modo protegido, dispositivo PnP..... etc. INTRODUCCION A SISTEMAS OPERATIVOS ---------------------------------Windows 98, a pesar de arrancar "sobre" MsDOS es un sistema operativo con todas las de la ley. No se apoya en MsDOS. Unicamente lo hace por motivos de compatibilidad en ciertas situaciones y para ciertos dispositivos que ya veremos mas adelante. Por poner un simil con otros sistemas operativos, NT y Linux por ejemplo. Estos no se apoyan en MsDOS, pero para arrancar se apoyan en la Bios de la maquina. Siempre arranca la Bios. En Windows 95 / 98, hay un paso mas: primero arranca la Bios, posteriormente el MsDOS y por fin el Windows. El paso ms es el MsDOS, pero debemos verlo de esta manera: como un "paso" ms. Es verdad que con posterioridad a la "patada" inicial, el NT y el Linux, montan su capa de abstraccion del hardware (HAL), y se olvidan totalmente, de la Bios. Y no utilizan sus recursaso para nada, y es ms, ni se fian de como han inicializado los posibles dispositivos. Ellos los vuelven a verificar e inicializar. Esto por desgracia, parece que se va a perder en la informatica. Existen ya distribuciones de nucleo de Linux, que "s" se apoyan en las bios (evidentemente con nuestro consentimiento). Igualmente, parece que el futuro Windows 2000, tambien se va a apoyar en la bios (y en este caso, excesivamente por ahora -en la beta 3-). ** Veamos ahora los dos modos de funcionamiento del procesador "REAL" y "PROTEGIDO", y al final de esta parte, vermeos tambien el "MODO VIRUTAL 8086" que es el tercer modo de funcionamiento del procesador y que es el que nos dar soporte a las ventanas MsDOS desde Windows. MODO REAL Y MODO PROTEGIDO -------------------------Vamos a repasar un poco ms en detalle estos dos terminos, antes de empezar con la carga real de windows. Vamos a hacerlo as, debido a que windows, lo primero que hace es poner a trabajar a la CPU en modo protegido. Hasta ahora, hemos visto el modo REAL. Recordemos que el procesador arranca siempre en este modo fundamentalmente por cuestiones de compatibilidad. Recordemos un poco sus caracteristicas: 1) La memoria est restringida a lo que podamos direccionar con 20 lineas de direcciones (por tanto 2 elevado a 20 posiciones de memoria direccionables = 1 Mega). 2) Hay zonas que obligatoriamente estan en uso por el hardware (la zona de video: segmento A000 a C000) 3) Existe una zona de vectores de intrrupcion (interrupciones software) en las direcciones de memoria desde la posicion 0 a la 1024 fisicas reales. (256 interrupciones, y cada interrupcion, 4 bytes. 2 para definir el segmento y 2 el desplazamiento). Esta table contiene las direcciones de las rutinas a las que saltar automaticamente el hardware: la CPU, cuando se le interrupa mediante una INT xx (interrupcion xx). Muchas de estas

62

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop interrupciones software, realmente son "preparadas" por la bios de la maquina, y algunas de ellas, se disparan como consecuencia de una interrupcion hardware (IRQ). Lo IMPORTANTE es destacar, que el manejo de interrupciones lo hace la CPU ya que lo tiene implementado por hardware. Es decir "ella solita" salta a la correspondiente direccion de la tabla una vez que se produce la interrupcion. Ademas la CPU en el modo real "sabe" que esta tabla empieza fisicamente en el desplazamiento cero de la memoria fisica. ** que hay que hacer para poner a trabajar la CPU en modo protegido?: pues muy poco. Se coloca en unos registros especificos la nueva direccion de la tabla de interrupciones (llamadas aqu "excepciones"), se crea una tabla con los descriptores de segmento en modo protegido y se le pasa su direccion tambien a otros registros especiales del procesador, se cambia ahora un bite de un registro de control de la CPU, y se realiz un salto "largo" (JMP FAR). A la vielta de ese salto, ya estamos en modo protegido. ** pero realmente que s el modo protegido? Bueno, esto es un poco mas costoso de explicar en unas pocas lineas. Voy a intentar resumirlo. La CPU en este modo nos d tres cosas: 1) Control de procesos, Proteccion. 2) Proteccion mediante la memoria virtual y su mecanismo. 3) Virtualizacion del hardware. CONTROL DE PROCESOS. PROTECCION. -------------------------------Este es un nuevo concepto. Recordar que una direccion de memoria era un segmento y un desplazamiento. Ahora suponer que lo que antes llamabamos segmento (16 bites), ahora es un indice (es decir vale, 1, 2, 3, 4,.....) y que la direccion real de memoria es lo que se indicque en una tabla (llamada tabla global o local de direcciones). Es decir si nuestro segmento, contiene un 1, indica que realmente nos estamos refiriendo al contenido de la primera posicion de la tabla de direcciones. Este contenido se toma tal y como tomabamos el antiguo segmento, que sumado al desplazamiento, nos d la direccion real. Entonces lo que antes llamabamos segmento y que ahora contiene un indice, le cambiamos de nombre: pasa a llamarse: "Descriptor". Y ademas, lo modificamos un poco: por tener 2 bites, puede tener un numero desde 0 a 65535. y nos hacen falta 65535 elementos de direcciones?. Probablemente no. Entonces vamos a limitarlo. Supongamso que utilizamos unicamente 13 de los 16 bites. Con esto tendriamos unicamente 8192 posibles elemento de la tabla de direcciones. Nos d de sobra, ya que ademas en cualquier momento podemos apuntar los registros que definen la tabla de direcciones a una nueva, y as tendriamos otros 8192 posibles elementos. Lo importante, es el para qu vamos a utilizar los otros bites. Facil, en particular, con 2 de ellos podemos tener el valor 0, 1, 2 y 3. Estos bites en el descriptor de segmento, nos van a indicar el "modo" de funcionamiento del procesador en el segmento de codigo que est a su vez apuntado por el indice del descriptor a la tabla de direcciones.

63

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

El modo "0" es el modo ms potente. Puede realizar todo. A este modo se le llama modo KERNEL del procesador. Es decir el codigo del programa que se este ejecutando en modo 0, tiene acceso a todo. Esto puede servirnos para el "nucleo" del sistema operativo. El modo "1" en principio puede hacer todo, excepto saltar a modo cero. Igualmente el "2" no tiene acceso a los anteriores, y el "3" no tiene acceso nada mas que a segmentos de us propio modo. Este es el modo menos potente. No puede hacer casi nada. Este es modo en que deben ejecutase los programas de aplicacion. Es el llamado modo USER. Evidentemente, tiene que existir alguna manera de poder ejecutar "trozos" de codigo del sistema operativo. Pero en principio el modo "3" no puede saltar a modo "0", y de hecho no salta. No puede. Lo hace mediante la tecnica de "excepciones" o puertas de tarea. Estas estn totalmente protegidas, por lo que un programa de usuario, nunca podra "tirar" al sistema operativo. Graficamente lo anterior, puede pintarse con un circulo. Este es el modo 0. Luegop un circulo concentrico mayor. Es el modo 1, y as pintar otros dos circulos contentricos mayores hasta el modo 3. Y ahora graficamente, podemos decir que podemos saltar del interior al exterior en cualquier punto, pero nunca al reves. Para pasar al reves. solo puede hacerse en ciertos "puntos" de cada circulo. Estos puntos, son la "puertas de tarea". Curiosamente..... de esta manera ya se puede implementar proteccion a nivel de tareas. El tema es mucho mas complejo con respecto a los descriptores, pero a nivel de introduccion nos puede servir. MEMORIA VIRTUAL. SU MECANISMO. -----------------------------Antes hemos comentado que una direccion, es un descriptor de segmento y un desplazamiento. Este descriptor de segmento, es un indice que apunta a una tabla y contiene el "segmento" real que sumado al desplazamiento inicial, nos da, la direccion correcta. La direccion es ya la direccion real fisica de memoria que queremos localizar. (memoria lineal). Todo este "cisco" que he contado, no hay que preocuparse. No necesitamos "programarlo" nosotros. El hardware lo hace por nosotros. Todo esto lo tiene implementado directamente la CPU. En general esto que estoy describiendo, no es una cosa de la arquitectura 386 (es decir los actuaes Pentium). Es algo de "todas" las CPUs. Intel no descubri nada nuevo con esto (tiene algunas matizaciones...). Todas las CPUs trabajan basicamente con los conceptos descritos en estos capitulos. Pero... que pasa si ademas de esta tabla, o este mecanismo mejor dicho, de "segmentacion", el cual nos d una direccion lineal, esta en vez de ser la direccion fisica, lo que hacemos es que a su vez apunte a otra tabla especial. Vamos a llamarla tabla de "paginacion". Esta nueva tabla, tendr en cada elemento, bien su direccion ya en memoria real, o bien su direccion en el archivo de paginacion (ya veremos que es esto). Y s ademas, este mecanismo lo implementamos por hardware, y que sea la CPU la encargada de realizar todo este trasiego de direcciones, pues mucho mejor no?. Pues ahora, empezemos al reves: cogemos toda la memoria y la dividimos en paginas de 4 Kbs. La direccion o numero de pagina, lo ponemos en una tabla

64

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop que nos vamos a crear con las direcciones de dichas paginas. Ademas esa tabla, va a contener un indicador de si est en memoria real o bien en disco en el archivo de paginacion. Cada elemento de la tabla, son las direcciones sucesivas de memoria que "cree" ver nuestro programa. Pero la CPU, accediendo a dicha tabla, salta a la direccion real que est all indicada que ser cualquier otra, o bien, si est en disco, carga esa pagina del disco, en cualquier localizacion de memoria libre, y le cede control. Es decir, estamos "virtualizando" las direcciones. Nuestro programa no entiende de direcciones reales. Unicamnete direcciones virtuales que son las que le muestra la tabla de paginacion. Y es la CPU la que se encarga del trasiego de paginas de memoria real al archivo de paginacion (cunado no le "caben") y al contrario. Evidentemente, el propio hardware, sigue unos criterios para descargar las paginas "menos" utilizadas al archivo de paginacion. Una vez que ha hecho esto, con marcar en la tabla de paginas, que esa direccion no est en memoria real y est guardada en tal posicion de disco.... pues ya est. Los programas ni se enteran. Realmente estan en modo "virtual". VIRTUALIZACION DEL HARDWARE --------------------------Bien, al igual que se puede poner poner un mecanismo por el cual las tareas estn protegidas, tambien puede ponerse un bit de marca que nos indique si un descriptor de segmento (es decir el codigo, real o virutal) al que apunta ese descriptor, est autorizado o no para ejecutar una entrada / salida directa al hardware. Es decir una instruccion IN / OUT en ensamblador de las que veiamos al principio de estos capitulos. Si el bit est activo, se lo permite. Si no, lo que hace el procesador cuando encuentra una instruccion de estas, es provocar una "excepcion". Esta excepcion, tendr su puerta de tarea y un manejador de esta excepcion. Un "manejador" de excepciones, no es nada mas que un "trozo" de codigo de programa (normalmente perteneciente al sistema operativo, o implementado por algun driver), el cual es el encargado real de ejecutar ducah instruccion o de prohibir su ejecucion. Por eso, por ejemplo, en windows NT, que tiene virtualizacion completa del hardware, no podemos realizar ninguna instruccion no permitida, y la mayoria de juegos basadso en DOS, que intentan acceder al hardware directamente, la propia CPU no les deja. Se dispara una "excepcion" y el manejador de dicha "excepcion" se lo prohibe. Recordad que una secuencia mal programada de IN / OUT directos a un puerto, o bien intentando acceder a un puerto inexistente, es lo que provoca las caidas de maquina. Un sistema operativo "serio" no puede dear que se realicen estas cosas (NT, Linux). Un sistema que quiera guardar compatibilidad ocn el "viejo" MsDOS, por desgracia, no virtualiza totalmente el hardware, y deja hacer la mayoria de las cosas a casi todos los programas. Esto es lo que provoca "cuengues" en windows 98 por programas mal codificados (o mal "educados"). ** La pregunta que surge es: si unicamente es un bit, el que "indica" estas protecciones, facil, por que no lo cambiamos? Y la respuesta mas facil todavia: porque no se puede. No deja la CPU ejecutar una instrucccion de este tipo, cuando nuestro programa est en modo USER. Unicamente el sistema operativo que est en modo KERNEL es el que

65

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop puede ejecutar estas instrucciones privilegiadas. Y ademas si lo intentamos, se provocar otra excepcion. Y en esa excepcion, el sistema operativo har lo que considere oportuno: normalmente "matar" a esa tarea. MODO VIRTUAL 8086 ----------------Es el tercer modo de funcionmiento del procesador. Simplemente se le d un espacio de direcciones virtuales de un mega y al poner a trabajar el procesador en este modo es como si estuviese en modo real. Pero es "como" si estuviese. No lo est y todas las llamadas podran ser interceptadas por el sistema operativo. Pongamos un ejemplo muy claro. Habiamos dicho que la direccion de memoria grafica para modo texto es el segmento B800. Pues bien, si fisicamente "ponemos" en la posicion de memoria B800:0000 (una direccion asoluta de memoria), dos bytes, uno de ellos con los atributos de color y otro con la letra "A", veremos instantanemanete la letra "A" con el color seleccionado en la esquina superior izquierda de la pantalla. Es instantaneo, como si la pantalla fuese una "ventana" a esa direccion de memoria. Esto es en modo real. Pero la pregunta es como lo hace windows cunado abrimos una ventana msdos?. Es importante esto, ya que el escribir en esa posicion de memoria por un probrama, implicara que esa "A" saldra instantanemante en pantalla. Y no sucede esto, lo vemos, eso s en la parte superior izquierda de una "ventana" MsDOS que puede estar ademas fisicamente en cualquier posicion de nuestro monitor. ** Bien, es facil si hemos entendido un poco el mecanismo de memoria virtual. La solucion es "marcar" esas paginas de memoria como "paginadas" en la tabla de paginas. Al ir a utilizar esa direccion, como est teoricamente paginada, ocurres una excepcion del procesador, entra a funcionar el mecanismo de excepciones, y un manejadro para esta excepcion toma control. Este manejador "se da cuenta" de lo que queria hacer el programa y en vez de hacer lo "normal" que es buscar en el fichero de paginacion y traer a memoria fisica la pagina que falta, lo que hace, es "dibujar" esa "A" que queriamos en la ventana MsDOS en la esquina superior izquierda. Parece un poco retorcido..... pero es la unica solucion, y funciona perfectamente. De cara al programa que se est ejecutando, para el es como si estuviese funcionando en modo real. Es exactamente lo mismo, pero en vez de hacer lo que el quiere, se hace lo que quieres el sistema operativo. Ademas, ese "mega" de memoria, est en cualquier sitio de la memoria fisico, incluso troceado, da igual. Unicamente windows, construye una tabla de memoria con las paginas que le interese, lo pone en unos registros del procesador y cambia a modo virtual 8086. MULTITAREA REAL --------------El concepto de multitarea lo unico que nos incorpora es la posibilidad de repartir el tiempo en unas unidades muy pequeas, llamadas "quantum", y ceder el control, consecutivamente y por orden de esa cantidad de tiempo asignado a cada tarea de la maquina. Esto nos muestra "aparentemente" que hay varios programas en ejecucion. Realmente, en cada instante del tiempo, (en cada "quantum", dure lo que dure), solo hay UN solo programa en ejecucion. Pero en ese quantum, con las velocidades actuales de las CPUs, se pueden hacer muchas cosas.

66

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Evidentemente, aqu intervienen otros dos conceptos: 1) Intercambio de tareas. 2) Proridad de las tareas. El intercambio de tareas, es simplemente el guardar el estado de una tarea cuando ha agotado su tiempo (sus quantums asignados), recuperar el estado de otra tarea y cederle el control. Normalmente esto se puede realizar por el hardware de la CPU (existe una instruccion especifica para ello, en "todas" las CPUs del mercado, incluidos los mainframes). Pero Microsoft en vez de utilizar el mecanismo hardware, lo hace por software, "a mano". Esto es muy costos en ciclos de reloj, pero aparentemente, Microsoft no se fiaba, al menos al principio, de la implementacion de este mecanismo en la CPU por parte de Intel. Prioridad de las tareas, es simplemente un numero asignado a cada tarea, que indica el numero de "quantums" que puede ejecutar antes de que el sistema operativo tome control y le ceda el control a otra tarea. * Hay que hacer notar, que una tarea, puede "perder" el control, antes de agotar su numero de quantums. S esa tarea hace una peticion de entrada / salida a disco por ejemplo, debido a que esa peticion es muy costosa en tiempo (estamos hablando de algunos milisegundos), mientras se ejecuta, evidentemente la CPU puede hacer muchisimas mas cosas. Por tanto el sistema operativo toma el control y se lo cede a otra tarea. El sistema operativo, debe ser "listo". Debe jugar con las prioridades de tarea y variarlas ligeramente. Es cedir, a un programa que hace mucha entrad/salida, debido a que est poco tiempo en memoria, el sistema operativo le debera subir la prioridad. En cambio al reves, a un programa que chupa mucha CPU y no realiza apenas entrada / salida, el sistema operativo debe bajarle la prioridad al objeto de que no se apodere todo el tiempo de la CPU. * Evidentemente, el propio nucleo del sistema operativo debe ser el proceso de maxima prioridad. Bien, esta es la teoria de Multitarea REAL. Y esto es lo que realiza win95 / 98 con las tareas de 32 bites. Pero las tareas de 16 bites, se "inventaron" (heredado de windows 3.1), la MULTITAREA CORPORATIVA ("preemptive"). Realmente este no es un concepto informatico. Es un concepto Microsoft. Me explico: en este caso no existe la "cesion" de una tarea a otra por el tiempo consumido en maquina, sino como por definicion, las tareas windows, "generalmente" emiten muchos mensajes al sistema, (funcionan por intercambio de mensajes), cada vez que se emiten por parte de un programa ciertos tipos de mensaje, el sistema operativo toma control al recibir ese mensaje y cede en algunos de ellos el control a otra tarea. Este es el funcionamiento de las tareas de 16 bites. Y evidentemente, peligrosisimo, ya que si una tarea no emite esos mensajes, y esa tarea est mal programada y se mete en un bucle infinito, entonces windows se nos quedar "colgado". No responder ni el teclado. * Windows 95 / 98, por "herencia", debe permitir ambos tipos de "multitarea". La REAL para tareas de 32 bites, y la "cooperativa" para tareas de 16 bites (y recemos, para que realmente "cooperen" esas tareas). La manera de hacerlo, es crearse una maquina virtual para cada tarea de 32 bites, y otra maquina virtual para "todas" las tareas de 16 bites. Por tanto

67

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop es importante recalcar que TODAS las de 16, comparten la "misma" maquina virtual. Esto ultimo implica, que la caida de una tarea de 16 bites, dejar, probablemente, inutilizado TODA la maquina virtual de 16 bits. Y esto es importante, porque win 95 / 98 tiene mucho codigo de 16 bites en su nucleo. Por tanto nos inutilizar, probablemente, parte del sistema operativo, obligandonos a reiniciar la maquina. En cambio, la caida de un programa de 32 bites, unicamente, provocar la caida de esa maquina virtual, y no afecta al resto del entorno windows. Rearrancando la tarea, esta seguir en funcionamiento. Por ejemplo, la caida de Word (por lo que sea) no pasa nada, se rearranca word y sigue funcionando. La caida de una tarea de 16 bites, en el mejor de los casos, lo unico que sucedera es que esa tarea ya no podremos arrancarla hasta que reiniciemos la maquina. EMPIEZA A FUNCIONAR EL WIN.COM PARA CARGAR WINDOWS -------------------------------------------------Ahora ya podemos empezar a ver como se realiza la carga. 1) Lo primero que hace windows, es una "fotocopia" de la memoria real en ese momento. Esta "fotocopia" servir para crear los espacion de direcciones virtuales por cada ventana MsDOS que queramos utilizar bajo windows (utilizando el modo virtual 8086 del procesador que hemos visto previamente). 2) Busca a ver si existe un archivo llamado WINSTART.BAT en el direcotrio de windows. Si existiese, ejecuta los comandos que all esten, y el resultado de esta ejecucion lo heredar "toda" la maquina virtual windows. Todo windows es "otra" maquina virtual (pero en este caso, trabajando en modo protegido). El "entorno" de esta maquina virtual, es el entorno "despues" de ejecutar el WINSTART.BAT si este existiese. Entenderemos por entorno, lo mismo que en MsDOS, es decir las variables de entorno el path y otra cosa mucho mas importante: las interrupciones en modo real. Veamos un ejemplo: imaginemos que necesitamos un programa en modo real que es "residente", que ademas ocupa mucha memoria, y que realmente, al ser residente, lo que hace es establecer alguna interrupcion en modo real que es necesaria para el funcionamiento de lo que sea. Este programa sabemos que no vamos a necesitarlo en las ventana MsDOS, pero que s lo necesita windows. Entonces para tener la maxima memoria en ventana MsDOS, lo que hacemos es *no* ejecutarlo en MsDOS y si en el WINSTART.BAT. Por tanto, para MsDOS tendremos, segun el punto 1), la memoria maxima sin ese programa, y ademas, dispondremos de los servicios que nos incorpore dicho programa desde cualquier programa windows (nunca desde las ventanas MsDOS). Parece que no es practico, pero yo he tenido que utilizarlo. El caso real, ha sido utilizando NET 1 del gestor de bases de datos Oracle. El Net 1 es un residente MsDOS. Colocado en el WINSTART.BAT, ya que solo se utiliza desde los programas de aplicacion windows, tena un ahorro de 64 Kbs en las ventanas MsDOS. Curioso no?. Seguro que alguien con imaginacion, podra buscar alguna utilizadad real a este tipo de funcionamiento en nuestro mundo "casero" del PC. Por si acaso, es bueno saber que existe....

68

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop 3) WIN.COM, pone a funcionar el procesador en modo protegido. Para ello, se crea una tabl global de direcciones (con los descriptores de segmento vistos anteriormente) y que tiene posibilidad de acceder a un espacio de direccionres virtual de 2 Gb. Crea la tabla de paginas, carga el programa KRNL386.EXE responsable de las funciones y manejos del nucleo de windows y le cede control. 4) Realmente en este punto de la carga, tres son los ficheros mas importantes a cargar, y cada uno con sus caracteristicas especiales. Estos son: * KRNL386.EXE el cual es el responsable de controlar y asignar todos los recursos de manejo de memoria, carga de aplicaciones y la planificacion y ejecucion de tareas. * USER.EXE crea y mantiene las ventanas en la pantalla. Trata todas las peticiones de mover, crear, tamao, o cerrar una ventana. Tambien es el responsable del manejo de los iconos y otro componentes graficos. Ademas es el responsable de la entrada a las aplicaciones desde teclado, raton o cualquier dispositivo de entrada. * GDI.EXE es el "Graphics Device Interface". Es el responsable de ejecutar operaciones graficas para crear imagenes en la pantalla (y otros dispositivos). Estos tres componentes, son todavia componentes de 16 bites. Procesos "heredados" del windows 3.1. LOS RECURSOS DE WINDOWS ----------------------Tal y como hemos comentado previamente, los componuentes, USER, GDI y KERNEL que ejecuta windows son de 16 bites. Ademas de estos 3, windows 95 / 98, carga el USER32, GDI32, y KRNL32 que son los 3 respectivos componentes para tareas de 32 bites. Pero por desgracia, los componentes de 32 bites a este nivel, llaman a sus respectivos de 16 bites "siempre", los cuales son los encargados "reales" de realizar las tareas. Veamos un ejemplo. El API es el conjunto de funciones que puede utilizar cualquier tarea windows para realizar una accion. Por ejemplo "crear una ventana". Evidentemente hay dos API's una de 16 y otra de 32 (cada tarea, dependiendo del tipo -16-32-, llama a la correspondiente funcion). El API del GDI32 tiene los siguientes subcomponentes: * * * * * * GDI32 como tal Adaptador tipografico TrueType Archivos TrueType (usa archivos proyectados en memoria). Perfiles de color (usa archivos proyectados en memoria). Correspondencia de colores de imagenes (ICM) INTERFAZ de salto al subsistema de 16 bites.

Por tanto una tarea de 32 que utilice el GDI32, siempre salta al subsistema de 16, que a su vez contiene (API de 16): * GDI16 * Minicontrolador de visualizacion * Minicontrolador de Impresora

69

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop * Controlador universal de impresora * Motor DIB grafico * Visualizacion o Impresora (drivers ya especificos del fabricante). NOTA (para los puristas): El motor DIB realmente es codigo de 32 que se ejecuta con una vista de 16 bits (segmentada) de la memoria del sistema, por lo que por ejemplo el codigo hace uso de las instruccciones rapidas del 386 para las operaciones de transferencia de memoria. Hay una cantidad considerable de trucos implicados en la manipulacion eficiente de direcciones, pero permiten que las aplicaciones existentes de 16 bits puedan realizar las mejoras de implementacion del nuevo motor DIB. Si el motro DIB, se colocara en el lado de los 32 bits, o bien el modilo GDI de 32 tendra que reproducir muchas de las funcionalidades del de 16 o bien el motoe GDI incurriria en mucha sobrecarga de ajuste volviendo a llamar al lado de 16 bites. ** Bien, una vez "matizado" este comportamiento, vemos que por desgracia, windows 95 / 98, se apoya (por mantener compatibilidad total) sobre los subsistemas de 16 bites. ** Y ahora para los programadores (o quien haya seguido con atencion estos capitulos): cual es el segmento mayor que se puede poner en una tarea de 16 bits?: facil 2 elevado a 16 o sea 64 Kbs de memoria. Por tanto el tamao de la "pila" ("heap", monton), maximo que puede utilizar una tarea de 16 bites es 64 Kbs. Pues bien a ese "pequeo" espacio de memoria y que ademas es INDEPENDIENTE del numero de megas de nuestro PC (por diseo), es lo que se le llama RECURSOS. Por tanto, hay tres "pilas" de recursos (correspondiente a los tres programas principales del nucleo: USER, GDI y KERNEL. Estos recursos libres los podemos ver ejecutando el programa RSRCMTR.EXE del directorio de windows). Por desgracia, todas las llamadas a funciones de esta API, que nos vayan creando "objetos" (asignacion de memoria, iconos, ventanas, etc...), consumen una pequea cantidad de esta "pila". Lo grave es que si nos quedamos sin alguno de los recursos, tenemos muchas posibilidades de que windows se "caiga" -nos intenta enviar un mensaje, pero puede ya caerse en cualquier momento-) ** Evidentemente esto es un comportamiento heredado. Windows NT y el futuro windows 2000, no tienen esta limitacion de recursos, debido a que TODO el codigo de este estilo es de 32 bites "puro". Contra el consumo de estos recursos, no hay solucion. Ademas, lo "grave" del tema, es que es responsabilidad del programa que "consume" recursos, el liberarlos. Por tanto un programa mal codificado (mal diseado), o que termina anormalmente, nos dejar recursos "gastados" en la pila, que no se recuperarn hasta que reinicimos windows. DIAGRAMA DE PROCESOS DE WINDOWS ------------------------------Anteriormente habiamos vistos los diferentes modos de funcionamiento del procesador para la proteccion de las tareas. Desde modo 0 (nucelo o kernel) a modo 3 (usuario). Y podiamos imaginarlos como anillos concentricos (el mas interior el cero y el mas exterior el 3). El cero era quien tenia control absoluto de la maquina y suele corresponder al "nucleo". Si algun programa o modulo, "falla" en modo kernel, practicamente seguro que nos podemos despedir de windows: a reiniciar la

70

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop maquina. El modo cero tiene ademas control absoluto sobre los otros maods. Por tanto si se cae cualquier proceso de los otros modos es capaz de "rearancarlo". Es decir: simplemente no pasa nada. ** El tema para los diseadores de cualquier sistema operativo, es que ponemos en modo kernel y que ponemos en el resto de modos hasta llegar al modo 3 -usuario-? Hay que tener presente, que la "transicion" o saltos de modo, son operaciones muy costosas en tiempo Y deben realizarse lo menos posible. Por otra parte, por motivos de eficiencia, es mejor poner las cosas en modo 0. como se nivela la balanza? perdemos seguridad frente a estabilidad? Este es el gran dilema. Por ejemplo puedo comentar que en su dia, cuando se diseo windows NT 4, fu muy criticado debido a que meti dentro del nucleo (modo cero) el GDI (las versiones anteriores no lo tenian as). Esto fue por razones de eficiencia del sistema. Pero peligroso: un programa que utilizase mal el GDI, ahora ya podia "tirar" al sistema. Es decir, a veces hay que tomar deciones de diseo "peligrosas". ** Como es entonces la estructura de win 95 / 98? 1) Se decidi utilizar unicamente los anillos 0 (kernel) y 3 (user) 2) En el anillo 0 se incorporan dos subsistemas: * Subsistema Administrador de maquina virtual con: * Servicios de Gestion de memoria * Planificador * Servicios VxD y cargador dinamico * Administrados de maquinas virtuales MSDOS * Controladores (teclado, video, raton, comunicaciones...) * Subsistema de gestion de archivos con: * Administrador del sistema de archivos instalable(IFS) * FAT de 32 bits * Sistema de archivos CDROM * Redirectores de red * Subsistema de E/S por bloques 3) En el anillo 3, se ejecutaria tano la maquina virtual del sistema como todas las maquinas virtuales MSDOS (una por cada ventana MSDOS que tengamos abierta). En este maquina virtual del sistema existe un espacio virtual de direcciones compartidos por todas las tareas que son: * Servicios del sistema: Nucleo, Usuario, GDI * Subsistema de 16 bits. Y luego se crearia un espacio virtual de direcciones "diferente" para cada tarea de 32 bits. Es decir en un espacio virtual de direcciones de 32 bits se pueden direccionar 4 Gb de memoria virtual. Los 2 primeros gigas son comunes a todas las tareas y corresponden a zonas del sistema operativo. Un guga ms (hasta los 3 gigas) es para el espacio de direcciones compartido de las tareas de 16 bits, y desde los 3 a los 4 gigasm es "diferente" para cada tarea de 32 bits. Por tanto una "caida" de una tarea de 32 bits no es nunca critica para el sistema. ** Con todo este "rollo" hemos terminado de ver un poco las "tripas" de windows, y quiz ahora entendamos un poco ms de como, cuando y porqu windows puede sufrir una "catastrofe". Vamos a pasar ahora a ver ya la carga

71

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop completa de windows. WINDOWS CONTINUA CARGANDOSE --------------------------** La carga detallada de todos los drivers y dispositivos que windows maneja, podemos verla en detalle si al arrancar windows hacemos que nos "cree" un fichero de historia de la carag (un fichero LOG). Para crearlo, debemos arrancar con la tecla CTRL pulsada, y cuando nos saque un men, pulsar MAY+F8 y darle al INTRO. Nos ir pidiendo confirmacion de linea por linea para su ejecucion, tanto del config.sys como del autoexec.bat como algunos drivers de windows. Le damos a todo que s. Cuando ya estemos en windows, abrimos una ventana MsDOS y tecleamos: c: cd \ type bootlog.txt > boot.txt * Con esto hemos creado un fichero llamado boot.txt en el directorio raiz de nuestro disco duro. Podemos abrir con Notepad por ejemplo dicho archivo y vermos todo lo que iwndows nos ha cargado. EN CASO DE PROBLEMAS AL ARRANCAR WINDOWS ---------------------------------------** Este fichero, nos puede "salvar" la vida mas de una vez. El proceso que he descrito anteriormente es igualmente valido si windows "se niega" a arrancar y se cuelga en el arranque. En este caso, el proceso a seguir es similar, pero con una matizacion. 1) Arrancamos con la tecla CTRL pulsada y luego damos MAY+F8. Le damos a INTRO, y le confirmamos a windows cada linea. 2) Si habia problemas al arrancar, los seguir habiendo, por lo que windows se "colgar" de nuevo. 3) Volvemos a arrancar con CTRL pulsada y uando sala el men, le damos a la opcion de "solo sinbolo del sistema a prueba de fallos". Es importante esto, para no perder el contenido del bootlog.txt, ya que sino se volver a "machacar" en esta arrancada. Otra posibilidad es arrancar con el disco de Inicio de win98 en este momento. As seguro que no lo perderemos. 4) Una vez estemos en el simbolo del sistema, tecleamos: c: cd \ attrib boot.log.txt -s -h -r copy bootlog.txt boot.txt (hemos variado ligeramente la secuencia aqu. Simplemente porque si arrancamos en solo simbolo del sistema a prueba de fallos, el mapa de teclado no estar cargado y es dificil encontrar el simbolo ">". De todas maneras las lineas de comandos anteriores, son iguales a las citadas en la parte anterior de este capitulo). De esta manera, ya tendremos el fichero de arranque. La ultima linea de ese fichero, nos dar el nombre del controlador que nos est causando el "cuelgue" de windows. A vece simplemente, buscando ese archivo y renombrandolo, ya podremos arrancar. Quiz con errores, pero podremos arrancar.

72

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

** Debemos recordar, que si los problemas surgen despues de instalar cualquier driver o nuevo software, windows, nos d una excelente herramienta para intentar recuperar la situacion anterior. La herramienta es el SCANREG. Veamos las posibilidades que pueden sucedernos despues de una instalacion de drivers, u otro software erroneo. 1) Este software ha sido LIMPIO y no ha machacado ninguna DLL o driver esencial para windows. 2) Ha habido "machaque" de DLLs en windows. Bien veamos las alternativas para recuperar nuestra situacion anterior y poder iniciar windows: ** En el caso 1) puede normalmente hay dos situaciones tambien. a) Que el instalador haya machacado el registro de windows, incorporado claves, o borrado claves fundamentales. b) Que ademas haya instalado alguna VXD "peligrosa" (muy corriente esto ultimo). Las VXD son peligrosisimas en caso de estar mal realizadas. Hay dos posibilidades para que windows las cargue: o bien las "referencia" en el registro, o bien en el caso de que el nuevo producto instalado, las deje en c:\windows\system\iosubsys windows cargar de ese directorio automaticamente todas la VXD que all se encuentre. ** En el caso 2) existen dos situciones tambien: a) El instalador ha machacado el registro de windows. b) Se han substituido componenetes de windows. ** En cualquiera de los casos, debemos fijarnos, que "casi" siempre "toca" el registro. Lo primero sera recuperar dicho registro. Esto es facil. Windows 98, conserva por defecto una copia del registro de los ultimos 5 dias que hemos arrancado el PC. Esta copia la realiza la primera vez que arrancamos el PC en el dia (por eso, la primera arrancada del PC en el dia, es algo mas lenta que el resto de veces que arranquemos en ese dia). Igualmente windows nos d una herramienta para reciperar el registro: el SCANREG. SCANREG ------Para utilizarlo, arrancamos con CTRL pulsada, y cuando nos saque un men, seleccionamos "Solo Simbolo del Sistema". All tecleamos: scanreg /restore Nos mostrar una lista de las ultimas 5 copias del registro. Seleccionamos la del dia que queramos recuperar (recordando que ha sido realizada la copia al inicio de dicho dia, por tanto si nos acaba de suceder el problema, podemos recuperar la de ese mismo dia), y recuperamos el registro. Recordad tambien, que existe un fichero llamado scanreg.ini en el directorio de windows, en donde podemos personalizar el numero de copias, y otras opciones de esta herramienta.

73

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

** Bien, de esta manera ya tenemos recuperado el registro. *** Pero puede ser que windows siga sin arrancar (o con pantallas azules). Esto suele ser debido a que se ha copiado alguna VXD que impide el arranque en el directorio c:\windows\system\iosubsys. Debemos intentar localizarla y renombrarla con alguna "extension" diferente a VXD (si no termina en VXD, windows no la cargar). Mi consejo es controla este direcotorio. Conviene tener una lista de las VXD que windows monta en l. Y vigilar despues de cada instalacion, si se ha montado una nueva y apuntarla. En este punto, si aparecen nuevas VXD y seguimos con problemas, es necesario enombrarlas o borrarlas. Como "pista", sino tivuesemos las VXD apuntadas, nos puede servir que windows al instalarse (win 98 "normalito", deja como decha de sus archivos el 15/05/98. Por tanto, "en principio" los que no tuviesen esa fechas, son candidatos que que los renombremos (su extension) para intentar arrancar. ** En esta situacion, windows ya arrancar. Ahora debemos intentar "recuperar" los posibles ficheros que la instalacion erronea nos haya dejado. Para ello, tenemos otra herramienta, ya bajo windows. Es el SFC. Debemos ejecutar este programa desde Inicio->Ejecutar. Debemos arrancar el SFC y darle en el boton "opciones", y verificar que esten marcados los casilleros de "Ver ficheros borrados" y "Ver ficheros cambiados". Cuidado, porque por defecto, windows, no tiene marcadas dichas opciones. Al ejecutar, comprobar la version de DLL o driver, etc, que existe en la actualidad con la que windows tiene registrada. Si son diferentes, nos mostrar la version anterior que tenia y la actual. Debemos guiarnos aqu por el numero de version (no por la fecha) del archivo. Si el numero de version del fichero actual es inferior a la que tenia windows registrada anteriormente, debemos recuperar ese fichero. Esta herramienta nos lo permitir. Mi consejo para un correcto funcionamiento del SFC es lo que vamos a ver a continuacion. SFC --SFC : System File Checker. Es un programa SFC.EXE que reside en el directorio windows/system. La primera vez que lo ejecutamos (Y DEBERIA SER NADA MAS INSTALAR W98), crea una base de datos con loas versiones de todos los programas y Dlls de tu PC. Si es nada mas instalar, justo son las de win 98. Una vez ejecutado, debemos entrar en configuracion y marcar las DOS ultimas casillas, de verificar ficheros borrados, etc...... Posteriormente, cada vez que lo ejecutemos compara su base de datos con las versiones que tienes monstadas en ese momento. Si difieren nos permite, bien actualizar sus datos, o RECUPERAR desde los ficheros de instalacion de W98. Es quiz la herramienta mas potente de control de w98. Nos sorprender el ver que cuando instalamos software de terceros, las "guarradas" que hace con las DLLs de windows. Despues de unas cuantas instalaciones, nos preguntaremos como es que el windows sigue funcionando.

74

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

** Llegado a este punto, hemos hablado varias veces del registro de windows. Conviene ahora hablar un poco mas en detalle. El registro es el 50% de windows (segun la propia definicio de Microsoft). Por tanto debemos ser "cariosos" con el. REGISTRO DE WINDOWS 95 / 98 ---------------------------El registro, presenta de forma jerarquizada toda la informacion que windows y el resto de las aplicaciones escriben en l. Sustituye a los antiguos ficheros INI en los que cada aplicacion escribia por separado. El registro principal (visible con "regedit"), consta de 6 claves principales. Cada clave puede contener datos, llamados "valores" y a su vez puede contener subclaves adicionales. Su vision se asemeja a la vision de un disco desde el explorador, con ficheros (valores) y carpetas (subclaves), que a su vez pueden contener mas ficheros y mas carpetas. Claves generales: -----------------HKEY_LOCAL_MACHINE: Informacion de los componentes hardware instalados. Configuracion del software de la maquina. Esta clave es "comun" para todos los usuarios de la maquina. HKEY_CURRENT_CONFIG: Apunta a una rama de HKEY_LOCAL_MACHINE\CONFIG que contiene informacion sobre la configuracion "actual" del hardware. HKEY_DYN_DATA: Apunta a una rama de HKEY_LOCAL_MACHINE que contiene la informacion dinamica del estado de los dispositivos. as como toda la parte de PnP. Esta informacion es cambiante seguna se aaden o quitan dispositivos al sistema. Ademas incluye informacion sobre el estado actual de los dispositivos, as como de los posibles problemas. HKEY_CLASSES_ROOT: Apunta a la rama de HKEY_LOCAL_MACHINE que contiene ciertas configuraciones de software. Esta clave muestra los mismos datos que estaban en windows 3.1 -informacion del OLE y asognacion de operaciones de arrastrar y soltar, y ciertas abreviaturas que de echo son vinculos OLE. Igualmente contiene la descripcion del interfaz de usuario. HKEY_USERS: Contiene la informacion de TODOS los usuarios que se han conectado a la maquina. Incluye tanto la informacion generica (.DEFAULT) como la especifica de cada usuario. La configuracion general est disponible para todos los usuarios. Esta clave, contiene subclaves con el nombre de cada usuario y su perfil que se ha conectado a la maquina. HKEY_CURRENT_USER: Esta clave apunta a la rama HKEY_USERS para el usuario que est en ese momento conectado. *******Vamos a empezar a describier, las ramas mas importantes de cada una de ellas: ----------------------------------------------------------------------HKEY_LOCAL_MACHINE ===================

75

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop CONFIG : contine la informacion de las distintas configuraciones hardware de la maquina. Puede tener las configuracion que tiene el PC, cuando est conectado a una red, cuando no lo est, cuando quitamos una tarjeta,....etc. Cada configuracion posible tiene asignado un identificador unico Este identificador de la configuracion tiene una subclave bajo la clave "config". Cada configuracion, aparece en la lista de "perfiles" de hardware en la opcion Sistema del Panel de Control. En la mayoria de las situaciones, el identificador de configuracion est asignado a una configuracion unica. Normalmente casi nadie tiene varios "perfiles" de hardware definidos y arranca con uno u otro. Lo normal para los usuarios domesticos como nosotros es una unica configuracion. Pero no debe perderse de vista que es posible una configuracion "multiperfil" y que windows es capaz en la arrancada de solicitarnos que perfil de hardware queremos. ENUM : Los "enumeradores" de bus de windows son los que aqu construyen el arbol del hardware. Se asigna un codigo unico de identificaion para cada dispositivo. Las sibclaves contiene informacion sobre el tipo de dispositivo, la letra asignada a la unidad, por ejemplo. El fabricante y ademas la informacion de la los controladores de los componente de la RED. Tipicamente, dentro de esta clave se enumeran: ESDI : Dispositivos de disco Fijo FLOP : Dispositivo de disco flexible. ISAPNP : Dispositivo PnP ISA MONITOR : Monitores NETWORK : Protocolos, serivios y vinculos de red. ROOT : Dispositivos legados (no PnP) Evidentemente si miramos en nuestra clave de registro, nos encontraremos con otras subclaves que continene al menos las anteriores, ms las caracteristicas genericas de nuestra maquina. Pensar que los equipos actuales con ACPI, y las funcionalidades que hoy dia estan presentes, tambien las encontraremos en la descripcion del hardare como subclave. SOFTWARE : Contiene la informacion de configuracion sobre el software instalado. Estas entradas se aplican a "cualquier" usuario conectado a esta maquina. Contiene las definiciones para asociacion de archivos e informacion OLE. Esta rama, contiene varias subclaves, incluyendo la subclave "Classes", ademas de las subclave "description" para todo el software. Subclaves principales: CLASSES: Describen todo tipo de documentos y dan informacion sobre OLE y asociaciones de extensiones a archivos que pueden utilizar aplicaciones. HKEY_CLASSES_ROOT no es nada ms que una "alias" de esta subclase. Aqu estan contenidas dos tipos de subclaves. * Subclases extensiones de archivos, que especifican la definicion de clase asociada con el archiv que tiene la extension seleccionada. * Claves de definicion de clase, en donde se especifican las propiedades OLE y de la interfaz de ordenes de una clase de documento. Si una aplicacion permite DDE (intercambio dinamico de datos), la subclase "Shell" puede contener subclaves "Open" y "Print" que definen las ordenes DDE.

76

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop DESCRIPTION: Esta subclave contiene los nombres y numeros de version del software instalado. La informacion especifica de usuario sobre la configuracion se alamcena en el camino logico relativo bajo HKEY_CURRENT_USER. La informacion en cada subclave la aade cada nueva aplicacion al instalarse. Durante la instalacion, las aplicaciones graban con el siguiente formato: HKEY_LOCAL_MACHIME\SOFTWARE\Nombre_de_compaia\Producto\Version Evidentemente, el propio Microsoft, graba aqu una clave llamada: HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT y dentro de ella una subclave llamada WINDOWS\CurrentVersion la cual es importantisima ya que es el "nucleo" de windows. La subclave SETUP que cuelga de la anterior, es usada internamente por windows durante su arranque. SYSTEM : Contiene los parametros completos para los controladores de dispositivos y servicios que son cargados en windows. Todos los datos que controlan el arranque de winwdows estn aqu. Este conjunto tiene a su vez dos partes: CONTROL SERVICES Vamos a ver un poco mas con detalle estas ultimas ramas. CONTROL: Contiene parametros de arranque del sistema, incluyendo las configuraciones de arranque y apagado, rendimientos, esquemas de teclado, idiomas, etc.... Subclaves tipicas dentro de el son: ComputerName; Nombre del PC FileSystem: Tipo y configuracion sistema de archivos IDConfigDB: Identificacion de la configuracion actual Keyboard layouts: Lista de DLLs para el idioma del teclado Media Resources: Informacion de los componente multimedia Network Provider: Descripcion de los proveedores de RED NLs : Informacion sobre los lenguajes nacionales permitidos PerfStats: Estadisticas que se ven en "monitor del sistema" Print: Impresoras actuales y sus entornos de impresion Session Manager: Variables globales y lista de programas problematicos. TimeZonInformation: Configuracion de la Zono Horaria Update: Tipo de instalacion VMM32: Los nombres de las VXD que se han combinado para genera el controlador de dispositivos virtuales VMM32.VXD (esto depende de cada maquina, y se "combina" o genera al instalar windows). SERVICES: Presenta la lista de controladores del Nucleo, controladores de sistemas de archivos y controladorea de los servicios que pueden ser cargados al iniciar windows. Subclaves tipicas dentro de el, son: Agent_name: Subclaves para cada agente del sistema instalado (Monitor de Red, SNMP, etc....) Arbitrators: Arbitros para administrar recursos entre dispositivos competidores (arbitros de direcciones, DMA, E/S e IRQ) Class: Definidos aqui "todas" las clases de dispositivos que

77

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop permite el sistema operativo (discos, monitores, ratones....) MSNP32,MWNP32: Subclaves para la RED en modo protegido de 32 bit, incluye informacion sobre el acceso y los proveedores de seguridad. VxD: Controladores virtuales (VxD) que se cargan en el inico de windows. Independientemente de estos se carga SIEMPRE todas las VxD que se encuentran presentes en el directorio IOSUBSYS. ============================================================ Con esto se finaliza la clave HKEY_LOCAL_MACHINE. **** Es importatisimo volver a resaltar que las claves: HKEY_CURRENT_CONFIG HKEY_CLASSES_ROOT HKEY_DYN_DATA que nos muestra el programa regedit, no son mas que "alias" de otras subclaves del mismo nombre de HKAY_LOCAL_MACHINE, por lo que modificando cualquiera de ellas, (el alias o la original), se modifican ambas. Esto muchas veces es causa de confusion, ya que vemos informacion que aparentemente est duplicada. ================================================================ La otra (unica) clave real ademas de HKEY_LOCAL_MACHINE, es HKEY_USERS ya que realmente la clave HKEY_CURRENT_USER es un alias que apunta en ese momento al usuario actual que est contenido en HKEY_USERS. HKEY_USERS contiene la subclave .Default ademas de todos los perfiles de usuario previamente cargados por los usuarios que han accedido. La informacion de .Default, se usa para crear un perfil de usuario que ha accedido sin perfil de usuario personal. La subclave .Default contiene claves para AppEvents, Panel de Control, teclados, red, y software......etc. ================================================================ Esta es la estructura de la base de registro. Evidentemente est accesible tanto a windows como al resto de programas. El problema surge cuando algun programa no es "respetuoso" y empieza a machacar claves de otros. Hay que recordar que el registro es la base del funcionamiento de windows. Sin el registro windows es incapaz de funcionar y con el registro daado, nos podremos encontrar cualquier cosa. Por ello, aconsejo no utilizar NINGUNA utilidad para mantener el registro. Unicamente debemos utilizar la potencia que nos d "scanreg" para recuperar en caso de problemas. Y nada ms... por ahora.... ya que el "resto", cada clave en particular, depende del program que lo ha instalado. Y si ha sido el propio windows CUUIDADO !!, ya que en este caso, puede depender de la version de la DLL responsable de esa clave. Por ello, hay que tener cuidado al dar soluciones. Lo que es solucion para una persona ante un determinado problema, puede no serlo para otra, ya que por ejemplo puede tener una version superior de los componentes. (por ejemplo: problemas con ODBC. Una modificacion para el ODBC estandar que viene con w98, puede funcionar correcto a un usuario, y puede destrozar, la misma clave, a otro que ha instalado por ejemplo VisualStudio, ya que este ultimo componente, reinstala completamente otra capa ODBC). BREVE RESUMEN DE LA CARGA DE DISPOSITIVOS Y USO DE WIN.INI Y SYSTEM.INI

78

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop ----------------------------------------------------------------------Bien, analizando el bootlog.txt podemos observar la secuncia de carga de los dispositivos de windows. Basicamente podemos resumirla: 1) Carga de los interface con un pocible sistema de red en modo real (las antiguas redes basadas en MsDOS). 2) Carga de la maquina virtual Java, de los enumeradores de dispositivos y del Mininucleo de NT que viene incorporado en windows 98 a lobjeto de poder tratar ya los drivers del tipo WDM (Windows Driver Model), as cono el control de los dispositivos USB. 3) Instalacion de los subcomponentes del sistema de archivos en modo protegido (FAT 32, sistema de CDROM, soporte al fichero de intercambio, soporte al subsistema Virtual 8086) 4) Carga e inicializacion del subsistema de RED. 5) Carga de "enumeradores" de dispositivos, estos son capaces de detectar y "enumerar" los dispositivos de nuestra maquina. 6) Carga de los dispositivos *.386 que tengamos definidos en la seccion [386enh] de nuestro system.ini (ninguno es necesario, si tenemos all dispositivos definidos, es porque algun software, y sobre todo "viejo" software de windows 3.1, nos lo ha instalado) 7) Carga de soporte al ratn. 8) Carga del resto de dispositivos virtales de windows. Hasta este punto, unicamente se ha realizado la carga y no la inicializacion completa de estos dispositivos. 9) Inicializacion de las secciones criticas de los dispositivos anteriores. 10) Los enumeradores, empiezan detectar los dispositivos. Primero los dispositivos "legales" (no PnP)m y posteriormente los legales (PnP), y se van inicalizando los drivers de dichos dispositivos. En este punto *no* se cargan todavia los controladores minipuerto (.mpd). 11) Se cargan e inicializan todas las VXD existentes en el directorio c:\windows\system\iosubsys. Es peligroso en este moemnto la inicializacion de la maquina. Alguna de estas VXD puede ser la causante de pantallas azules y "cuelgue" de windows en este momento. Debemos vigilar este directorio y tener anotadas las que windows nos ha instalado. Posteriormente cuando instalemos software de terceros, vigilar que VXD os puede poner all, por si el sistema no arrancase, o a partir de ese momento, sacase pantallas azules. Las VXD son muy "golosas", ya que se ejecutan en el anillo cero (en modo kernel) de la maquina y por tanto tienen control absoluto sobre ella. Por tanto un programa de aplicacion podra comunicarse con "su" VXD y tener control de la maquina. Por estar en el anillo 0, son muy peligrosas. Una VXD mal codificada, nos causar pantallas azules aleatorias, o incluso que windows no llegue a arrancar. 12) Se inicializa el subsistema de entrad / salida y el subsistema de paginacion. Iguallmente se inicializa en este punto el ACPI si existiese. 13) Se enumeran el resto de dispositivos ACPI y se cargan sus controladores.

79

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

14) Se cargan todos los dispositivos virtuales contenido en el kernel de windows. Monitor, e inclusive el soporte multimonitor. 15) Se cargan los controladores de minipuerto. Esta carga realmente activar ya todo el sistema controlador de un dispositivos de Mass Storage (es decir de un dispositivo de almacenamiento en disco o minipuertos de las tarjetas SCSI. Estos minipuertos, estan realizados y son responsabilidad del fabricante del dispositivo). En este punto se carga entre ellos el ESDI_56.PDR. Este es el controlador especial (de Microsoft) para las controladoras IDE-ATAPI. Este controlador es generico para todo el acceso a IDE, pero es totalmente dependiente a la informacion de los dispositivos en el registro. Es decir, el controlador el mismo, pero hace caso a los datos del registro que han sido cargados con el .INF del dispositivo. Por tanto un -INF erroneo, ser el causnate de que el sistema no nos arranque y se quede colgado en este punto. Igualmente, puede suceder un "cuelgue" en este punto al cargar algun .mpd (miniport) de algun fabricante de hardware. Si es as, debemos arrancar en modo a prueba de fallos y eliminar el dispositivo. Si no nos dejase tamoco, podemos buscar el mpd (normalmente en c:\windows\system\iosubsys), y simplemente borrarlo a mano. Posteriormente ya podremos darlo de baja en el Administrador de dispositivos. 16) Con estos drivers, ya se finaliza el reconocimiento de dispositivos y todos sus enlaces. Por tanto se vuelven a inicializar ya todas las capas correspondiente y todo el "circuito" queda cerrado. 17) Se termina ya la carga de los controladores de fabricante, de teclado y raton (dispositivos de entrada). 18) Se prepara la inicializacion del GDI. Se carga primero el GDO de 16 bits, y los controladores de DIBENG. Posteriormente se carga GDI 32. Y se cargan los fonts basicos de windows. 19) Se cargan los modulos USER y KERNEL (tanto de 16 bits como de 32). 20) Se inicializan ya los controladores de display y se cargan los fonts correspondientes al display. En este momento, ya se "enciende" el fondo del escritorio de windows. 21) Se enumeran los dispositivos en los puertos serie. Reconocimiento entonces de los posibles modem PnP en dicho puerto. 22) Se enumeran los dispositvos de Floppy y el sistema de deteccion de dipositivos de Cinta de Backup. ** En esta carga se ha tenido presente tanto la informacion del regstro as como la informacion contenida en el system.ini (y parte del win.ini). Siendo "puristas" tanto el win.ini copo el system.ini no deberan existir y solamente por motivos de compatibilidad tendran sentido. Esto es la teoria. Realmente no es as. Si los eliminamos, windows no nos arrancar. Y esto es debido a todo el subsistema de 16 bits que posee windows y que basicamente se centra en el modulo GDI. Todo el acceso a las funciones graficas (cuyo responsable es el GDI), se realiza "siempre" a traves del GDI de 16 bits. Aunque nuestra tarea sea de 32 bits, al fina e GDI 32, invova la de 16, y este al resto de subsistemas graficos. Evidentemente esto implica que los

80

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop drivers de nuestra tarjeta grafica son de 16 bits (SIEMPRE). ** Es importante un par de secciones del SYSTEM.INI. * [386enh] Es donde se pueden cargar mediante la linea device=, los dispositivos virutales de windows. En general, lo utilizan antiguos programas windows 3.1 para incorporar los .386. Estos eran los antecesores de los nuevos archivos VXD. Realmente los .386 son tambien dispositivos virtuales. Debemos vigilar esta seccion en caso de problemas con el arranque de windows. Si vemos algun dispositivo .386 en esta seccion, debemos saber que *no* corresponde a windows, sino a algun software de terceros. Para ver si este fuese el responsable de nuestro problemas, podemos deshabilitarlo temporalmente, poniendo un ";" (punto y coma) por delante de la linea correspondiente. El ";" transforma la linea en una linea de comentario, y por tanto windows no lo cargar. * [mci] Esta seccion hay que vigilarla tambien "con cario". Esta est totalmente heredada de windows 3.1 y corresponde a los dispositivos de captura de video y audio (y su manejo). Por tanto cualquier problema con captura de imagen e incluso con tratamiento de imagen, puede tener su causa en esta seccion. En particular, los problemas con el QuickTime anterior a la version 3, son provocados por un controlador introducido en esta seccion. Es otra seccion candidata a tener una copia y que la vigilemos despues de cada instalacion. * Por ultimo, debemos recordar que existe un par de lineas en el win.in con la instruccion load= , o run=. Estas instrucciones son totalmente heredadas de windows 3.1. All en windows 3.1 era donde se especificaba la carga de algun programa o servicio, que ahora en windows 95 / 98 se especifica ya en el registro. Por tanto no debe tener contenido dichas instrucciones. Si lo tuviesen, es que realmente s que hemos intaldo algun "viejisimo" programa de windows 3.1, y por tanto, casi, casi seguro que nos causr algun problema. Estas lineas son otros candidatos a mirar en caso de problemas. CARGA DE PROGRAMAS EN EL INICIO -----------------------------* Este es un tema por el cual se pregunta muy a menudo, y tambien muy a menudo las respuestas aunque sean verdad son incompletas. Existen varios sitios, en los que un programa de instalacion, puede dejar "orden" a windows para que arranque un programa al iniciarse windows. Estos puntos son (algunos muy evidentes): 1) En el grupo: Programas->Inicio 2) En las lineas load= o run= de fichero win.ini que reside en el directorio de windows. (las viejas aplicaciones 3.1, lo dejaban all). 3) En el registro. Podemos abrir con el programa "regedit" el registro, y verificar la clave: HKEY_LOCAL_MACHINE Software Microsoft Windows CurrentVersion

81

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

y dentro de esta ultima, podemos localizar las claves: Run y RunServices. En cualquiera de ellas puede mandarse la ejecucion de un programa. La diferencia teorica entre ellas es que en la primera (en Run), es para ejecutar un programa como "tarea", y en la segunda es para ejecutarlo y registrarlo como "servicio". Este concepto es importante en windows NT, en win 95/98 tiene poco sentido ya que el propio programa es el que permanece o no como servicio. Pero siendo puristas y por mantener una definicion correcta de tarea y servicio, se debe hacer as. 4) Tambien en el registro, y esta suele ser la clave "desconocida", puede hacerse en: HKEY_CURRENT_USER Sotfware Microsoft Windows CurrentVersion y all, pueden existir igualmente las claves Run y RunServices. Pero.... 5) Realmente la clave anterior, "no existe". Sino que es una "vista" en ese momento de una clave rea lque s que existe en el registro. Esta es: HKEY_USERS .DEFAULT Software Microsoft Windows CurrentVersion Por tanto es en esta calve, si, existien las subclaves Run y RunServices, donde deberemos tocar. 6) Debe tomarse nota, que en sistemas multiperfiles, podran exisitr claves por usuario, colgando de la clave HKEY_USERS. Por tanto debern verificarse tambien dichas claves si existiesen. OTROS TRUCOS - OBTENER LA MAXIMA MEORIA MSDOS BAJO WINDOWS ---------------------------------------------------------Recordando los capitulos 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 mapa de memoria "fisica" del msdos. Hasta la direccion 'A000' de memoria son los primeros 640 Ks. Mejor graficamente: 0000 ..... 9FFF A000 B000 B800

640 Ks Memoria grafica de video -64 Ks- marco de mapeo al video Memoria para pantallas de texto (monocromo) -32 KsMemoria para pantallas de texto (color) -32 Ks-

82

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop C000 C800 E000 F000 FFFF ROM BIOS de la tarjeta de video -32 KsLIBRE ? -96 Ks- !!!!!! Marco de pagina memoria EMS (si tenemos activo ENN en EMM386) ROM BIOS de la placa madre 64 Ks ms 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 capitulos 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 direccion libre en vez de empezar en C800, empezaria mas tarde y tendriamos menos espacio libre. Ya veremos como puede saberse esto. Adems, en el 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 la memoria superior: Bien, la primera parte sencilla. Si a continuacion de la linea del config que carga el EMM386.EXE, ya colocamos las instruccions "devicehigh" (en vez de device) y en el autoexec, cargamos los programas con "lh" (loadhigh) por delante de ellos, entonces estos programas se cargarn 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 simbolo del sistema" veremos con un mem /d/p la memoria superior que tenemos "antes" de entrar windows. Y ademas la memoria libre que tenemos bajo MSDOS. (recordad, que no hara falta nada ms 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 superior bajo windows La memoria anterior se puede recuperar. Unicamente debemos aadir en la seccion [386enh] del System.ini (que est en el directorio de windows), la

83

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop 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. ** Bien hasta ahora hemos estado hablando de drivers de disposivivos, programas DLL's y diversos componentes de windows. Pero realmete, que son, y que funciones y para que sirven las DLL's? LIBRERIAS DINAMICAS EN TIEMPO DE EJECUCION: DLL's -------------------------------------------------** Mucho se comenta y se ha comentado sobre la DLLs. Pero n pocos sitios he visto una definicion que el usuario final sea capaz de entender. O bien es una definicion tecnica o bien se quedan tan panchos diciendo que es una libreria dinamica. Y el caballero de a pi, el de la calle se queda con cara de besugo sin saber que le han respondido y la mayoria de la las veces sin atreverse a repetir la pregunta. Vamos a ver si yo soy capaz de explicarlo de una manera sencillita. * Lo logico, en cualquier sistema operativo, o cualquier programa, es que las cosas que haya que realizar muy repetitivamente, se haga desde un solo sitio. Con ello, tendremos tres ventajas: 1) Ahorro de esfuerzos. Si ya esta hecho, se utiliza sin se hace (pensandolo bien) y se utiliza desde cualquier sitio. 2) Lo haga bien o lo haga mal, al menos est en un solo sitio. Facil de locaclizar para su arreglo si tenemos problemas. 3) Facil de mantener. Debido al punto 2) si necesitamos cambiar o ampliar su funcionalidad, est en un solo sitio y solo debemos tocar en ese sitio. Podemos poner un ejemplo: muchos programas, por ejemplo, nos dn el espacio libre en disco. Entonces cada uno de ellos lo calcula de una manera?. no es mas facil ponerlo en un sitio comun y que todos lo calculen igual?.

84

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop Esto seria logicamente, una funcion de una libreria del sistema (de una DLL). El propio sistema o cualquier otro programa, llamandola, sabra el espacio libre. ** Como nota anecdotica, esta es la teoria. En la practica, ni el propio windows 95/98 lo hace. Tenemos un ejemplo: al abrir My PC, nos d siempre correctamente el espacio libre en disco y el espacio total. Pero pinchando en la papelera de reciclaje (en propiedades), nos damos cuenta que en discos mayores a 2 Gb, siempre nos indica que el disco es de 1,99 Gb. Por tanto ni el propio Microsoft hace caso a sus especificaciones (mejor dicho, a la logica de la programacion). Bien, la teoria ya est. Es facil e intuitivo. Por ejemplo, imaginemos que somos programadores y que necesitamos unas funciones basicas de manejo de fechas en nuestra aplicacion. Deiferencia en dias entre dos fechas, sumar dias a una fecha, ver si la fecha es logica o n,....etc. Y ademas somos conscientes que se va a utilizar mucho estas funciones, tanto en nuestra aplicacion, como en otrs que vayamos a desarrollar. Lo logico en este caso, es preparar bien esas funciones, y generar con ellas una libreria dinamica (DLL). Decimos "dinamica", porquw es mas logico que el otro concepto: "estatica". Una libreria estatica, tambien puede generarse, pero obliga a que los programas estn "linkados" (montados) con esa libreria en sus tripas. Por tanto si son "estaticas" tenemos 2 desventajas: 1) Los programas ejecutables, sern mas "gordos". Todos llevaran incorporados dentro esas funciones. 2) Si modificamos algo de esas librerias, deberemos cogernos toda la aplicacion y volverla a generar (volverla a "linkar") y distribuir toda la aplicacion de nuevo. En cambio, si las funciones las tenemos en una DLL, simplemente modificando dicha DLL no tendremos que hacer nada mas con nuestra aplicacion. ** Pero no todo van a ser ventajas. Por desgracia, vemnos que en el mundo real muchos problemas nos provienen de que "alguien" nos machaca una version de una DLL y nos deja de funcionar cualquier otro producto (incluso el mismo windows). Pues es verdad. Voy a intentar explicarlo. Imaginemos que una DLL (antigua) no sabe calcular bien alguna cosa (por ejemplo el tamao en disco, debido a que es tan antigua que no "conocia" la FAT 32). Imaginemos tambien, que esa DLL se arregla y se distribuye con una nueva version del sistema operativo. Y vamos a imaginar tambien que un programa "viejo" de alguna aplicacion de terceros, decidi en su dia distribuir esa DLL por si acaso alguien la tenia daada. Y ademas su proceso instalador es "malo" y no verifica que exista una nueva version, sino que copia directamente la DLL. Pues el resultado est claro: nuestro windows dejar de funcionar correctamente. Fijaros que es un caso, en que por sustituir una DLL de una aplicacion, el sistema operativo se resiente. ** Este caso que parece anecdotico, no lo es tanto. Pensemos que los productos que ahora mismo vienen con el sistema operativo, anteriormente eran productos opcionales y de "libre" distribucion. Por ejemplo, el "motor" de access para que nos funcionen las aplicaciones realizadas en Access, nunca se habia distribuido con el sistema, pero se habia dado siempre

85

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop licencia a los desarrolladores de aplicacion para distribuirlo ellos. Actualmente parte del motor de access se distribuye como DLLs comunes en windows 98. Si algun programador de Access tiene un sistema de distribucion propio (no utiliza el de windows), y "viejo", nos machacar ahora parte del sistema. Lo mismo podemos decir de otras capas de windows: ODBC, OLE, ASPI, TWAIN, etc, etc,.... ** Es por ello, por lo que en capitulos anteriores hemos insistido en la necesidad de utilizar el SFC. Y debemos dar a esta pequea herramienta, mas importancia de lo que parece: nos salvar la vida mas de una vez. Y ademas nos sorprenderemos cuando despues de instalar unas cuantas cosas, ejecutemos el SFC, y veamos que cualquier parecido de nuestro windows con el que instalamos inicialmente es mera coincidencia. Incluso nos sorprenderemos que funcione y sea capaz de arrancar. *** Retomando el tema anterior, hemos visto que as DLLs son necesarias y ademas nos pueden dar muchas ventajas (y algun inconveniente, pero no en si mismas, sino en una mala distribucion). Bien, las DLLs actuales traen decenas e incluso cientos de funciones, que utilizan tanto el sistema operativo como cualquier aplicacion windows. Hay un caso que nos sucede a veces, despues de alguna instalacion en el cual de pronto recibimos el mensaje "Invalid DYNALINK" o "Simbolo DYNA no definido". Esto nos indica un "machaque" de DLL por una antigua. Realmente el mensaje quiere decir que se est intentando utilizar una funcion de una DLL, y la DLL s que existe, pero dentro de ella, no existe esa funcion. Es normal que al ir aumentando el numero de version de la DLLs, por razones de eficiencia, las nuevas funciones similares o que utilicen mucho las de una DLL, se "introduzcan" en esa misma DLL. Por eso "aumenta" su numero de version. A veces porque se corrigen problemas y a veces (las ms), porque se aaden funcionalidades -funciones nuevas-) Si un programa nos sustituye una DLL anterior, probablemente esta no tenga alguna de las funciones que necesite una aplicacion. En este caso, al ir a utilizarlas, nos mostrar el mensaje de error que he citado anteriormente.

OTROS TERMINOS COMUNES EN WINDOWS. DRIVERS Y VXD -----------------------------------------------De: Jose Manuel Tella Llop <jmtella@csi.com> Asunto: Desde que pulsamos el boton de encendido de nuestro PC hasta...... (parte 24) Fecha: martes, 01 de junio de 1999 19:32 DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA..... (Parte 24) ---------------------------------------------------OTROS TERMINOS COMUNES EN WINDOWS. DRIVERS Y VXD -----------------------------------------------** Muchas veces hemos oido la palabre "driver" o una "VxD". Y sobre todo hemos oisdo hablar de ellos cuando tenemos problemas, o bien cuando nos sale

86

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop una pantalla azul (provocada por un "casque") en windows o bien cuando queremos mejorar las "prestaciones" de nuestro PC, y alguien nos comenta: "pues acaban de sacer los ultimos drivers de .....". Bueno, y todo esto que s? para que sirve? puede realmente traerme ventajas o ms bien problemas?... Pues de todo hay. Vamos a intentarlo ver desde el punto de vista de un sistema operativo. Mejor dicho desde el punto de vista de un "diseador" de sistema operativo. (A este nivel, en diseo, todos los sistemas operativos son iguales). DIAGRAMA DE BLOQUES DE WINDOWS -----------------------------La definicion de windows es (de arriba a abajo): 1) Aplicaciones 2) Interfaz de Usuario e Interfaz de ordenes. Base de Registro 3) Nucleo de Windows 4) Administrador de maquina Virtual. Administrador des sistema de archivos instalable. Administrador de configuracion. 5) Controladores de dispositivo 6) ..... hardware ...... (bien, si ponemos "cajitas", incorporamos cada punto anterior en una de ellas, y lo pintamos de arriba a abajo, tendremos justo el diagrma a grandes "bloques" de windows). Vamos a ceirnos a los "Controladores de dispositivos" es decir al punto 5). Este a suvez, lo podemos descomponer de arriba a abajo en otras "cajitas". 1) 2) 3) 4) Otros componentes del sistema operativo. Controlador Universal Mini Controlador. Mini Controlador. Mini Controlador Dispositivo. Dispositivo. Dispositivo.

Es decir, en el punto 3) estn los minicontroladores cuyo desarrollo es responsabilidad de los fabricantes. Windows trae soporte para muchos de ellos, pero la mayoria no estan desarrollador por Microsoft, sino por los fabricantes y son incorporados a la distribucion de Windows si "realmente" superan las certificaciones impuestas por Microsoft. Del punto 2) hacia arriba, es responsabilidad de Microsoft, tanto su desarrollo como su mantenimiento. ** Un controlador de dispositivo virtual (VxD) es un programa en modo protegido de 32 bits y que administra un recursos del sistema. Se ejecuta en modo Kernel en el anillo 0 (ver capitulos anteriores) y por tanto tiene todos los niveles de privilegio para efectuar cualquier operacion. Por lo anterior, es tremendamente peligroso una VxD mal realizada, ya que nos implicar un "culgue" del sistema. Por otra parte, como programador, os puedo decir que es uno de los temas mas complicados de realizar. No por la complicacion de hacer la VxD en s (realmente con conocer el hardware del dispositivo y poco ms nos puede servir), sino porque es muy dificil de probar (y muy engorroso). Normalmente no se realizan suficientes pruebas de estas VxD.

87

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

La "X" de una VXD, muchas veces se sustituye por otra letra. As un dispositivo virtual para un dispositivo de visulalizacion (Display) se conoce como VDD. Para un dispositivo de Temporizacion se conoce como VTD, para una impresora (Printer), como VPD, etc.... Como nota curiosa, los VxD en Win95 / 98, se pueden cargar dinamicamente (la mayoria de ellos) y no es necesario hacerlo en la carga inicial de windows. Igualmente, el sistema operativo, utiliza para ellos memoria "bloqueada". Es decir marcada como no pagiunable, para que permanezcan siempre en memoria e intentar optimizar as los accesos a estas VxD. Son los equivalente a lo que en windows 3.1 eran los archivos .386 Veamos ahora un complento a lo anterior. Recordemos que en diagrama de capas de windows, habiamos visto el Sistema de Archivos Instalable (IFS). Vamos a ver ahora su "descomposicion" SISTEMA DE ARCHIVOS INSTALABLE (IFS) -----------------------------------Volviendo a nuestro sistema de "cajitas" (lo siento, pero no puedo pintarlas en estos archivos de texto. Estaria bien, que en vuestra documentacion, las pintaseis....) 1) Administrador del Sistema de Archivos Instalable 2) FAT de 32 bits (VFAT). Sistema de Archovs de CDROM (VCDFS). Redirector de Red. Posibles componente de software de terceros. 3) Subsistema de E/S (Entrada / Salida) de bloqueo. 4) Supervisor de Entrada / Salida (IOS) 5) Otros niveles (no significativos). 6) Contorlador de Puerto. Nivel SCSI con controlador de MiniPuerto. Bien, lo que los fabricantes de terceros nos suministran es el punto 6). Es decir lo controladores de Puerto (*.PDR), o bien los controladores de Minipuerto (*.MPD) Estos residen en c:\windows\system\iosubsys y son cargados "explicitamente" (al contrario de las VxD que existan en dicho directorio que windows las cargar "implicitamente"). La capa ASPI del punto 6) es suministrada por el propio Windows 95 / 98. ** El conjunto de VxD o PDR, MPR, etc, es configurado en el regstro por un pequeo fichero de texto ("script"), que nos suminitra el fabricante. Son los *.INF. En estos .INF vienen normalmente las cadenas de caracteres con las que el dispositivo se ha reconocido (recordad el tema de PnP), y windows lo unico que hace, es buscar la cadena del dispositivo en esos .INF. Una vez encontrada, monta los drivers que all vienen especificados. Igualmente para otros componetes de windows (y de otros sistemas operativos), el resto de subcomponenetes est siempre claramente diferenciado a nivel de "capas". Es lo ms logico. Si algo funciona mal, unicamente tengo que tocar la "capa" correspondiente. Si quiero aadir una nueva funcionalidad al sistema: lo mismo. Toco unicamente un minidriver y todo debe funcionar. Un capitulo interesante y que merece la pena detallar, es la arquitectura de red. Esta arquitectura se inicializa siempre al arrancar windows. Tengamos o no tengamos tarjeta fisica de red. Pensemos que de cara a los diagramas de bloques ("cajitas") que hemos visto, si la arquitectura de red est pensada

88

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop igual, unicamente sustituyendo la ultima cajita del bloque, que ser el driver de la tarjeta fisica de red, por otra cajita que sea la conexion telefonica a redes, pero que de cara a los bloques superiores responda igual, esta ser nuestra red en windows. (todo el mundo actualmente tiene modem. El PC -y windows- est orientado a la conectividad) ARQUITETURA DE RED EN WINDOWS 95 / 98 ------------------------------------Aunque hablamos sobre win 95 / 98, la introduccion a las redes que vamos a comentar aqu, es de ambito general. Puede aplicarse a cualquier sistema. Unicamente matizaremos explicitamente alguna caracterisitica que posea el win95 / 98 y que no posean otros sistemas. * Las redes actuales estn basadas en un diagrama de capas (similar a las "cajitas" que veiamos en el capitulo anterior. En el panel de control->red, Unicamente vemos 3 componentes (Cliente, Transportes y Servicios), que *no* tienen nada que ver (o muy poco) con las capas de una red. El modelo de capas mas extendido es el modelo OSI, que consta de 7 capas. 7) 6) 5) 4) 3) 2) 1) Aplicacion Presentacion Sesion Transporte Red Enlace Fisico

* La ventaja de tener un diagrama de capas, y cada componente de una capa, perfectamente definida su entrada y salida, es decir su conectividad con la capa superior y con la capa inferior, as como sus especificaciones, nos permite el poder sustituir facilmente una de las capas por otra y que la red nos siga funcionando correctamente. Vamos a ver cada capa: * APLICACION: es el nivel al que pueden acceder las aplicaciones. Representa los servicios que pueden utilizar las aplicaciones de windows. Unicamente podrn acceder a este nivel. * PRESENTACION: traduce los datos desde el nivel de aplicacion a un formato intermedio. Es la encargada tambien de los niveles de seguridad y permite la encriptacion y cifrado de datos, as como la compresion de ellos para intentar transferir por la red el minimo numero de bytes. * SESION: Es la encargada de iniciar, usar y finalizar una sesion de dialogo entre dos programas de aplicacion en dos PC's conectados en red. Se encarga de regular el dialogo, quien transmite, cuando, si se ha recibido correcto un mensaje dar el OK, etc.... * TRANSPORTE: Se encarga de manejar los errores de reconocimiento y la posible recuperacion. Empaqueta grandes mensajes cuando es necesario y se encarga de trocearlos para transmitirlos. Quien reciba el paquete, en la misma capa de transporte, ser el encargado de reconstruir el mensaje. * RED: Es la capa encargada de traducir direcciones logicas y nombre, a direcciones fisicas. Debe determinar ademas la "ruta" desde fuente a destino y es el encargado de conmutar, encaminar y controlar la congestion de datos.

89

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop * ENLACE: empaqueta los bits de la capa fisica en tramas. Es la responsable de transferir una trama de un PC a otro. Despues de enviar una trama, espera siempre el OK del receptor. * FISICO: Transmite bits de un PC a otro y regula la transmision de cadenas de bits sobre el medio fisico. Esta capa, por ejemplo, define el como se une el cable al Adaptador de Red y la tecnica de transmision empleada para enviarlos por el cable. Esta es la defincion y funcionalidad de las capas de red. La unica matizacion sobre lo anterior es el TCP/IP. Este protocolo no es asimilable a las capas anteriore. Por decirlo de alguna manera, el TCP/IP se queda entre las cpas 3 y 4. TCP sera asimilabla al transporte y el IP, seria asimilable a la cpa de RED. (he dicho "asimilable", no que sea lo mismo. La arquitectura TCP es diferente al OSI). Windows 95, nos suministra varios tranportes de red. Por ejemplo, los mas conocidos on NETBEUI (protocolo propietario de Microsoft). IPX (desarrollado por Novell) y TCP/IP (desarrollado por el departamento de defensa de EEUU). Otros transporte que nos suministra es por ejemplo el DLC (para dialogo con arquintecturas SNA -grandes mainframes de IBM-). Igualmente pueden montarse en windows, transportes de red de "terceros", como por ejemplo Banyan VINES, DEC Pathworks, PC-NFS de SUN, etc. Incluso soporta protocolos en modo real (MsDOS) y sus capas de red son cpaces de dialogar con una (solo UNA) red en modo real. CLIENTE PARA REDES MICROSOFT ---------------------------Windows nos suministr un cliente propio, que realmente es un controlador del sistema de archivos en modo protegido (32 bits). El protocolo de comparticion de archivos, permite conectarse a redes LM (Lan Manager). Este cliente permite la conexion sobre cualquier protocolo NDIS que admita interfaz NetBIOS. Cuidado!!, porque esto es lo importante. Recordemos que el Netbeui est diseado sobre NetBIOS. El IPX, puede ir o n sobre NetBIOS, y el TCP lo mismo. Esto implica que el cliente para redes Microsoft (y la posibilidad de compartir archivos e impresoras) solo fincionar si est presente el NetBIOS. Esto ultimo que indica?; pues que si los PCs pueden unirse mediante NetBIOS se podran utilizar sus discos y vermos dichos PCs en el Entorno de Red. Sino es as, no los veremos. Pero.... todo tiene ventajas e inconvenientes. Veamos: * Si utilizamos NetBEUI sabemos que "seguro" que tenemos NetBIOS. Pero este transporte no es "routeable" (no se puede "redirigir"). Por tanto si entre nuestros PCs existe un "router" (o un "proxy" que haga de router), el trafico NetBEUI no podr pasar. S este es el unico transporte de red, ambos PCs no se "veran". * Si utilizamos IPX, podemos decirle que vaya sobre NetBIOS (en la ficha propiedades, al pinchar el transporte en Panel de Control->Red). Por o tanto si lo tenemos as, s que se veran ambos PCs a traves de este transporte. * El TCP/IP instalado sobre win95 / 98, va sobre NetBIOS... si puede. Es decir no hay garantia que vaya sobre NetBIOS, y ademas, si tenemos u router,

90

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop no ir sobre NetBIOS. Esto quiere decir, que no siempre hay garantias de que si tenemos TCP, funcione el cliente para redes Microsoft. ** Evidentemente mi consejo es instalar los 3. No consumen recursos y de esta manera, que los propios PC's al dialogar utilicen el transporte que puedan. Esto carece de sentido en Internet. En Internet el unico transporte que nos va a funcionar es el TCP/IP (y ademas no ir sobre NetBIOS, por lo que no se podr utilizar en Internet el CLiente para Redes Microsoft). Por tanto, aunque tengamos definidos los tres transporte (lo cual es comodo, por si el da de maana queremos unir dos PCs via cable, tarjeta de red, o incluso en llamada telefonica en directo), en el ficha de propiedades de la comunicacion telefonica, deberemos quitar la marca al NetBEUI y al IPX. No es obligatorio porque no van a funcionar, pero agilizaremos la conexion con el servidor de nuestro ISP. Vamos a intentar ahora aplicar esta teoria a la conectividad de dos PC's. COMO CONECTAR DOS PCs en RED ---------------------------Bien, lo que voy a describir aqu, en principio sirve para dos PCs conectados de cualquier manera, es decir conectados en una de las siguiente posibilidades: 1) Con una tarjeta de Red 2) Con un cable serie o paralelo 3) Via modem (con una llamada en directo al otro PC) Vamos a repasar un poco las redes y el soporte que viene incorporado en w95/w98. En una red, a nivel logico debemos tener 3 componentes: 1) Cliente 2) Transporte 3) Servicios Pueden existir varios de cada tipo, es decir varios Clientes, o transportes o servicios. Si pulsamos en Panel de Control->Red, vereis la que instala por defecto w98. El defecto es muy sencillita. Instala un cliente de windows, y un transporte, el TCP/IP. Realmente el TCP/IP no tiene "cliente", o si queremos decirlo de otra manera, el "cliente" es el Navegador, o el Correo o las News, o bien ciertos productos de terceros, como clientes NFS los cuales nos permiten mapear unidades de red (ms adelante veremos que es esto). Igualmente en el TCP/IP hay servicios, pero w98 no nos d ningun servidor de los servicios TCP (FTP, telnet, etc...). (a veces, el Cliente para redes Microsoft, puede "encapsular" Netbios sobre TCP/IP -si nadie hace routing, es decir en una conexion directa- y por tanto podramos utilizar dicho liente directamente. Pero como esto es lo extrao, vamos a olvidarnos de ello). ** Veamos nuestras necesidades: supongamos que lo que queremos es conectar dos PCs y asignarnos un disco sobre el otro PC, para que podamos leer y

91

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop escribir en el como si fuese otro disco de nuestra maquina (mas lento, pero bueno...), o bien asignarnos su impresora e imprimir el ella. Para realizar lo anterior, necesitamos una red con las tres capas "Cliente", "Transporte(s)" y "Servicio". Aunque existen muchas rtedes y transportes, vamos a ceirnos a unas cuantas que nos da gratuitamente w98. (el resto son de pago y son de terceros). Para ello vamos a instalarnos una sencillita red "microsoft". En panel de control->red, le pinchamos el boton de aadir y aadimos el "Cliente para redes Microsot" (eliminamos el cliente de windows). Igualmente debemos aadir un transporte compatible con dicho cliente. Digo "compatible", ya que el TCP/IP no sirve. Para ello aadimos el NETBEUI. Igualmente ahora debemos aadir ademas, el "servicio" de compartir archivos e impresoras. Salvamos la configuracion y nos mandar re-iniciar el PC. Una vez re-arrancada la maquina, ya la tenemos en disposicion de poder conectarnos. Tenemos completa la red. Antes de intentar una conexion, debemos "ofrecer" que es lo que queremos que otro(s) PCs hagan con nuestros discos e impresoras. Para ello con el boton derecho en un disco (o en una carpeta), le damos a "compartir". Nos sacar un cuadro de dialogo donde nos dejar configurar si dejamos ese servicio en lectura o en escritura, con password o sin password. Una vez que lo hayamos compartido, lo veremos con una "mano" por debajo, como si lo estamos ofreciendo. Igualmente con el boton derecho en la impresora, realizamos la misma operacion (si nos interesase que escriban en nuestra impresora). Se supone, que el "otro" PC, tiene la misma configuracion (al menos el mismo tranporte de red, en este caso el NETBEUI), y tambien "ofrece" servicios. ** Llega la hora de la conexin. Vamos a suponer que uno de los PCs es el encargado de "descolgar el telefono", este PC debe estar en "escucha". Para ello en Mi PC->Acceso Telefonico a Redes->Conexion->Servidor de Acceso, pinchamos el "permitir el acceso". Debemos poner una password. Esta ser la password que debe teclear quien quiera conectarse a nuestro PC. Es decir quien vaya a conectarse, debera crearse un conexion, y teclear cualquier usuario, pero la password debe ser la que nosotros hayamos puesto. Una vez conectados los PCs, pinchamos en icono "Entorno de Red" en el escritorio, y all nos aparecera, el PC remoto. Pinchando en l, veremos sus "servicios" y podremos utilizarlos directamente como si estuviesen en nuestro PC. Ademas, con el boton derecho sobre ellos, les podemos asignar una letra como si fuesen un disco. NOTA: Si ademas ambos PCs arrancan el programa "winpopup", podran enviarse mensajes entre ellos. RESOLVER PROBLEMAS DE CONECTIVIDAD EN REDES ------------------------------------------Basicamente debemos comprobar:

92

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop 1) Se debe entrar a windows con contrasea SIEMPRE. 2) Instalar en la RED, al menos: a) Cliente para redes Microsoft y eliminar Microsoft Family Logon b) Transportes: TCP/IP y NEtBeui c) Servicio para compartir ficheros e impresoras. 3) Dentro del servicio para ficheros e impresoras, aunque no es imprescincible, podemos entrar y marcar como "Activo" las caracterisiticas de "Examinador Principal" (estn en Auto, pero conviene activarlas). 4) Si queremos ver directamente en el "Entorno de Red" los PCs, debemos pertenecer la mismo "grupo de trabajo" 5) En cada PC, con el boton derecho del raton sobre el disco, carpeta o impresora que deseamos "servir" a la red, le tenemos que dar "compartir" y el nombre y derechos con el que queremos compartirlo. *** Y ahora conectamos. Sino viesemos el otro PC en entorno de red, las pruebas a realizar seran las siguientes. VERIFICACIONES EN CASO DE APARENTE FALTA DE CONECTIVIDAD ----------------------------------------------------------** Si estamos en comunicacion telefonica, podemos pinchar el icono de la conexion en la barra inferior de tareas y pinchar detalles a ver como nos ha establecido la conexion. Debemos ver que ha establecido ambos protocolos (TCP y NetBeui). Sino fuese as, revisar la configuracion en "ambos" PCs. IMPORTANTE: Igualmente debemos recordar que en comunicacion telefonica (via el "Servidor de Acceso Telefonico", debemos conectarnos son usuario / password al otro PC. Si no nos conectasemos as, o bien hemos entrado en windows sin contrasea, no estaremos "autentificados" en la red. Sin autentificacion no se pueden compartir archivos e impresoras. Posteriormente pasamos a verificar el TCP. En cada PC, arrancamos el programa winipcfg y vemos la direccion IP en el "adaptador PPP" (podemos ver 2 adaptadores PPP, pero uno de ellos debe tener direccion), o bien en el adaptador en el que hemos realizado la conexion, si esta no fuese telefonica. Una vez que sabemos la direccion IP del PC contrario, abrimos en nuestro PC una ventana MsDOS y tecleamos: ping xxx.xxx.xxx.xxx siendo xxx.xxx.xxx.xxx la direccion del "otro" PC. Verificamos que lleguen los mensajes. Si llegan, verificamos que el otro PC es alcanzable por "nombre", tecleando: ping nombre_del_otro_PC Si llegamos tambien, se ha establecido correctamente conectividad IP (y ademas se puede resolver el NetBios sobre TCP/IP, que es lo normal sino existe "routers" o "proxys" por el medio de la comunicacion). Bien, si todo lo anterior funciona, aunque no lo veamos en el entorno de red, vamos a Inicio->Programas y all tecleamos:

93

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop \\nombre_del_otro_PC o \\xxx.xxx.xxx.xxx Se nos tiene que abrir una ventana con los "servicios" que el otro comparte. Ademas con el boton derecho sobre el servicio podremos "mapearnos" una unidad de red sobre l. INTRODUCCION AL TCP. DIRECCION IP --------------------------------Antes de entrar en algunos de los terminos utilizados, vamos a ver un poquito de la identificacion de una maquina. Un PC bajo TCP/IP debe tener una direccion UNICA en la red. Si est conectado a Internet, su direccion IP tiene que ser unica en el mundo. Una direccion IP est compuesta por 4 bytes. Recordemos que un byte puede tener un valor decimal entre 0 y 255. Por tanto una manera de represntar una direccion IP es: xxx.xxx.xxx.xxx (cada grupo de xxx representa un numero entre cero y 255). Este numero tiene que ser unico en el mundo en ese instante. Como se consigue?. Bien, relativamente facil. Existe una organizacion que d las direcciones IP en el mundo. Si es por ejemplo para un solo ordenador, le daran un solo numero. Por ejemplo: 147.25.34.10 Pero no es operativo, que una organizacion se dedique a dar TODOS los posibles numero a todos los posibles ordenadores. Esta solucion no sera operativa, por lo que dicho organismo, lo que concede son "rangos" de direcciones y responsabiliza luego a quien se lo d para el reparto de dichas direcciones. Entonces, se concenden a los grandes organismos que vayan a gestionar mas de 65535 ordenadores, una direccion clase A. Se llama direccion clase A a aquellas que tienen prefijado el primer numero de la direccion IP y luego el resto de numeros puede ser cualquiera. Por tanto unicamente puede haber 255 clases A en el mundo. Y ademas las hay reservadas. Es decir la clase A del tipo: 10.xxx.xxx.xxx est reservada. Y es la que normalmente se utiliza en las intranets. Como existen tan "poquitas" clases A, evidentemente no se conceden. Luego est la clase B. Es del tipo (por ejemplo): 123.112.xxx.xxx (es decir dos numeros prefijados y el resto libres. Una clase de estas puede manejar 65535 ordenadores. Normalmente se los dan a los grandes mayoristas de internet. Y por fin una modesta clase C, tiene 3 numero prefijados y el ultimo puede ser cualquiera. Es decir una clase C abarca 255 maquinas. ** Lo normal es que nuestro ISP tenga un rango de direcciones para dar. Y lo

94

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop que hace, en el moment en que un PC solicita una direccion, le d una de las libres que tiene en ese momento. El software encargado de esto suele ser un servidor DHCP (existen otros metodos, pero esoty nombrando lo mas corriente). Mas adelante, veremos como podemos "explotar" la informacion de la direccion IP y veremos igualmente algunas utilizades que nos permiten, por ejemplo, saber nuestra direccion IP. ** Es importante recordar en esta parte, que por CADA tarjeta de red o por cada modem activo, tendremos una direccion IP diferente en cada adaptador. (esto es importante: el TCP/IP de win 95 / 98, no soporta "routing". Es decir un mensaje que entre en nuestra maquina por el modem por ejemplo, NO puede salir por nuestra tarjeta de red. Para poder hacer esto, hace falta software de terceros, o bien tener instalado Windows 98 Second Edition, el cual es capaz de hacer routing en una conexion a Internet. Es un "routing" parcial, pero totalmente operativo para las conexiones via Navegador, Mail, o FTP.) UNOS CUANTOS TERMINOS UTILIZADOS EN TCP/IP -----------------------------------------Muchas veces hemos oido hablar de TCP, IP, UDP, FTP... Pero realmente que significan estos terminos? Vamos a intentar definirlos un "poco" los terminos anteriores. IP = Internet Protocol. (el resto, es decir TCP y UDP, son protocolos por encima del IP). Este es el transporte basico. Un mensje que sale de nuestor PC es un "datagrama IP". Los datagramas IP iguen la filosofia de la "patata caliente". Es decir, si a t te dan una patata caliente que haces con ella?. Una de dos, o se la "pasas" a otro o la tiras al suelo. Pues exactamente lo mismo hace cualquier maquina en internet. Para que nuestro "datagrama IP" llegue al destino, debe pasar por muchas maquinas. El servidor de nuestro ISP, los routers en internet, etc, etc,. Todos tienen la filosofia de la "patata caliente". Cuando reciben un datagrama IP, lo sueltan inmediatamente a la red.... o se olvidan de l. Ademas, puede incluso pasar, que dos "datagramas IP" que salgan de nuestro PC, lleguen "desordenados" al destino. Si cada datagrama, es una patata cliente, un router en internet puede recibir y enviar al datgarama por una tarjeta suya de red. Por cualquier motivo se le acumulan las peticiones sobre esa tarjeta, por ejmplo, y el siguiente datagrama lo saca a la red por otra de sus tarjetas.... Ademas, puede que reciba un datgrama IP, y como no le viene "bien" el tamao recibido, decide partirlo en DOS y enviar dos datagramas a la salida. Entoces como es que fucnionan las cosas?. Pues bien, para esto est el software que est por encima. Puede ser de dos tipos: TCP y UDP. TCP = Transport Control Protocol. Esta "capa" de software "garantiza" a quien la utilice que el paquete est completo. Es el encargado de recibir los datagramas IP, ver si estan completos, si les falta algo, ordenarlos, etc. Si falta alguno en el paquete, lo solicita de nuevo. Por tanto, los programas de aplicacion que utiliza TCP, tienen garantia de recibir los datos completos y ordenados. UDP = Universal Data Packet. Este transporte, est orientado a datagrama. Por tanto, el software de aplicacion que lo reciba, debe "el mismo" solucionar los problemas. Pedir un paquete si le falta, ordenar los que va

95

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop recibiendo, etc.... Es responsabilidad entonces del programa de aplicacion que lo est recibiendo. ** Existen otros protocolos por encima del TCP/IP. Los mas conocidos son FTP (utilizado para el tranporte de ficheros) HTTP (para paginas web).... y decenas de ellos ms, que se salen un poco del alcance de estos capitulos. CLIENTES SOBRE TCP/IP --------------------En el capitulo anterior hemos introducido un poco sobre los transportes de red. Recordando un poco, comentamos que el TCP/IP se queda a un equivalente del nivel 3-4 de la cap OSI (equivalente, no igual). Ademas hemos comentado sobre los "clientes" de red. Es decir sobre la capa de red que nos permite "ver" o "compartir" recursos con otras maquinas. Y hemos comentado, que esto no es posible si tuilizamos unicamente TCP/IP puro. Como windows 95 / 98, si puede, instala NetBIOS sobre TCP/IP, entonces, cuando est funcionando NetBIOS, s que funcionar el Cliente para Redes Microsoft. En otro caso, deberemos "ademas" instalar un transporte de red que pueda utilizar dicho cliente. Existen capas de red (similar a los Clientes), de terceros que nos dan esta posibilidad. Por ejemplo el Cliente NFS. El cliente NFS (Network File System), es un cliente que es capaz de utilizar discos (mapearse discos) sobre TCP/IP puro. Para que esto sea posible, evidentemente tiene que haber tambien un "servidor" NFS. Ambas utilizades son utilidades de terceros. Unicamente WIndows NT, cuando se le instala el paquete de Microsoft SFU (Sytem For Unix), suministra un cliente y un servidor NFS. Pero unicamente para windows NT Server y no para win 95 / 98. La pregunta, entonces, es para que nos sirve el tcp/ip?. Pues si est "solito", para nada. Hacen falta programas de aplicacion por encima. Por decirlo de alguna manera, este es el "cliente" por excelencia qe estamos acostumbrados a utilizar. Estamos acostumbrados a utilizar un navegador. Bien este es el programa por excelencia que utilizamos a diario, pero existen varias utilizades incorporadas en win 95 / 98 que es conveniente conocer. Vamos a intentar darlas un repaso. UTILIDADES TCP/IP INCORPORADAS EN WIN 95/98 ------------------------------------------Bueno, vamos empezar la casa por el tejado. Aunque en principio parecera mas logico comentar un poco como se estable una comunicacion IP. que son los puertos, que es un socket, etc..... vamos a ver primero una serie de "comandos" o utilidades que incorpora win 98. La mayoria son utilidades "estandard" que estn en cualquier otro sistema operativo, sea o n de Microsoft. Recordar que la mayoria de estos comandos, mientras no diga lo contrario son comandos para dar en una ventana MsDOS. Es decir con comandos de "consola". Estos comandos podemos ejecutarlos con /? para que nos muestren una pequea ayuda.

96

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop PING : Este comando nos permite enviar un "paquete" de prueba a otro ordenador. S el otro ordenador est vivo, nos responder. Aunque tenemos practicamente la garantia de que el PING nos funcione contra cualquier ordenador, esto puede limitarse. Me explico: el comando PING no utiliza IP, utiliza ICMP. El trafico ICMP puede cortarse. Algunos servidores que quieren permanecer ocultos en la red, pueden filtrar este trafico y nunca responder ese servidor a un PING. WINIPCFG (este es un comando windows). Nos dar la direccion IP sobre cualquier adaptador de red. Igualmente nos informar del gateway y del DNS que tenemos en ese momento. Esto puede tener una utilidad que se me ocurre ahora mismo. Imaginemos que tenemos camara de video y queremos establecer videoconferencia "privada" con NetMeeting (sin pasar por ningun servidor de internet), directamente con otra persona. Para ello, podemos querdar a una hora determinada, y mediante ICQ o mail, por ejemplo, informarnos del IP de la otra persona e igualmente enviarle nuestro IP. Con esto, ahora podemos configurar MetMeeting en directo a ese PC para establecer entre nostros una videocinferencia. Esto es en directo, no pasa por ningun servidor ni lista de directorio en servidores y por tanto la comunicacion es mucho mas rapida. IPCONFIG : nos muetra una informacion detallada de datos sobre todos nuestros adaptadores de red. Lo mejor es ejecutar un IPCONFIG /ALL y como la salida de datos es muy grande deberemos o bien redirigirla a un fichero o simplemente teclear: IPCONFIG /ALL | MORE NETSTAT : sirve para ver el estado de los puertos (mas adelante veremos este concepto), en nuestro PC. En principio utilizarlo con el parametro -a. Es decir NETSTAT -a Esto nos mostrar los puertos que est utilizando. Como introduccion, debemos comentar que existen 65535 puertos disponivbles. Del 0 al 1024 son reservados para el TCP, y del 1024 en adelante para aplicaciones de usuario. En particular una posible "aplicacion" de usuario es el famoso BO (Back Orifice). Este "pilla" un puerto 3x.xxx (treinta y tantos mil). Tiene un valor por defecto, pero cuidado: se puede "configurar". FTP : nos permite de una manera un poco "rupestre" (entrar en l y darle HELP, el transferir datos entre ordenadores en TCP/IP. Es el cliente FTP que trae windows. Tambien en la actualidad, el propio navegador de internet (IE), es capaz de realizar una transferencia FPT, siendo en este caso mas comodo. Pero tambien mas lento. Igualmente recuerd que podemos utilizar programas FTP de libre distribucin de terceros. Y alguno realmente buenos que merece la pena tener en cualquier instalacion. (el FTP utiliza por defecto el puerto 21 del TCP/IP) TELNET : nos permite entrar en un ordenadro remoto con emulacion de terminal. Es decir si el ordenador remoto tiene activo el servicio de telnet y tenemos usuario / password en l, nos permitir manejarlo como si estuviesemos fisicamente en su pantalla y teclado. (el TELNET utiliza por defecto el puerto 23 del TCP/IP) NET : Admite muchos subparametros. Nos permite por ejemplo mapearnos una unidad de red, desonectarla, y en general utilizar directamente todos los comandos para actuar sobre una red. Es el "antiguo" comando LM (Lan Manager). COMUNICACION TCP/IP -------------------

97

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop En TCP/IP, todo se basa en la filosofa cliente/servidor. Un "host" (no es nada mas que un ordenador cualquiera, un PC, o uno gigantesco), puede ofrecer servicios a la red. Este es un servidor. Y otro puede solicitar esos servicios (cliente). Lo "normal" (en un PC) es ser siempre cliente, es decir solicitamos servicios de FTP, HTML, news,.... Como se solicitan los servicios o como hablan dos maquinas bajo TCP?. Muy sencillo, se establece un "socket" -un canal de comunicacion- y como? pues un socket no es nada mas que una conexion entre una maquina y un puerto con otra maquina y otro puerto. Es decir intervienen 2 maquinas y 2 puertos. En el IP, se definen 65535 puertos y desde el 0 al 1023 estan reservados para los servicios estandard del TCP (html=80, ftp=21,...etc) y desde el 1024 en adelante estan reservados para programas de usuario. Para abrir un socket (canal de comunicacion), una maquina debe solicitar una direccion ajena y un puerto. Si en ese puerto, en la otra maquina, hay un programa escuchando (LISTENING), este programa atender a nuestras peticiones. Cuando abrimos el "navegador" y tecleamos una pagina, el funcionamiento sera el siguiente: 1) Nuestro PC para abrir el socket necesita conocer la direccion del destino (el puerto ya lo sabe, ya que por defecto en html es el 80). Esta direccion debe estar en formato xxx.xxx.xxx.xxx (4 numeros separados por puntos -direccion IP-) 2) Nuestro PC, investiga si conoce el ordenador destino (es decir investiga un nombre, por ejemplo www.microsoft.com). Si no lo conoce debe investigar. 3) Aunque para esta investigacion intervienen varios pasos (fichero host, mascaras de subred, etc), vamos a simplificarlo. Nuestro PC se lo pregunta al DNS de nuestro servidor (recordad que ponemos DNS al definir una conexion telefonica, o bien nuestro proveedor nos lo da automaticamente al establecerlo. 4) DNS = Domain Name Solver. Es decir nos va a resolver por nombre de dominio su direccion. Por tanto nos devuelve su direccion IP. 5) Con esto el navegador ya puede abrir un socket desde nuestra direccion, y un puerto "cualquiera" !!! libre de nuestro PC y la direccion del destino y el puerto 80. 6) Es decir lo que hace en ese momento es pedirle a nuestro propio PC un puerto libre, imaginemos que le d el 2122, y entonces establece un canal de comunicacion entre ambas maquinas desde el puerto 2122 en el cual "escuhar" nuestro navegador para esa conexion y el 80 en el destino, que ser el que nos pase la informacion (la pagina web). Bien, esto es extensible para todos los servicios IP (FTP en el 21,TELENT en el 23,..etc). Y para cualquier cosa que queramos hacer. Fijaros que en el ejemplo anterior, en la otra maquina, no hay un navegador, sino que hay un programa, que lo que hace es escuchar "peticiones" en el puerto 80, cuando las recibe, analiza lo que le piden, busca la pagina y nos la envia. Este es un servidor de paginas web. ** Y una vez con esta introduccion, vamos a "mezclar" todos los conceptos y darlos un pequeo "repaso".

98

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

APRENDIENDO UN POCO DEL TCP/IP -----------------------------Bueno, este articulillo va a ser un poco mas complicado. Mas complicado para m ya que precisamente no me explico todo lo bien que quisiera. El objetivo que pretendo, es clarificar un poco sobre el TCP y aprender basicamente como con el TCP puedo convivir en un ordenador que est conectado con dos adaltadores de red. Es decir por una parte a una red interna (intranet), mediante tarjeta de red, y a la vez est conectado a internet via modem. Y ser posible referenciar y utilizar simultaneamente la intranet y el internet. Este tema que parece una tontera no lo es tanto. Y el dia de maana, cuando tengamos ms de un PC en casa unidos mediante red, y a la vez uno de ellos por modem a internet, el evitarnos quebraderos de cabeza. Igualmente en esta situacion estar mucha gente en su trabajo. Intranet para la red corporativa e internet via modem. Antes de entrar en detalles, es necesario entender unos pocos terminos. INTRODUCCION -----------1) DIRECCION IP --------------Bajo TCP/IP cada ordenador, debe tener una direccion unica en el mundo. Esta direccion viene especificada por 4 numeros, separados por puntos. Y cada uno de estos numeros puede ser de 0 a 255. Es decir, la direccion mas pequea ser: 0.0.0.0 y la maxima: 255.255.255.255 Un direccion normal, por ejemplo, es: 128.10.34.234 e identifica a un unico PC en el mundo. Hay direcciones que por definicion, se consideran reservadas. Es decir te garantizan que no existen en internet y por tanto pueden utilizarse para una Intranet. Un ejemplo de estas direccion es la red "10". Es decir la 10.x.x.x. (por eso, infovia, que no es mas que una gigantesta intranet, lo utiliza). Otras reservadas son la: 169.x.x.x. Esa direccion IP, debe existir para cada tarjeta de red (y la conexion telefonica es "otra" tarjeta de red) que existan en nuestro PC. Por tanto, si nuestro PC tiene una tarjeta de red interna y ademas una conexion telefonica, cuando estemos conectados a internet, tendremos DOS direcciones IP. Una para nuestra tarjeta interna de red y otra para la conexion telefonica. Siempre mediante el comando WINIPCFG podemos ver la direccion que tenemos en CADA una de las tarjetas adaptadoras de red de nuestro PC. Igualmente el comando: ipconfig /all

99

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

nos d una informacion mayor que el anterior. Este comando ocupa mas de una pantalla, por lo que lo mejor es darlo con: ipconfig /all | more 2) MASCARA DE SUBRED -------------------Aunque este concepto no es tan basico, voy a intentar definirlo (pero de una manera MUY simplificada, y con terminologia de uso corriente, es decir, es ms potente de lo que vamos a ver aqu). Se define como MASCARA, aquella direccion que enmascarando nuestra direccion IP, nos indica si otra direccion IP, pertenece a nuestra SUBRED o no. Es decir, imaginemos que nuestra direccion IP es la 10.2.3.4 con mascara 255.255.0.0. Esto le indica al sistema, que todas las maquina 10.2.x.x pertenecen a nuestra subred y por tanto cualquier mensaje enviado a nuestra subred es "soltado" inmediatamente a la red, ya lo recoger quien corresponda. Si est fuera de nuestra subred, el circuito de envio del mensaje es totalmente diferente.... y fuera del ambito de este articulo (por ahora). 3) SERVIDORES DE DIRECCIONES ---------------------------Bueno, y la pregunta del millon como obtenemos o asignamos una direccion IP? Existe evidentemente un problema: dos maquinas en el mundo en la misma red, no pueden tener la misma direccion IP (todo Internet es una UNICA red. INFOVIA es otra unica red entendida como intranet gigantesca). Olvidemonos por ahora de Internet. Imaginemos que yo estoy en una Empresa con 100 PCs. Evidentemente como "administrador", yo tendra que asignar a cada PC una direccion unica y llevarlas apuntadas y tener cuidado que no haya dos duplicadas. Evidentemente muy engorroso y puedo cometer fallos. Otra posibilidad, que tenga un "servidor de direcciones" DHCP es el sistema mas corriente. Es decir nuestro ordenador no tiene direccion IP, pero lo hemos configurado para que obtenga una mediante DHCP (todo esto se puede configurar en Panel de Control->Red). Entonces nuestro ordenador al encenderlo, busca un servidor DHCP en la red, y le pide un numero de direccion IP. El servidor se lo d, y ya est. El propio servidor se encarga de que no haya IPs duplicadas. (Windows NT puede actuar como servidor DHCP, y linux, y Unix.....). Ultima posibilidad -la ms elegante-, pero solo aplicable a windows 98. Ento no es aplicable a win95. Windows 98 incorpora un mecanismo llamado "Autonet Configuration". Consiste en que sino tenemos direccion IP, y no existe servidor DHCP, el solo se "inventa" una direccion en ese momento. Evidentemente primero "busca" en nuestra intranet una direccion que no este ocupada. En este caso siempre busca una direccion del tipo 169.254.x.x (con mascara de tipo 255.255.0.0). Esta direccion como vimos al principio es una de las reservadas y de las que se garantiza que no existan en internet. 4) SERVIDORES DE NOMBRES (DNS) -----------------------------Esto supongo que ya "sonar" ms. El famoso DNS. DNS = Domain Name Solver Es decir el "resoluctor" de nombres. Cuando estamos en internet, nosotros

100

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop tecleamos simplemente www.microsoft.com y nos conectamos al ordenador de microsoft. como es posible, si en un mensaje TCP, tiene que ir la direccion, es decir los 4 numeritos de direccion? Pues alguien lo tiene que resolver. El TCP/IP sigue el siguiente orden: a) Primero busca a ver si existe un fichero llamado HOSTS en nuestro directorio de windows. (ver un ejemplo que viene siempre en el fichero hosts.sam). En este fichero, tenemos asociadas direcciones a nombres (o podemos tener....) b) Si el fichero HOSTS no existe o bien no contiene el nombre que buscamos, entonces se lo preguntar al DNS. El DNS resuelve el nombre y nos devuelve direccion y ahora ya nuestro TCP, sabe a que direccion debe ir. 4) GATEWAY ---------Es la direccion de la maquina que nos va a dar salida a la red. (suponiendo que exista tal maquina). Evidentemente si tal maquina no existe, somos "nosotros" mismos, o sea nuestra propia maquina. TABLAS DE RUTAS --------------Bien creo que con estos conceptos, ya podemos empezar un poco. Vamos a analizar primero como est nuestra maquina. Supongamos que tenemos una tarjeta de red y un modem. Supongamos tambien que *no* estamos conectados a internet. Tal y como hemos visto antes, nuestra tarjeta de red, tendr una direccion. Bien porque se la hemoss dado a mano, bien porque nos la ha dado un servidor DHCP. o bien porque windows 98 se la ha "inventado". Tenemos el comando "winipcfg" para mirar la direccion. Igualmente (y yo lo utilizo mucho), el comando route print nos sacar una informacion similar a esta: Network Address 127.0.0.0 169.254.0.0 169.254.1.15 169.254.255.255 224.0.0.0 255.255.255.255 Netmask 255.0.0.0 255.255.0.0 255.255.255.255 255.255.255.255 224.0.0.0 255.255.255.255 Gateway Address 127.0.0.1 169.254.1.15 127.0.0.1 169.254.1.15 169.254.1.15 169.254.1.15 Interface 127.0.0.1 169.254.1.15 127.0.0.1 169.254.1.15 169.254.1.15 0.0.0.0 Metric 1 1 1 1 1 1

Fijemonos que muestor PC en este cao tiene la direccion 169.254.1.15 (inventada por win98), y tambien debemos saber, que la direccion 127.0.0.1 tambien es siempre nuestro PC (es la llamada "localhost") Esta tabla de rutas (que puede ser modificada y puede ser mucho mas complicada si tenemos varios adaptadores de red o bien tenemos abierta ademas una conexion telefonica), se lee de abajo a arriba. (y las direcciones que empiezen por 255 y 224 son reservadas y por tanto las ignoramos y las direcciones que terminene en 255 tambien estan reservadas).

101

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop Leyendola de abajo a arriba quiere decir: a) Ignoramos la ultima, penultima y anterior. Ahora nos encontramos con 169.254.1.15 su mascara es 255.255.255.255 (es decir se refiere a esa SOLA direccion), y si gateway es el 127.0.0.1 es decir el "localhost" por tanto es la direccion de la propia maquina. Mejor dicho, la direccion de la tarjeta de red de nuestro PC. ESTO ES IMPORTANTISIMO. b) Para las direcciones 169.254.0.0 mascara 255.255.0.0 es decir entonces para cualquier dirteccion del tipo 169.254.x.x el gateway es 169.254.1.15, es decir nuestra propia tarjeta de red. Por tanto, todo lo que enviemos a cualquiera de esas direcciones, saldr por la tarjeta de red. c) 127.0.0.0 es igual a "localhost". d) No hay mas, por tanto cualquier otra direccion, nos dar inmediatamente un error de direccion o direccion no encontrada. Pero inmediatamente, sin llegar a salir de a la red. ** Veamos ahora un caso mass complicado. La misma maquina y ademas de la tarjeta de red, abrimos una comunicacion telefonica. Network Address 0.0.0.0 127.0.0.0 169.254.0.0 169.254.1.15 169.254.255.255 195.232.3.0 195.232.3.129 195.232.3.255 224.0.0.0 224.0.0.0 255.255.255.255 Netmask 0.0.0.0 255.0.0.0 255.255.0.0 255.255.255.255 255.255.255.255 255.255.255.0 255.255.255.255 255.255.255.255 224.0.0.0 224.0.0.0 255.255.255.255 Gateway Address 195.232.3.129 127.0.0.1 169.254.1.15 127.0.0.1 169.254.1.15 195.232.3.129 127.0.0.1 195.232.3.129 195.232.3.129 169.254.1.15 195.232.3.129 Interface 195.232.3.129 127.0.0.1 169.254.1.15 127.0.0.1 169.254.1.15 195.232.3.129 127.0.0.1 195.232.3.129 195.232.3.129 169.254.1.15 195.232.3.129 Metric 1 1 2 1 1 1 1 1 1 1 1

Leamosla de abajo a arriba: a) Ignoramos las 4 ultimas por el razonamiento anterior. b) La primera significativa es la 195.232.3.129. Con mascara 255.255.255.255 apunta al localhost. Por tanto esta es la direccion que me acaba de asignar mi proveedor de internet a mi tarjeta de red (en este caso el modem). Tambien vemos que para los 255 PCs de la submascara de red permitidad, estn disponibles directamente en mi subred (resto de PCs de mi subred que el proveedor me dejaria acceder inmediatamente sin salir a internet). c) Luego, ascendiendo en la tabla de rutas nos encontramos con lo visto anteriormente. Pero con un detalle curioso. La metrica de los PCs de mi subred a traves de la tarjeta adaptadora es la "2". Por tanto, se acaban de "enumerar" los adaptadores de red. Primero el modem, y luego mi tarjeta de red. Esto es importante. d) Y por fin vemos arriba del todo que para cualquier direccion (0.0.0.0) que no hayamos encontrado antes en la tabla de rutas e investigando primero por orden de las metricas correspondientes, mi gateway es mi direccion IP a traves del modem y por tanto saldr a la red a traves del modem. ** Y con esto, creo que podemos ya tener una pequea idea sobre el TCP/IP.

102

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

UN ADAPTADOR "ESPECIAL" DE RED: EL MODEM ---------------------------------------Bueno, tal y como habiamos visto anteriormente, toda la filosofica de una red est basada en un esquema de "capas" o "cajitas" cada una con sus funcionalidades perdectamente definidas. Una de las capas, es precisamente el Adaptador de Red. Nada nos impide que el Adaptador de Red sea un modem (o un cable sere o paralelo), en lugar de la "clasica" tarjeta de red. * Pero en el momento en que nos ponemos a trabajar con modem, tambien a veces, empiezan a surgir problemas (sobre todo en este pas de pandereta -Espaa- y su monopolio telefonico. Recordemos unicamente que en Espaa, existen mas ISP que en toda Europa y USA juntos). Vamos a introducir un poco lo que son los modem y los problemas que nos podemos encontrar. Modem, no es nada ms que un sencillo modulador-demodulador para poder utilizar el cableado telefonico. Sobre el protocolo modem, se encapsula un trasporte de red el TCP y ya est. (realmente sobre PPP: Point to Point Protocol). En un principio, los modem funcionaba a velocidad "pequeas". 1200, 2400 e incluso los rapidos a 9600. Bien a estas velocidades no suele haber problemas. Pensar que un cable telefonico, tiene ademas "ruido" (por muy "limpio" que sea). Existe una ley fisica que a partir de la maxima relacion posible seal/ruido, deduce que la maxima velocidad teoria es de 33600 bps (bits por segundo o baudios). * Vamos a quedarnos aqu antes de pasar a los modem y a la tecnologia digita de 56 Ks y su norma aprobada: V90. Vamos a dar un repaso primero a la "clasica" comunicacion "analogica" hasta 33600 maximo. ELEMENTOS QUE INFLUYEN EN LA COMUNICACION ----------------------------------------* Veamos unicamente los que conocemos en nuestro PC y que realmente influyen en la comunicacion. Pensemos que el modem, (aunque sea interno), realmente es "solo" un aparato que se conecta a un perto serie del modem (empiezan a surgir modelos USB, pero vamos a ignorarlos de momento). Por tanto, el primer elemento que nos surge es el "puerto serie". Actualmente ya no hay problemas con etos puertos y todos ya son capaces de alcanzar los 115200 baudios. Por tanto, en principio una velocidad "mayor" que la que teoricamente alcanza el modem. Pero cuidado.... he dicho "en principio". Ya veremos mas adelante que esto puede ser un cuello de botella. Posteriormente tenemos un cable al modem. (muy "cortito" en los modem internos, pero ese "cable" o contactos en un circuito impreso, existe. Por tanto es similar a uno externo). Y por fin el modem. * Bien los modem actuales al concectarse (y empezar a "pegar" pitidos entre ellos), lo que estn es dialogando el como van a transmitir. Se interrogan sobre sus velocidades, y realizan una prueba de velocidad tanto en transmision como en recepcion. La mayoria de los modem, pueden llevar

103

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop velocidades diferentes de recepcion y de transmision. Igualmente interrogan al modem "contrario" sobre el protocolo a utilizar para detectar y corregir los posibles errores y otra cosa importante: si se puede utilizar algun protocolo conocido para "comprimir" los datos. Si esto ultimo es posible, realmente se puede enviar la informacion comprimida y por tanto a pesar de la "lentitid" de los modem, se puede conseguir tasas efectivas de transferencia altas. Como ejemplo, imaginemos que los modem han dialogado perfectamente un protocolo de compresion. Bien, no todos los archivos se pueden "comprimir". Por ejemplo los archivos ZIP, ya lo estn. Pero las paginas HTML, etc... realmente son "documentos de texto". Por tanto se pueden (y deben) comprimirse perfectamente. Como curiosidad, la compresion depende de los datos en s. Hay ficheros que pueden comprimirse 2 a 1, otros 1 a 1 (los ZIP que no pueden comprimirse), y otros, por ejemplo los de texto, pueden comprimirse hasta un maravillosos 16 a 1. Bueno, pues pensemos ahora, que ha dialogado compresion. Que vamos a enviar un fichero de texto y que en ese fichero se consigue la maxima compresion: 16 a 1. Y que tenemos una conexion perfecta a 33600. Entonces el modem recibe a 33600. Como habian "negociado" compresion hardware, el propio modem "descomprime los datos", y al descomprimir por un factor de 16 queda: 33600 * 16 = 537.600. Imposible!!. Por el "cable" del modem hemos visto que solo pueden ir 112500. Luego entonces, el modem, al ver que no puede "alimentar" al cable de salida, empieza a "renegociar" su velocidad con el modem contrario. Como la compresio es de 16 a 1 y lo maximo que puede recibir es 112500, realiza el calculo de 112500 / 16 = 7031. Y entonces "baja" (o lo intenta) su velocidad por debajo de 7000 baudios. Suena ridiculo no?. Como esto "pasa" con todos los archivos, y en cada uno de ellos su posible factor de compresion es diferente, pues al modem lo estamos volviendo loco. Cada 2 por tres est intentando renegociar velocidad. Pensemos que al bajarnos una pagina web, hau varios archivos y muchas imagenes, cada uno de ellos tendr (admitir) un factor de ocmpresion diferente.... esto es un "cisco". * La pega es el famoso "cablecito". (o el puerto para ser max exactos). La limitacion de velocidad del puerto. Actualmente en las placas madre de ultima generacion, ya hay puertos que admiten hasta los 921.600. La pega es que por ahora, no hay modem que sean capaces de comunicarse con el puerto a esa velocidad. ** Bueno: y como podemos solucionar esa "pega"?. La respuesta es inmediata. Como actualmente nos "sobra" CPU, que tal si los datos los comprimimos a priori por "software". Es decir lo comprime nuestra CPU, y ya lo envia comprimido al modem. Como est comprimido. el modem no utilizar para esos datos la compresion "hardware", o si la utiliza, d igual, no va a poder. Bien, si el ordenador contrario hace lo mismo, estamos utilizando al maximo todo nuestro "circuito" de comunicaciones. Ahora solo falta saber si esto es verdad: como nos informa windows?. Tenemos varias maneras de saberlo: 1) As en principio, si vemos que el icono de conexion telefonico, nos dice unas velocidades "raritas" y que no son posibles: por ejemplo 112500 o 57600: malo. Nuestra comunicacion es "mala", windows nos est informando de la maxima velocidad en el cable del puerto al modem. No nos est informando

104

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop de la velocidad "real" del modem. En este caso, no se ha podido negociar compresion, lo cual es o bien por ruido en la linea, o porque los modem no se entienden (improbable a estas alturas), o porque "explicitamente" en la conexion, le hemos quitado la marca de "dialogar compresion". La mayoria de los ISP chapuzas actuales, nos aconsejan quitar este marca. De esta manera se curan en salud: por una parte, inocentes de nosotros, como el modem nos dice 115200 nos creemos que estamos a velocidades altisimas, y por otra parte, el propio ISP que suele tener problemas en sus baterias de modem con las compresiones, pues se curan en salud y no invierten ns dinero en hardware. 2) Otra manera de saber la velocidad, es en windows 98, mirar un archivo que tiene el nombre de nuestro modem y la extension .LOG en el directorio de windows. All conserve una historia de nuestra ultima conexion. En esa historia podremos ver si se ha negociado o n la compresion, correccion de erores y la velocidad "inicial" de conexion. Recordad que windows "no refresca" la velocidad y esta se est renegociando constantemente. po cierto, la culpa de que windows no nos muestre nada mas que la velocidad inicial, no es de windows. Es por diseo de los modem. Los modem, unicamente informa la primera vez. Luego no vielven a informar durante la conexion. 3) Una manera de ver la velocidad "real" del modem, es si nuestro proveedor nos deja conectarnos via hyperterminal. (La mayoria de los IPS lo permiten). Esta manera vamos a describirla a continuacion: VELOCIDAD REAL DEL MODEM ----------------------Ha surgido varias veces como tema de discusin la velocidad real del modem. Habia gente que comentaba que aunque su modem es un 28,8 vea velocidades bajo windows de 56000 o incluso velocidades de 112500. Bien vamos a distinguir, todo lo que interviene en la transmision y ademas como podemos "preguntarle" al modem su velocidad real. En una comunicacion via modem intervienen varios componentes fisicos. Repasemos un poco lo que hemos introducido en el capitulo previo. 1) El puerto de comunicaciones 2) El modem 3) El dialogo entre nuestro modem y el de nuestro ISP. La comunicacion desde el puerto a nuestro modem es de un maximo de 115200 (con los actuales puertos. Ver las excepciones que hemos citado antes). La comunicacion entre los dos modem es el minimo de la velocidad indicada en nuestro modem y el modem del proveedor (por ejemplo 33600). Surgen dos preguntas comantadas anteriormente. Repasemoslo un poco: 1) por que es superior la velocidad de puerto/modem que la de modem/modem?. Bien, es sencillo, los modem, ademas de "dialogar" la velocidad (en la cual influyen ruidos de la linea, etc), dialoga la "compresion" de los datos. Siempre intentan compresion. Evidentemente si nos estamos bajando un fichero .ZIP, ya no puede comprimirlo. Pero si nos estamos bajando "texto", puede llegar a factores de compresion de 16 a uno. En este caso, nuestro modem "descomprime", por tanto incluso puede saturar la linea de 115200 con el puerto de comunicaciones, por lo que debe volver a dialogar con el otro modem para "bajar" su velocidad. En caso de datos insuficiente, intentar

105

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop por el mismo motivo "subir" la velocidad. 2) que nos indica la velocidad que vemos en el icono de windows?. Bien, pues depende. Primero, siempre nos indica la misma. Es siempre la misma independientemente que baje o suba. Y es la velocidad "en el momento" de la conexion inicial. Pero otra pregunta: que velocidad, la de la linea puerto/modem o la de modem/modem es la que nos muestra windows?. Pues depende de nuestro modem y del protocolo negociado. Algunas veces incluso tiene la desfachated de decirnos 115200, cuando esto es imposible!!. La culpa no es de windows, es de la informacion que le pasa el modem a windows, que insisto, depende del protocolo negociado y normalmente en V90 y con ciertos modem, nos dice siempre 115200. Y nuestro modem es de 56K!!. COMO PODEMOS SABER LA VERDAD? Bueno, para ello, lo que debemos hacer es realizar una conexion con la herramiente Hyperterminal de windows. Marcamos a nuestro proveedor. Una vez establecida la comunicacion, le damos a INTRO y luego tecleamos despacito "+++" (3 simbolos "+"). Nos debe salir "OK". En este momento hemos entrado en dialogo con el modem. Ahora le tecleamos (en minusculas o en mayusculas, pero NO debemos mezclar ambos): ate1 (no veremos ninguna letra por pantalla, pero lo est recibiendo el modem. de esta manera le ponemos "eco" al modem, para que a partir de ahora, veamos lo que tecleamos). Posteriormente tecleamos: atw2 ato Y nos mostrara por pantalla la velocidad REAL de portadora entre ambos modem as como la compresion negociada entre ellos. ULTIMAS TECNOLOGIAS: 56 Ks, V90, RDSI, ADSL y "CABLE". -----------------------------------------------------* Posteriormente a los modem "analogicos" han surgido los digitales. En el tramo de cable telefonico desde nuestro PC hasta nuestro ISP (y por tanto hasta internet), intervienen una serie de tramos analogicos y digitales. La comunicacion desde nuestra casa a la centralita telefonica, no es nada mas que un hilo de cobre por donde siempre va informacion analogica. Es decir, pensando en el sonido que emitimos en el microfono de nuestro telefono, esta va "tal cual" lo hemos emitido por el cable de cobre hasta la primera centralita telefonica. Lo normal, es que actualmente las centralitas telefonicas sean ya todas digitales. En este caso, el sonido, segun llega a la centralita, se digitaliza. Se convierte en seales digitales de ceros y unos. Para "digitalizarlo" lo que se hace es un "muestreo" de la seal, unos pocos de miles de veces por segundo y esa informacin es la que ya viaja codificada en binario. * Evidentemente esto mismo se puede hacer "de partida". Pero hay que hacerlo con mucho "cuidado". Si la informacion de partida ya est digitalizada, podemos correr el riesgo de perdida de informacion al intentar digitalizarse otra vez en la centralita. Dejandonos de detalles tecnicos, la comunicacion digital es posible si se

106

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop cumplen las siguientes premisas: 1) Solo hay un tramo "analogico" en todo el circuito. Al menos hay uno siempre: desde nuestra casa a la centralita telefonica. Por tanto, no debe haber nada mas que ese. 2) Solo se puede hacer la comunicacion digital en un solo sentido. Por tanto ser en el sentido de descarga, es decir en el sentido "hacia" nuestro PC. Las seales de control y las peticiones e incluso los envios "desde" nuestro PC, se harn en analogico a un maximo de 33600. 3) La maxima distancia de comunicacion analogica (desde nuestro PC a la centralita telefonica) es de 4 millas (segun las normas internacionales. Consultados tecnicos de telefona en Espaa, dudan que se pueda conseguir correctamente si la distancia es superior a 2 Km). 4) Todo el cableado de todo el circuito debe estar en excelentes condiciones. ** Bien, a la vista de lo anterior, resulta que tenemos mas pegas de las que parece. Debido al punto 3) y 4), pocos en nuestro pais, estarn en condiciones optimas de poder utilizar correctamente esta norma. Y con respecto a la limitacion del punto 1), debemos observar que si realizamos una comunicacion telefonica en directo PC a PC, nunca podremos comunicarnos en digital (por encima de los 33600). Esto es debido a que tanto nuestro PC como el PC que va a recibir, tienen cada uno de ellos un tramo analogico (al contrario que los ISP que estn unidos en directo con las centrales telefonicas). Por tanto en nuestro circuito existiran 2 tramos analogicos y ya no es posible la comunicacion digital. * En la historia de esta comuncacion "digital" surgieron dos normas (dos grandes casas de la comunicacion enfrentadas). USR (3Com) con la norma X2 y Rockwell (diamond, Supra, etc) con la norma K2FLEX. Las normas son incompatibles. Es decir para comunicar con la norma X2, ambos modem (el nuestro y el del ISP) deben soportar dicha norma. Igual con la norma K2FLEX. Cada una de ellas tenia sus pequeas ventajas e inconvenientes. Y lo que es peor, no eran normas "oficiales". Posteriormente el comit ITU para la industria, se ha definido. Solucion salominica: ninguna de las dos tiene el visto bueno. Se define entonces una tercera norma: la V90. Inmediatamente, los fabricantes han sacado ya actualizaciones de las bios de los modem (casi todos los modem, tienen bios flash y por tanto actualizables), para soportar dicha norma. Incluso algunos modem, soportan su antigua norma (por ejemplo K2FLEX) y ademas la V90. Rcordad que tanto el modem del nuestro ISP como el nuestro deben dialogar en la "misma" norma. ** Pero tenemos una pega ms: estas seales son muy sensibles al "ruido" y a las condiciones del cableado. Por tanto, aunque consigamos comunicacion "digital", esto no quiere siempre decir que sea mejor que la analogica. A veces es necesario "forzar" al modem e inhabilitar en l la comunicacion digital. Esto es debido a que si las condiciones no son optimas, los modem, pasarn mas tiempo dialogando el ajuste de velocidades y la correccion de errores que realmente transportando los datos, y esto ultimo incluso provoca cortes inexplicables. Por desgracia esto es as de duro.

107

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Existe un comando AT, que funciona en casi todos los modem del mercado que es: at+ms=11 Poniendo esta cadena de caracteres en las cadenas "extra" de definicion del modem, podemos forzar la comunicacion a que siempre sea en analogico. Al menos de esta manera podremos funcionar. Como detalle curioso, en mi caso particular, con el mismo modem y "contra" el mismo ISP, desde mi casa, debo forzar la comunicacion "analogica" ya que en otro caso, tengo cortes continuados y una velocidad realmente mala. En combio, con el mismo modem, mismo ISP, desde mi trabajo, por ejemplo (con instalaciones de telefona nuevas y ademas perfectas ya que es desde un centro de calculo), la comunicacion se realiza sin problemas. ** Otro problema aadido, al menos en Espaa, es que telefonica ha "decidido" cortar la comunicacion digital en una serie de centralitas (que realmente son digitales) con viejas tecnologias, o reconvertidas y que les estn causando problemas. En estos casos "nunca" conseguiremos comunicacion digital (lo cual es "casi" mejor). Igualmente, no todas las baterias de modem de nuestros ISP son perfectas y su "firmware" ha sido adaptado a las ultimas tecnologias. Por ello, cirtas marcas de modem, dialogan con un determinado ISP mejor que otras (y siendo los dos modem V90). RDSI: Es una tecnologia ya vieja, que nos permite hasta 64 Kbs por canal. Para poder tener RDSI necesitamos una tarjeta especial en nuestro PC, e igualmente una o dos lineas especiales (cada canal es una linea) contratadas con telefonica. Esta tecnologia era bastante mas cara que la tecnoclogia de modem. Actualmente al precio que se est poniendo en Espaa las llamadas telefonicas locales esta opcion de comunicar mediante RDSI ya es competitiva.... sin fuese por la introduccion casi inmediata de otras tecnologias que estan empezando a surgir. Excepto el driver de la tarjeta que es necesario el del fabricante, tanto w95 como w98 soportan esta tecnologia. ADSL: Es una comunicacion "asimetrica" que en principio no puede permitir velocidades de 256 Kbs en la descarga. Totalmente asimetrica ya que la la velocidad de "subida" ser sensiblemente inferior. Implica al igual que la anterior a que debemos tener un "adaptador" (tarjeta) especial, cuyo precio, segun primeras estimaciones de salida, es realmente caro. Igualmente es necesario contratar una tarifa especial con nuestro ISP. Windows 98 SE (Second Edition) ya trae soporte para estas tarjetas: es el "IP sobre ATM". Unicamente es necesario el driver fisico del fabricante de la tarjeta. El resto de las capas de software ya est implementado en la "Second Edition". CABLE: Todavia no se ha implementado en Espaa (excepto experimentalmente en algunas ciudades) y realmente es una tecnologia "antigua". Existen dos variantes, una "asimetrica" como el ADSL y otra bidireccional para tener la misma velocidad de subida y bajada. La "asimetrica" consta de una tarjeta especial y un modem. Es decir de 2 adaptadores de red (cada uno con su direccion IP). El cable es para "bajar" y el modem se utiliza para "subir", as como para las peticioens y las seales de control. Necesita ademas de un software especial. No est directamnete soportado por windows. Las velocidades llegan a los 2 megabits por segundo. Realmente "bestiales". * Independientemente de lo anterior, actualmente empieza una "nueva" tecnologia. No s realmente el nombre con el cual saldr al mercado. Esta

108

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop tecnologia a la que he llamado nueva (con comillas) realmente era posible desde hace unos aos y consigue velocidades realmente astronomicas sobre un hilo de cobre normalito, es decir sobre "nuestra" propia instalacion telefonica sin necesidad de nada nuevo. El chip que es capaz de realizar esto ya ha sido diseado. Por tanto, teniamos toda la infraestructura y la base tecnologica para hacerlo. La pregunta es por qu no se hizo antes?. La repuesta, intuyo que es muy simple: por motivos comerciales, por condiciones de mercado. Era necesario primero "amortizar" las tecnoligas previas. Y quienes sufrimos esto... curiosamente... somos siempre los mismos. ** Hemos estado viendo entonces, una serie de capas que van recubriendo al nucleo de windows. Quiz hemos hecho mas incapi en las capas de red, debido a que actualmente (y en el futuro) dependemos de internet. Nuestro PC ya no es una maquina unica. Se est integrando en la red. Pero evidentemente existen otras "capas" que rodean al nucleo de windows y que se van inicializando segun windows est arrancando. Todo esto, "Desde que pulsamos el boton de encendido de nuestro PC...". Vamos a citarlas a continuacion describiendo unicamente un poco sus funcionalidades. OTRAS CAPAS DE SOFTWARE EN WINDOWS ---------------------------------* Otras capas (e incluso "Tecnologas") de las que hemos oido hablar en windows, son: OLE, ODBC, ASPI, TWAIN, DIRECTX, REDES, por poner solo un ejemplo de ellas. Es decir, windows, al igual que otros sistemas operativos, consta de un nucleo (normalmente reducido en comparacion con el resto), que es el encargado del manejo de las tareas (multitarea), el manejo de la maquina virtual y las capas de controladores de dispositivos, tanto genericas como los propios miniports incorporados en windows. Y ahora empezamos a crecer hacia arriba. Hay dos motivos fundamentales para esto: 1) Se debe intentar que el software de aplicacion no sea dependiente del hardware. (nos debe dar igual que tarjeta de video se utiliza para un juego. Ser mas o menos rapida, pero "nuestro" programa debe ser capaz de ejecutarse siempre sin necesidad de "saber" que hardware tenemos montado en nuestra maquina). 2) Dar la misma interface unica y estandar a los programas de aplicacion. 3) Evitar funciones "redundantes". Es decir, realizar las "cosas" en un solo sitio y que no sean los programas de aplicacion los que tengan que realizar las mismas tareas que las que ya suminstra (o debe suministrar) el sistema operativo. * Es ilogico, por ejemplo, que un "navegador" se defina todo el TCP/IP y la comunicacion telefonica. Estas dos ultimas deben "pertenecer" al sistema operativo. Un "navegador" solo tiene que utilizarlo. Como? pues mediante una serie de funciones "estandard" y totalmente documentadas (llamadas siempre API de programacion). Cualquiera que tenga que utilizar "ese" subsistema, lo deber hacer entonces mediante el API de programacion de redes (o de telefona). De esta manera "abstraemos" la capa fisica. ** Como podemos conseguir los tres puntos anteriores?. Pues a base de "capas" que nos den unas funciones especificas y siempre las mismas. Estas funciones se las ha denominado API (Aplication Program Interface).

109

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop Evidentemente existen API's para mucas cosas: para video, sonido, manejo de cualquier dispositivos SCSI, acceso a bases de datos (cualquiera).... etc. Estas series de capas que realmente "abstraen" a los programas de aplicacion del resto de hardware, o incluso de la logica de una base de datos por ejemplo. Son las que realmente hacen potente un sistema operativo. Son ademas las que hacen "crecer" ese sistema operativo. Por suerte o por desgracia, Microsoft se "di" cuenta de estas caracteristicas en su da. Y se dedic a hacer unos estandares, que al principio eran de libre distribucion y normalmente venian con los paquetes que instalabamos y que actualmente vienen ya incorporadas en el propio sistema. * Por desgracia, si nos fijamos en el parrafo anterior.. que indica?. Pues que como "antes", para windows 3.1, e incluso para el original w95, no existian esas capas incorporadas en el sistema operativo, a pesar de ser de gratuitas y de libre distribucion, pues los fabricantes de software se veian obligados a distribuirlas con sus paquetes. Esta costumbre sigue existiendo y por desgracia la mayoria de los fabricantes de software, *no* verifican si esta capa ya est instalada y ademas su numero de version. Por tanto, muchas veces "machacan" DLLs y capas enteras del actual sistema operativo, con lo cual mucas otras funcionalidades nos pueden dejar de funcionar. Este es un tema realmente peligroso. Al menos windows 98, nos d una herramienta: SFC, que veremos mas adelante, y que nos puede proteger (o avisar) de estas situaciones. Existen multitud de estas capas en windows. Podemos citar: OLE: permite el uso e itercambio de mensajes (y objetos) entre aplicaciones. El futuro del OLE es el DCOM, es decir objets distribuido en la red y que pueden usarse desde aplicaciones de red. ODBC: (Open DataBase Connectivity) Para conectividad abierta de bases de datos, es decir nuestra aplicacion es capaz mediante este API de acceder a cualquier base de datos. No importa que tipo ni donde resida fisicamente (en local o en red). Es el mismo programa de aplicacion para aceeder a una base de datos Access por ejemplo, o bien a una base DB2 que reside en un mainframe. ASPI: Es una capa de abstraccion del hardware que nos permite acceder a caulquier dispositivo SCSI. (es necesario recordar tambien que el controlador ESDI_506.PDR para acceso a discos duros IDE, nos permite tambien una interfaz SCSI con el CD-ROM o grabadores de CD que sean IDE ATAPI). Por tanto, los programas "grabadores" de CDROM, al utilizar la interface ASPI, les d igual que el grabador sea IDE ATAPI o SCSI o incluso de puerto paralelo. El programa grabador, "d" ordenes a la capa ASPI. TWAIN: Similar al ASPI pero para dispositivos de imagen (Scanners, Camaras, etc). REDES: Este es el ejemplo de mayor abstraccion. Una vez fijada la red, nos d igual que es lo que hay en el otro extremo. Incluso que sistema operatvio tiene. Nosotros "vemos" perfectamente su disco compartido. Como ejemplo: un disco particionado con el sistema nativo de NT, tiene particion NTFS que windows 95 / 98 no puede ver. No sabe ver otras particiones que no sean FAT. Pero si ese disco est compartido en una red, podemos verlo perfectamente desde un ordenador con win 95 / 98 como si fuese un disco local. Es exactamente igual a efectos de la aplicacion, e incluso del propio windows.

110

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop DIRECTX: Es una capa de abstraccion del hardware para video, sonido y dispositivos de entrada -joysticks, raton, teclado, gamepad-. De esta manera, los "juegos" actuales (son los que mas uso hacen de esta capa), no tienen porqu conocer el hardware. Simplemente hablan directamente con la capa directX y por tanto funcionarn con cualquier tarjeta de video. Condicionantes: los drivers del fabricante de la tarjeta de video, evidentemente tambien tiene que saber hablar hacia arriba, con la capa DirectX. ** Todas estas capas se deben inicializar correctamente al arrancar windows, y estar a disposicion de cualquier programa de aplicacion. PUNTO FINAL DEL "ARRANQUE" -------------------------Como punto final a todo esto, est el "shell" de windows. Actualmente dicho shell es el propio explorer. La inicializacion correcta de una red (y windows es un sistema operativo orientado a red), termina cuando nos identificamos a ella. Justo cuando arranca el shell (es decir el explorer). Por ello es "obligado" entrar a windows con usuario / password. No hacerlo as nos causar malfuncionamiento de algunas de las caracterisiticas de windows como: 1) No guardar contraseas de conexion correctamente. 2) No estar autentificado a una posible red (por ejemplo, una conexion telefonica PC a PC o una conexion via cable). Por supuesto no podremos establecer una "red". * Por tanto, como punto final de estos capitulos y justo antes de inicializarse correctamente el explorer, debemos "autentificarnos". ** Creo que como una pequea vision general del sistema, estos "capitulillos" han podido servir para perder el miedo a ese gran desconocido que es windows. La vision que he intentado dar, por poner un simil con la medicina, es la vision desde el punto de vista de un "enfermero", saber o intuir por donde van las cosas. Ni tan siquiera he querido complicar las cosas para intentar verlas desde el punto de vista de un medico de medicina general. Y pensar que ademas, todava, existen los especialistas. Nos quedamos simplemente en la sala de "curas". En la "enfermera". ************ Y POR FN ARRANC ***************** ** Como colofn, voy a incorporar unos cuantos ANEXOS sobre alguna pequea utilidad y unos pequeos cuidados que debemos tener en windows. ANEXO I: SFC (SYSTEM FILE CHECKER) ---------------------------------Es el programa SFC.EXE Dicho programa reside en el directorio windows/system. No existe un icono en windows para ejecutarlo, por lo que o bien, nos creamos un acceso directo al programa en ese directorio, o bien podemos ejecutarlo desde Inicio->Ejecutar. La primera vez que lo ejecutamos (Y DEBERIA SER NADA MAS INSTALAR W98), crea

111

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop una base de datos con las versiones de todos los programas y Dlls de tu PC (realmente, si nos fijamos, con los que residen en las carpetas mas importantes. Pero esto lo podemos personalizar tambien dentro de las opciones de configuracion del propio programa) Una vez ejecutado, debemos entrar en configuracion y marcar las DOS ultimas casillas de esa pantalla, es decir: de verificar ficheros borrados y verificar numero de version e los programas. Posteriormente, cada vez que lo ejecutemos comparar su base de datos con las versiones actuales. Si difieren nos permite, bien actualizar sus datos, o RECUPERAR desde los ficheros de instalacion de W98. Es quiz la herramienta mas potente de control de w98. Nos sorprenderemos cuando al instalar software de terceros, vemos las "guarradas" que hace con las DLLs de windows. Despues de unas cuantas instalaciones, nos asombraremos de como es que windows sigue funcionando. ** Es necesario tener varias precauciones: 1) S alguna vez, el SFC se "queja" diciendo que tenmos daado USER.EXE o KERNL32.EXE, *no* debemos recuperarlos. A veces SFC los considra daados cuando realmente no lo estn y es debido a que ciertos controladores "tocan" para establecer algun "gancho" de software, la cabecera de dichos archivos. Si los recuperasemos, SFC no sabe hacerlo correctamente ya que la version que recupera del CD de instalacion de windows, es una version "reducida" de ambos archivos, que unicamente es la que se utiliza al instalar windows. No posteriormente durante su ejecucion real. 2) El criterio basico para recuperar o no una DLL o programa, *no* debe ser nunca la fecha de creacion del archivo. Guiarnos *siempre* por el numero de version de la DLL o programa. Un numero de version *superior* siempre es el correcto. En el caso de numeros de version *igual* pero tamaos diferente de archivos, no debemos recuperar. Darlo por bueno. Existen utilidades del propio microsoft, que son capaces de "alinear" el codigo de una DLL para que su ejecucion sea mas rapida. Por eso es por lo que a veces, vemos el mismo numero de version y tamaos diferentes. 3) SFC, siempre deja un LOG (fuchero de historia) en el directorio de windows llamado SFCLOG.TXT. Es bueno el tenerlo y usarlo como "historia". Para que nos puede servir: facil. maginemos una DLL que trae windows y es la version 1002. Instalamos por ejemplo Office, el cual nos "sube" la version de esa DLL a la 1034. Y por desgracia, imaginemos que ahora un software de terceros nos machaca es version colocando la 1010. En este caso, SFC sequejar diciendo que tenia la 1034 y ahora est la 1010. Pero si recuperamos la de windows, nos recuperar la 1002. Todavia ms *inferior* a la actual. En estos casos es necesario "mirar" el log y por tanto podremos saber que nos lo instalo Office. Sobre todo si tenemos la precaucion de escribir (con el notepad por ejemplo) en ese archivo, una linea de coment6arios cada vez que instalamos un producto. Despues de ejecutar SFC, nos escribir a continuacion de esa linea las DLL y su numero de version que el producto ha actualizado. Con esta precauciones, sabremos que nos lo instal Office, y por tanto podremos recuperar desde Office. ** Realmente hacia falta una herramienta as desde hace mucho tiempo. ANEXO II RESUMEN DE NOTAS Y PROBLEMAS COMUNES

112

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop --------------------------------------------Paso a resumir aqu unos pequeos truquillos para configurar e instalar win98 y evitar el tener los problemas ms comunes. * ANTES DE INSTALAR ------------------1) Entrar en la BIOS y poner en la pantalla de PnP, a la pregunta PnP OS (PnP Operating System), un *NO* o *disabled*. (casi todas las bios nos hacen esta pregunta pero puede que la nuestra en particular no la tenga). 2) Configurar el puerto paralelo como ECP+EPP con DMA=3. Si posteriormente tuviesemos problemas con la impresora, se deber cambiar a EPP. 3) En la pantalla de PnP, deberemos asignar la IRQs que sepamos que son de dispositivos ISA no PnP a la opcion "ISA" o "Legacy ISA". Incluso algunos dispositivos ISA que se "autodenominan" PnP, no lo son tales y debemos configruar entonces de esta manera la BIOS (ejemplos clasicos, son los modem internos, las tarjetas SCSI ISA, y algunas tarjetas SoundBlaster PCI). 4) Si nuestra tarjeta de video es PCI, recordad que debe estar en el SLOT 1 o 2. (estos son los mas alejados del bus ISA, es decir los mas cercanos a la fuente de alimentacion). Ciertas BIOS no inicalizan correctamente la tarjeta de video, si esta no est en alguno de esos SLOTs. (a ser posible en el 1). 5) Instalar windows desde el directorio win98 del CD con el parametro /p j (un espacio en blanco entre la "p" y la "j") telecando: instalar /p j Esto nos reconocer nuestra BIOS como ACPI si lo fuese (unicamente las placas madre de ultima generacion y BIOS de ultima generacion, poseen la facilidad ACPI. Merece la pena que windows se monte como ACPI). * DURANTE LA INSTALACION -----------------------Si al instalar, durante el segundo boot de la instalacion, el sistema se nos "cuelga" y es incapaz de finalizar la instalacion por mucho que reiniciemos el PC, deberemos entrar en el modo a prueba de fallos y teclear en Inicio->Ejecutar el comando regedit. All buscaremos la clave: IDEDMADrive0 Deberemos cambiar el valor 01 por el valor 00 e intentar continuar con la instalacion. (esto ocurre normalmente con las versiones OEM (para equipos nuevos sin windows preinstalado, y en combinacion con ciertos controladores de placas madre. Fundamentalmente placas madre de baja calidad.). * DESPUES DE LA INSTALACION. MANTENIMIENTO GENERAL -------------------------------------------------* Nada mas instalar windows, debemos ejecutar el programa SFC (que reside en c:\windows\system), y despues de finalizar su ejecucion, y antes de salirnos, deberemos entrar en las opciones de "Avanzado" y dejar marcados los dos ultimos casilleros ("Verificar programas borrados" y "Verificar numero de version"). De esta manera hemos creado una base de datos con los programas y numero de version de las DLLs que windows nos acaba de grabar. * Cada vez que realicemos una instalacion de cualquier producto, ejecutar otra vez SFC. Si el programa nos ha sustituido alguna DLL de windows o

113

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop borrado alguna, nos permite recuperar la de windows. En caso de que nos haya sustituido alguna, nos d el numero de versin actual y el numero de versin previo que tenia almacenado. Si el numero de versin actual (independientemente de la fecha) es menor que el que teniamos deberemos recuperar con el propio SFC la versin original. Si es igual o mayor el numero de versin, podemos darlo por bueno. ** NOTA: Si alguna vez SFC se "queja" que el user.exe o el krnl32.exe estan daados y nos d la opcion de recuperarlos: NO RECUPERAR nunca. El SFC se "equivoca" en este caso al recuperar debido a que existe dos versiones de esos ficheros. Una "minima" para la instalacion, y otra la del funcionamiento normal de windows. Si dejamos que SFC recupere, recuperar la primera que se encuentra y esta el la "minima" para instalar windows. Por tanto, windows no nos arrancar. Si por desgracia la hemos recuperado y windows no arranca, todavia podemos tener solucion. Para ello, arrancamos con el disco de inico de win98 y ponemos en nuestra unidad de CD el disco de instalacion de win98. Cuando hayamos arrancado, tecleamos: c: cd \windows\system extract /a /e e:\win98\base5.cab user.exe (he supuesto que el CD es la letra e: -que es lo normal bajo el disco de inicio-, sino fuese esta, sustituir por la correcta). * POSIBLES PROBLEMAS AL INSTALAR ALGUN DRIVER DE DISPOSITIVO -----------------------------------------------------------** AL INSTALAR LOS DRIVERS DE UN MODEM -------------------------------------** Ciertos modem's instalan un dispositivo "Wave Device for voice modem" en el sistema, que puede verse en el Administrador de dispositivos colgando de "Controladores de Sonido y Juegos". Ciertos .INF de instalacion de modem's (fundamentalmente los antiguos para win 95), son incompatibles en este dispositivo para win98. Si despues de instalar este dispositivo, tenemos "cuelgues" estraos de la maquina, y fundamentalmente al cerrar windows (no termina de cerrar), debemos pinchar dicho dispositivo en el Administrador del sistema y marcar la casilla de "No cargar en este perfil de software". No sirve darlo de baja, ya que lo volver a instalar al arrancar. ** EN EL ARRANQUE ----------------** Al arrancar windows, nos d una pantalla negra (estilo MsDOS) con un par de lineas en la parte superior que nos advierte: Imposible arrancar windows. Error en IFSMGR o bien Error en DOSMGR. Probablemente algun dispositivo de puertos de comunicaciones COM1, COM2, paralelo o de raton es el causante del problema. Si acabamos de instalar algun dispositivo de puerto paralelo, entrar en modo a prueba de fallos y eliminarlo. Si es por culpa de los drivers del mouse, igualmente sustituir el driver de raton por un raton standard de windows. ** Acabamos de montar una segunda placa de video para tener la posibilidad de multimonitor y la maquina no nos arranca. Solucion: Revisar primero el config.sys y ver si tenemos la linea de EMM386.EXE. Si la tuviesemos n principio comentarla y probar. Si el sistema arranca, alguno de los parametros del EMM386 es invalido para multimonitor. Revisar los Include y Exclude, ya que la BIOS de ambas placas de video ocupan mas epsacion, y ademas ahora ya no se puede utilizar el parametro I=B000-B7FF en el EMM386 en el caso de multimonitor. Si el tema no fusese el EMM386, revisar que las

114

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop placas de video sean AGP+PCI (en slot 1) o PCI+PCI (en slots 1 y 2), No puede utilizarse placas ISA para multimonitor. ** Acabamos de instalar una nueva placa de hardware y el sistema no arranca. Verificar primero que realmente es la nueva placa y no otra anterior que por culpa de incompatibilidades sea la causante. Para ello, arrancamos con CTRL pulsada y cuando nos salga un men de opciones, tecleamos MAY+F8 y le damos Intro. Nos ir preguntando si carga los drivers uno por uno. Le damos a todo que *SI*. El sistema se colgar igualmente, pero nos habr dejado un fichero oculto en el raiz de C: con el nombre bootlog.txt. Para evitar perder ese fichero, lo mejor en ese momento, es arrancar con un disco de inicio, y posteriormente teclear: c: cd \ type bootlog.txt > boot.txt de esta manera, ya podemos analizar el fichero "boot.txt" y ver la ultima (o ultimas) lineas de l. All nos dir el controlador causante del problema. A veces la solucion pasa sencillamente por cambiar la placa fisicamente de slot. Si fuese una solucion ms complicada, se deber analizar el contenido del fichero anterior. ** EN EL CIERRE --------------** Al cerrar windows, nos d un error en el programa MSGSRV32. Este error suele estar causado por utilizar algun chip de sonido de la marca CMEDIA (cmxxx) y es bastante corriente en las placs madre que tiene la tarjeta de sonido on-board. Es un problema reconocido por el fabricante, que se corrige sustituyendo los drivers de sonido por los ultimos de cmedia. Puede buscarse en su web en www.cmedia.com.tw ** Windows no se cierra correctamente, o se queda en la pantalla del logo de cierre pero sin finalizar. Solucion: ejecutar el programa MsConfig desde Inicio->Ejecutar, dar al boton de "avanzado" y marcar la opcion de "Deshabilitar apagado rapido". El causante suele ser algun driver de dispositivo instalado que nos impide el apagado rapido (o algun programa que se carga en el inicio). ** Para e problema anterior, ver tambien el comentario que he realizado al instalr un modem sobre el dispositivo "Wave device for voice modem". * RECONOCIMIENTO DE DISPOSITIVOS -------------------------------** Nada ms finalizar la instalacin (o incluso re-instalacin) de windows sobre todo s durante la instalacin hemos tenido alguna pantalla azul (BSOD), es conveniente ejecutar el programa ASD. Este programa nos dir si ha habido algun dispositivo que ha causado un error crtico al instalar y nos permitir en ese momento, el intentar cargarlo. ** Win98 no nos reconoce nuestra unidad de CD-ROM, o nos la reconoce unicamente si iniciamos windows con un CD insertado en la unidad. Problema bastante comun. Win98 es "exigente" con las unidades de CD-ROM y los fabricantes se toman las normas a la torera o bien sufren incompatibilidades con ciertas bios de ciertas placas madre. Una causa comun de estos problemas, es tener la unidad de CD-ROM como "master". Recordad que los controladores IDE, normalmente son dos. IDE Primario y secundario. Y recordad que en cada canal IDE, pueden montarse dos dispositivos, uno como

115

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop "master" (maestro) y otro como "slave" (esclavo). Pues bien hay ciertas unidades que no pueden estar como "master" en win98 y ademas no pueden tampoco estar "solas" en un canal IDE. Por tanto reconfigurar el hardware de vuestra maquina para que no se d la situacion anterior. * DURANTE EL FUNCIONAMIENTO --------------------------** La asociacion de ciertos iconos de windows, as como la vista previa de dichos iconos, por ejemplo los GIF, se ha perdido y no podemos recuperarala (nos sucede al instalar algun programa de graficos). Solucion: Ir a inicio->Ejecutar y teclear: regsvr32.exe /i shdocvw.dll ** Como precaucion, no instalar *ninguna* actualizacion (directx, etc..) sobre el propio sistema, que no est en la pagina de WindowsUpdate. Muchas (todas) las actualizaciones de MS en sus paginas, **NO** son para win98. Son para win95 y por tanto no se deben instalar en win98 a no ser que "explicitamente" nos lo diga. No fiarse del software distribuido en los CD de las revistas. *ponga lo que ponga* ** En caso de problemas con alguna instalacion, debemos recordar que windows conserva una copia del registro, de los ultimos 5 dias en que hemos entrado a l. Realiza esta copia la primera vez que "entramos" en el sistema en el dia. Si quisiesemos recuperar la situacion del registro al inicio del dia, o bien de algun dia previo, arrancamos con la tecla CTRL pulsada, y cuando nos salga un men, seleccionamos "Solo simbolo del sistema". Una vez en l, tecleamos: scanreg /restore Nos mostrar una lista con la fecha de las copias de seguridad del registro y nos permitir recuperarlas. * AL AADIR NUEVO HARDWARE -------------------------** Posibles problemas al aadir un ZIP puerto paralelo: windows nos muestra una pantalla estilo MsDOS indicando un error y no arranca. Si lo reintentamos windows entra correctamente. Es un problema clasico de conflicto con el puerto paralelo. Montar el ultimo driver de iomega (buscar en www.iomega.com) y muy importante: configurar el puerto de la bios como ECP+EPP. Quiz esto no soluciones del todo el problema, pero lo minimizar lo ms posible. ** Posibles problemas al instalar un LS-120 (disco Imation o SuperDrive) en el puerto paralelo. Instalar el ultimo driver sd125.exe disponible en el web de imation: www.imation.com Esto no nos solucionar el problema de que la inicializacion de dicho driver es de cerca de un minuto que perdemos en el arranque de windows, pero nos eliminar problemas de arranque y fundamentalmente de compatibilidad con otros dispositivos en el puerto paralelo, fundamentalmente algunos modelos de impresoras. ** Si aadimos una tarjeta SCSI PCI, a ser posible instalarla en el SLOT 4 de la placa madre. Verificar posteriormente el que no comprtat su IRQ con otro dispositivo de acceso a disco. Y a ser posible que no lo comparta con ningun dispositivo. Esto puede lograrse cambiando fisicamente en los slots las tarjetas PCI que tengamos (excepto la de video, que debe estar en el slot numero 1). ** Con ciertas tarjetas SoundBlaster PCI (por poner un ejemplo de una

116

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop tarjeta de sonido PCI), existen problemas con la asignacion de IRQs tipo ISA al slot PCI. Desde luego, la norma PCI no permite esto, pero el fabricante, parece saltarselo a la torera. Existen dos posibilidades: una hardware que pasa por conectar mediante un conector especial la tarjeta PCI a un conector tambiuen especial en la placa madre para "robar" al bus ISA la IRQ correspondiente. No todas las placas madre soportan esto. La otra solucion es configurar la BIOS, en la pantalla PnP, para asignar la IRQ que quiere pillar la tarjeta de sonido, a ISA o Legacy ISA. De esta manera tambien nos funcionar. Los ultimos modelos de BIOS, ya tienen normalmente presente esta casuistica con lo que no tendremos que hacer nada. ** Los modem internos, son causas de multiples problemas. Recordad que la mayoria de ellos son configurables mediante "pins" o "switches". Deberemos configurarlos para una IRQ superior a la 9 (es vlida la 9 si el modem es autenticamente PnP). Y si nos lo permite para COM3 o COM4 (este ultimo no aconsejado si tenemos una placa de video con un chip S3). Igualmente la IRQ asignada al modem, debemos configurarla en la BIOS como ISA o Legacy ISA. Las IRQs de modem internos *NO* pueden compartirse con otro dispositivo (y puede que sucedan estos errores en los modem PCI). Por tanto hay que vigilar que la BIOS no haya cometido errores y haya compartido dicha IRQ. Si es as y el modem es PCI, cambiar de SLOT el modem. Si el modem es ISA, deber configurarse por "switches" en alguna IRQ diferente a la 3 y 4 (y yo aconsejo que tampoco sea la 5 y la 7, por tanto debe ser la 10, 11 o 12. Y si seguinos teniendo problemas deberemos entrar en la BIOS de la maquina, y la IRQ que pille, o quiera pillar el modem, marcarla en la pantalla PnP de la BIOS, como ISA o LEGACY ISA. * AL REINSTALAR WINDOWS 98 -------------------------** Ciertas grabadoras de CD (por ejemplo HP 8100), tienen incompatibilidad con una VxD estandard de windows: la SCSI1HLP.VXD (que reside en C:\windows\system\iosbusys). Al instalarse lo que hacen es renombran dicha VXD por otra extension, con lo que windows ya no la carga. Pero si reinstalamos windows por encima, el instalador nos volver a dejar dicha VXD en cuyo caso windows ya no arrancar. Es necesario entrar en "solo simbolo del sistema" y borrarla. Particularmente me parece una "chapuza" por parte de HP. Y ademas al eliminar dicha VXD, todos los posibles dispostivos SCSI 1 que tengamos en nuestro hardware, dejarn de funcionar (menos mal que el SCSI 1 es una vieja norma y ya quedan pocos dispositivos..... pero quedan!!). * AL AADIR NUEVO SOFTWARE -------------------------** Se deber verificar siempre, despues de aadir nuevo software, mediante el programa SFC, que no se han "machacado" ninguna de las DLL's de windows (es muy normal que los fabricantes de software hagan lo que les d la gana y nos "machaquen" medio sistema). ** Si empiezan a ocurrir cuelques y situaciones anomalas, recuperar inmediatamente el registro con scanreg /restore al arrancar en "Solo simbolo del sistema". Por situaciones anomalas, entiendo por ejemplo ciertos "cuelgues" del equipo al navegar. Esto es lo ms sintomatico. Hay software comercial y de instalacion muy corriente (por ejemplo "GetRight") que en muchos equipos causa cuelques inexplicables por ejemplo al dar el boton de "retorceder" pagina en el navegador. No hay solucion excepto desistalar el software y por si acaso, recuperar la base de registro. ANEXO III: SCANREG (COPIAS DE SEGURIDAD DEL REGISTRO)

117

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop ---------------------------------------------------Windows 98 al arrancar cada da (una vez al da), realiza una copia de seguridad de la base de datos de registro (el famoso "registro" de windows). Independientemente de esto, siempre al arrancar nos realiza una comprobacin sobre el registro: si est daado o no al menos en su informacin mnima necesaria para el arranque. Debido a los dos puntos anteriores, el arranque de win 98 es mas lento que el de win 95. Pero como contraprestacin, es mucho ms seguro. Cuantas copias se guarda?. Es decir cuantos das se guarda?: Por defecto 5 das. Se puede modificar en el fichero scanreg.ini. Igualmente en este fichero se puede deshabilitar la opcin de copia y verificacin del registro, con lo cual nos arrancar mas rpidamente, pero perderemos una seguridad que antes o despus nos har falta. Y ahora la pregunta del milln: como podemos beneficiarnos de esto? y como podemos recuperar la situacin a un da determinado?. Bien, supongamos que nuestro registro se ha daado, o algn programa lo ha "roto", del todo (extensiones de archivo perdidas, redefinidas, etc....) Nos queda la solucin de recuperar el registro a la fecha que queramos, para ello: * Arrancar en modo "Solo smbolo del sistema" (si tenemos pulsada la tecla CTRL al arrancar, nos mostrar un men, antes de entrar en windows, y all podremos seleccionar). * teclear: scanreg /RESTORE esto nos mostrar una lista de las copias de seguridad del registro y sus fechas. Con esto podemos recuperar. Si en algn momento, bajo windows (dentro de windows) queremos que nos realice una copia nueva, independiente de las que ya se ha guardado en el inicio del da, podemos ejecutar el programa: SCANREGW (cuidado: termina en W) Este programa primero nos analiza el registro (podis ejecutarlo en cualquier momento), y por ultimo nos da la opcin de realizar la copia de seguridad. ****** Espero que esto SI QUE SEA UTIL ***** y se utilice (se puede hacer en cualquier momento ANTES de una instalacin. Posteriormente mediante SFC y mediante la recuperacin de la base de registro, volvemos JUSTO a la situacin inicial de antes de la posible instalacin del producto problemtico. Solo una cosa ms. Por si acaso: vigilar lo que hay en windows\system\iosubsys. Listar los ficheros y fechas y guardarlo. Esto lo digo, porque cualquier VXD en ese directorio, windows la carga SIEMPRE. Si una instalacin, nos guarda una VXD all, por mucho que recuperemos con "scanreg /RESTORE", y SFC, por desgracia la VXD nueva, est all, con lo cual se cargar. Y esa puede ser problemtica. ANEXO IV: WALIGN (OPTIMIZACION DE CARGA DE OFFICE)

118

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop -------------------------------------------------Tcnicamente este programa lo que hace es "barajar" el ejecutable al objeto de dejar los cdigos de segmento alineados realmente, tal y como se van a ejecutar en la maquina. Por poner una similitud con el antiguo MS-DOS, los deja como eran los ficheros COM, es decir se cargan y directamente se ejecutan, sin necesidad de que el loader (cargador), realice nada en especial. Realmente el smil es un poco basto, pero para nuestro caso, sirve de momento. Es decir, simplifica la vida al cargador y los programas por tanto se cargan en maquina "bastante" mas rpido. Podamos alegar, que esto era lo mas lgico desde el diseo del primer Windows. Efectivamente, pero por los motivos que sea, esto no estaba as. Es decir el "linker" (montador) de programas standard, no deja correctamente alineados los segmento de cdigo y datos de un programa o dll. La funcin de WALIGN, es arreglar esto. Para ello, se apoya en un fichero INI que reside en el directorio system (curioso no?). El cdigo de w98, ya viene "alineado", es decir no hace falta optimizarlo (cuidado con las aplicaciones que nos substituyen dll's aunque tengan el mismo numero de versin. Se debe vigilar tambin la fecha. Este es el motivo por el que nos podemos encontrar dos programas o dlls con el mismo numero de versin y diferente tamao). El cdigo de otras aplicaciones, no est "alineado". W98 solo trae el fichero INI anterior, con los datos del Office, supongo que porque Microsoft considera que es un programa muy pesado y merece la pena optimizarlo. Por ello, al instalar W98, si es actualizacin y se encuentra el Office, AUTOMATICAMENTE y sin pedirnos permiso (craso error), ejecuta el WALIGN. En nueva instalacin o sino tenemos el Office, deja una tarea pendiente de ejecucin el el planificador de tareas. El comentario de antes de "craso error", lo justifico: porque si tenemos Office y no hemos instalado el SR1 de Office, ya no podremos instalarlo. El SR1, no sabe modificar los ficheros de Office si los tenemos "alineados", pero lo que es peor, no dice nada y termina como si lo ha realizado correctamente. Se puede ver que no ha echo nada, ya que al entrar en los "acerca de" de los programas de Office, no se ve el texto SR1 que debiera verse. Con esto he explicado que hace. Ahora, la pregunta es que opinion personal me merece?. Esto ultimo es mas difcil de matizar. Nos deberamos hacer otras preguntas: 1) porque esto no esta corregido desde el principio? Es decir porque el propio linker no optimiza correctamente los ejecutable? 2) porque no se nos informa, y da opcin a escoger sobre el alineamiento en ese momento de Office? 3) porque no se permite (no existe el INI), optimizar otros paquetes, cuando los betatester sabemos que en los W98 beta que probamos, estaba esta opcin? Todava no se lo que opino. Digamos que lo tengo en "cuarentena", pero por otros motivos, no por sus funcionalidades. ANEXO V: VARIOS SISTEMAS OPERATIVOS EN LA MISMA MAQUINA ------------------------------------------------------Vamos a intentar ver como instalar mas de un sistema operativo de Microsoft en la misma maquina y como podemos tener por ejemplo dos win98 en ella, o cualquier combinacion de varios (n) sistemas de operativos de Microsoft. Esto, aunque solo queramos tener un sistema, por ejemplo win98, bajo mi punto de vista es aconsejable tener al menos 2 win98. Hay motivos

119

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop importantes: 1) Tener ms de un win98, nos permitir utilizar uno de ellos para trabajo "real", y otro para pruebas. De esta manera, una vez que el software que estemos probando haya pasado "nuestros" controles de calidad en pruebas y "nuestro" test de compatibilidad con "nuestra" maquina y el "resto" de software de terceros que tengamos instalado, una vez pasados esos controles, podremos incorporarlo a "real". 2) Evidentemente, esto implica "ms" disco (o mas espacio en disco, o varios discos). Pero el precio de hardware ha caido en los ultimos aos, y el tamao de los discos ha aumentado ademas en la misma proporcion. Por tanto esto no debe ser un problema. INTRODUCCION -----------Antes de pasar al detalle de la ejecucin, conviene entender como "arranca" un sistema operativo. Voy a referirme unicamente a los sistemas operativos de Microsoft. Una vez entendido esto perfectamente, seremos capaces de realizar los cambios "a mano". Y si somos capaces de hacerlo "a mano", evidentemente se puede encontrar una solucion "mecanizada". Al arrancar un PC, busca siempre la particion "activa" del disco C: (nos olvidamos por ahora de las bios que permiten arranques desde distintas unidades). Recordemos que para que una particion sea "activa", debe ser una particion "primaria". El proceso real es: 1) Se carga el primer sector fisico (512 bytes) del disco duro en memoria. Este sector es el llamado MBR (Master Boot Record). Realmente este sector contiene un mini-programa y es grabado por el FDISK cuando se encuentra un disco "virgen" o cuando hacemos FDISK /MBR. 2) Este programa empieza su ejecucion, y su unica misin, es buscar la particion "activa" del disco duro, y cargar a su vez, el primer sector fisico de esa particion en memoria y cederle control. Ese sector es llamado el sector de "boot" de la particion, y es creado en la particion, cuando hacemos un "format" de la particion. 3) El programa del registro de "boot", empieza su ejecucion y busca realmente el sistema operativo dentro de la particion y lo carga en ejecucion. 4) Los sistemas operativos (MSDOS 6.2, Win95 y Win98) realmente constan de dos partes. El nucleo del sistema formado por los archivos MSDOS.SYS, IO.SYS (obligatorios) CONFIG.SYS (opcional) y un interprete de comandos que por defecto es el COMMAND.COM y el AUTOEXEC.BAT (opcional). Los anteriores, obligatoriamente deben residir en C: (hay alguna matizacion que obviamos aqu, sobre la parte del interprete de comandos que podra realmente residir en otro disco). Esto plantea ya un problema: los tres sistemas operatios, utilizan los mismos "nombres" de los archivos de "arrancada". 5) El sistema operativo NT, consta de otra serie de archivos en el disco C:, pero en principio, con otros nombres que no colisionan con los anteriores. Simplemente hay que hacer notar en este nivel, que existe tambien uno de parametros llamado BOOT.INI. NOTA: Muchos de estos archivos estn ocultos (attributo "Hidden") y tiene atributos ademas de solo-lectura ("Read Only") y del sistema ("System"). Si

120

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop estn con estos atributos, dando un DIR normalito no los veremos, y en windows tampoco, a no ser que tengamos activa la opcion de "ver todo tipo de archivos". Bajo MS-DOS la unica manera de saber si existen es dar el comando attrib. Por ejemplo attrib c:\msdos.sys nos mostrar el archivo y sus atributos en pantalla. Ademas incluso dicho comando nos permitir cambiar el(los) atributo(s) que queramos, con solo darlo igual que antes y con un signo "-" y la primera letra del atributo que queremos quitar. Igualmente con un signo "+" podemos ponerle los atributos. Por ejemplo: attrib c:\msdos.sys -s -h -r quitar los tres atributos al archivo msdos.sys y por tanto ya es "visible" con un DIR, o bien manipulable con un editor como pudiera ser el propio "edit" del MSDOS o el "notepad" de windows. Y por supuesto, el comando inverso: attrib c:\msdos.sys +s +h +r nos volver a colocar los atributos que debe tener dicho archivo. DESCRIPCION DE CARGA DE CADA SISTEMA OPERATIVO ---------------------------------------------Pasemos a describir cada sistema operativo: 1) Antiguo MSDOS (6.2): Utiliza para su arranque: MSDOS.SYS (ejecutable o programa) IO.SYS (ejecutable o programa) CONFIG.SYS (parametros de configuracion) COMMAND.COM (ejecutable o programa) AUTOEXEC.BAT (parametros de configuracion) ademas si tenemos la opcion de discos "comprimidos", utiliza los DBL*.* o DRV*.* que existan en el directorio raiz del C: (hay que notar que estos existiran igualmente ne win95 / 98 y los tendremos presentes para crear posteriormente las baterias de inicio, pero por ahora vamos a obviar el tema de discos comprimidos). ** Evidentemente los archivos de parametros de configuracion podremos siempre tocarlos con un editor. 2) Windows 95: (normal y OSR2) Utiliza para el arranque: MSDOS.SYS (pero ahora es un archivo de "parametros" que podemos ver por ejemplo con el notepad. En MSDOS 6.2, era un archivo ejecutable, es decir un progama). IO.SYS CONFIG.SYS COMMAND.COM AUTOEXEC.BAT LOGO.SYS (aparece nuevo en win95). 3) Windows 98: MSDOS.SYS (parametros) IO.SYS CONFIG.SYS

121

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop COMMAND.COM AUTOEXEC.BAT LOGO.SYS (**opcional**. Si existe puede tener personalizado el logo de arranque de windows, pero sino existe, nos mostrar el logo por defecto de windows 98). NOTA: Tanto win95 como win98, si se encontrasen un WINBOOT.SYS en el disco C:\, utilizarn este en lugar del IO.SYS, y ademas al finalizar su ejecucion, lo renombrarn como IO.SYS. (esto es importante. Se ver mas adelante como una posible "trampa" para compartir Win95 OSR2 y un posible DOS 6.22) 4) Por ahora el NT, no nos molesta con sus nombres de archivos, por lo que ya abordaremos su problematica real en la instalacion. NOTA: Debemos tener presente, que aunque los archivos mencionados anteriormente deben estar en C:\, el resto del sistema operativo, puede estar en cualquier unidad de disco o particion. SISTEMA DE ARCHIVOS QUE PUEDEN UTILIZARSE -----------------------------------------1) 2) 3) 4) 5) 6) MSDOS 6.2 : solo entiende FAT 16 Win95 : solo entiende FAT-16 Win95 - OSR2 : FAT16 o FAT 32 Win98 : FAT 16 o FAT 32 NT 4 : FAT 16 o NTFS (particion exclusiva de NT) NT 2000 : FAT 16 o FAT 32 o NTFS

** A la vista de lo anterior, si queremos mezclar varios sistemas, ya podemos saber como "debe" ser al menos nuestra "particion" correspondiente al C:. Si por ejemplo, queremos instalar NT 4, obligatoriamente el C: debe ser de FAT 16, y ademas, la particion o disco donde posteriormente resida el sistema operativo NT, tambien debe ser FAT 16. ** Recordemos, que para crear una particion FAT 16 o FAT 32, es durante el FDISK que damos inicialmente al disco. Si al entrar en FDISK tecleamos "S" a la pregunta de soporte para grandes particiones, entonces la particion creada ser de FAT 32. Si teclemos "N", la particion creada ser de FAT 16. Y ademas MUY IMPORTANTE, es que cada vez que nos salgamos de FDISK, no podemos volver a entrar en l, sino reiniciamos la maquina. Si no cumplimos estrictamente esto, las particiones pueden quedar creadas de cualquier forma, o incluso inutilizables. INSTALACION DE LOS DIVERSOS SISTEMAS OPERATIVOS ----------------------------------------------Vamos a ver los distintos casos. 1) Instalar MS-DOS 6.22 en un disco limpio. Facil. Todos (o casi) lo hemos realizado alguna vez. Se ponen los disquetes y ellos hacen todo. 2) Instalar w95, w95 OSR2 o w98, lo mismo. Unicamente, veremos en los siguientes puntos que es lo que ocurre si "ademas" ya teniamos el antiguo MS-DOS 6.22 3) Instalar w95 (normal, *no* OSR2) o w98 sobre una maquina que ya tenia el

122

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop antiguo MSDOS 6.22. En este caso, el instalador lo primero que hace es renombrar los archivos de arranque del MSDOS (los citados anteriormente), poniendolos como extension: .DOS. Ademas en el MSDOS.SYS de w95 / w98 que montar posteriormente, le incorpora una linea que dice: BootMulti=1 Esta linea lo que hace es darnos una nueva opcion en el men de arranque de windows (accesible con F8 en w98 al iniciarse o con CTRL en w98), que nos permitir "ir a la antigua version de MS-DOS". Seleccionando dicha opcion, el proceso que sigue windows es sencillo. Renombra sus archivos de arranque con la extension .W40. Posteriormente renombra los archivos .DOS por sus extensiones correspondientes, y ahora arranca los archivos que acaba de renombrar. Por tanto recordad que cuando estemos en "la antigua version de MSDOS", veremos los archivos "reales" de windows, con las extensiones .W40. 4) Instalar w95 OSR2 sobre una maquina que ya tenia el antiguo MSDOS 6.22. Esto es un poco mas delicado. Y es delicado debido a que MS consider que el OSR2 era para "equipos nuevos" y por tanto no debian tener montado ningun otro sistema operativo y para ello, se protegi de dos maneras: a) Si encuentra un win.com en la maquina, no se instala. Evidentemente debemos renombrar todos los win.com de nuestra maquina para instalarlo, y una vez instalado, podemos volver a dejarlo igual). b) El montaje y el renombrar archivos es similar al descrito en el punto 3). Pero si "vamos al antiguo MSDOS", lo siento, ya no podremos volver a utilizar el windows. El sistema se quedar colgado en el MSDOS 6.22 y no es posible volver debido a que no restaura el archivo IO.W40 por su nombre IO.SYS al salir. Pero..... para todo hay solucion. Recordad que antes he hablado sobre el tema de que si existe un fichero llamado WINBOOT.SYS en el raiz, lo ejecutar siempre. Por tanto, si copiamos el contenido del IO.SYS de win95 OSR2 sobre un fichero llamado WINBOOT.SYS, y este lo dejamos en el raiz, siempre se nos inicar el sistema con win95. 5) Instalar MS-DOS 6.22 sobre un sistema que ya tenga w95, OSR2 o w98. Si hemos entendido lo anterior, es sencillo. Pero necesitamos otra maquina en donde lo hayamos instalado previamente. a) Entonces podemos coger el MSDOS.SYS, IO.SYS, CONFIG.SYS, COMMAND.COM y AUTOEXEC.BAT de la maquina donde tengamos MSDOS 6.2, les quitamos los atributos y los ponemos en un disquete, PERO todos con extension .DOS. Ahora los copiamos a la maquina don w95/w98, y volvemos a poner los atributos que tenian. b) Editamos el MSDOS.SYS de w95 / w98, y le aadimos la linea BootMulti=1 c) Copiamos (via disquete) el resto de programas del antiguo DOS a nuestra maquina.

123

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop 6) Mas de un win98 o win98 / win95. Relativamente facil. Nos guardamos los fichero de inicio de uno de los windows, e instalamos el "nuevo" windows. Unicamente tener presente lo siguiente: a) Windows puede instalarse en cualquier disco y con cualquier nombre del directorio de windows. Pero reordad que ademas windows utiliza otra carpeta llamada "Archivos de Programa" (version en Espaol) o "Program Files" (version USA). b) Si instalamos en discos diferente, no hay problema. c) Si instalamos en el mismo disco, obligatoriamente deberemos instalar los windows en directorios diferentes y "ademas", los windows deben estar en distinto idioma para que la carpeta "Archivos de Programa" no sea compartida por ambos windows. Una vez instalado el nuevo windows, nos podemos "guardar" en otor sitio sus archivos de arranque. Entonces con poner unos u otros arrancaremos con cada windows. Esto se debe hacer por ejemplo, "antes" de salirnos de uno de los windows, para reinicar con el otro. O bien si arrancmos en "Solo simbolo del sistema", colocamos el que nos interese y reiniciamos otra vez. Esta es la solucion "manual". Al final del articulo, vermeos la "mecanizada". Pero por ahora es importante unicamente, el entenderlo. 7) Instalar NT 4 o NT 2000. Si queremos que no est "solo" en nuestro PC, deberemos tener instalado "cualquiera" de los sistemas anteriores. Con eso el NT, "es listo", y el solito, montar un men de multiconfiguracion. No es posible al contrario. Por lo que si vamos a intalar NT y queremos el dia de maana instalar cualquier otro sistema, lo mas sencillo, es instalar primero un MS-DOS 6.2, por ejemplo y posteriormente el NT. (ya instalaremos luego w95 / w98 cuando nos interese). ** Bueno, ahora vamos a lo interesante. Pero para ello, debemos haber "comprendido" perfectamente la parte anterior de este anexo. Es importante entender que es lo que hacemos, por si hubiese un error de los procedimientos automaticos que voy a dejar conjuntamente con este articulo y debemos efectuar los cambios a mano. ** Como creo que toso nos conocemos y ademas algunos (entre los que me incluyo) somos instaladores compulsivos, por favor no instalar todavia las baterias y programas que envio conjuntamente a este documento. Ademas, es necesario que modifiqueis algunas cosillas de ellos. ** Los programas que envio adjuntos en este documento, GUARDA, SISTEMA, etc.. deben estar en una carpeta accesible siempre en el PATH. Mi consejo es instalarlo por ejemplo en C:\ INSTALACION INICIAL IDEAL: -------------------------Bien, esto es siempre discutible, pero voy a intentar definir lo que considero una instalacion ideal. Voy a suponer que tengo varios discos o al menos varias particiones, y veamos como debemos crear nuestras particiones. Recordad que tanto el MSDOS 6.22 como el NT 4, no entienden de FAT 32. Por tanto esto ya nos obliga a que el disco C: sea FAT 16. Y ahora pensemos: para que hacerlo muy grande?. Realmente en C: solo voy a tener muy pocos archivos, y de paso puedo aprovecharlo para tener por ejemplo un 6.22 y un windows 3.1 y esto ocupa muy poquito. Entonces pensemos en una cifra pequea: 500 megas (y nos sobrar).

124

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop

Entonces: (suponiendo que instalamos desde cero) 1) Creamos las particiones, sabiendo que la del C: debe ser FAT 16 y ademas, no debe ser muy grande. 2) Instalamos MS-DOS 6.22. 3) Instalamos Win98 y seleccionamos durante el proceso de instalacion ,que nos lo instale en otro disco (por ejemplo D:) y este disco puede perfectamente ser FAT 32 o bien podremos convertirlo posteriormente. 4) Instalamos NT 4 en otro disco. A la hora de instalar NT 4 nos pedir que si convierte la particion en NTFS. A nuestro gusto. Pero pensar que el NTFS no se "v" desde MSDOS ni desde Win95 / 98. A su vez, recordad que desde NT 4 tampoco se "ven" las particiones FAT 32 (pero para esto ultimo, si que existe una trampa. Ir a www.sysinternals.com y all hay un driver para NT 4 gratuito que nos permite ver FAT 32. Solo ver. Existe igualmente otro que permite lectura/escritura, pero este ultimo ya es de pago de unos pocos dolares.) 5) Editamos el archivo oculto de NT llamado BOOT.INI que est en el disco C:, y le ponemos en la linea "Default" que arranque por defecto de C:\, si este fuese nuestro gusto. 6) IMPORTANTISIMO: Miramos a ver si en nuestro disco C: en el raiz, tenemos un fichero llamado BOOTSECT.DOS. Lo tendremos. POR FAVOR en ese momento, ponerlo como atributo de oculto para que por error no lo borremos: attrib bootsect.dos +h si por desgracia borramos dicho archivo, NUNCA podremos iniciar ya en modo win95 / win98 o MSDOS. 7) Modificamos el MSDOS.SYS de nuestro disco C:, al objeto de ponerle las lineas (al final): BootMenu=1 BootMenuDelay=10 BootMulti=1 (esta ultima, solo en el caso de que no estuviese). SITUACION EN ESTE MOMENTO -------------------------En esta situacion, nuestro ordenador, al arrancar, veremos: 1) Pantalla de inicio de NT donde nos permite seleccionar entre NT y Win98 (activa durante 30 segundos, pero modificable en BOOT.INI). 2) Pantalla del menu de win98 (activa durante 10 segundos). Nos permite seleccionar entre las opciones ya conocidas del menu (las mismas que cuando arrancamos con la tecla CTRL pulsada), y entre ellas, el "Ir al antiguo MSDOS" con lo cual arrancaremos el 6.22 AADIR OTRO WIN98 / WIN95 -------------------------Bueno, lo primero que hacemos ahora, ser guardarnos los ficheros necesarios, para que una vez que los pongamos otra vez en el directorio raiz de C:, seamos capaz de arrancar. Para ello, nos guardamos en otra carpeta

125

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop los siguientes archivos de C: MSDOS.SYS IO.SYS CONFIG.SYS AUTOEXEC.BAT COMMAND.COM LOGO.SYS (si existiese). Reordad que alguno de estos archivos, tiene "atributos" de oculto, sistema, etc. Para ver los atributos, podemos ejecutar en una vntana msdos, el commando: attrib c:\msdos.sys y veremos sus atributos. Para poner o quitar atributos, unicamente debemos poner el atributo o los atributos que queremos aadir o quitar con el signo + o - por delante. Es decir para quitar atributos al msdos.sys, deberemos hacer: attrib c:\msdos.sys -s -h -r y para ponerles, simplemente igual pero con signo +. Evidentemente, este proceso de "copia" y "quitar / poner" atributos, lo podemos hacer de una manera automatica mediante una bateria. Igualmente para volver a situarlos en C:, se puede utilizar otra bateria. * La idea, es que una vez guardados dichos archivos, instalemos otro windows en otra particion. Una vez instalado, nos guardamos en otro sitio, los mismos archivos. CAMBIAR ENTRE LOS DOS WIN98 ANTERIORES --------------------------------------En principio, la idea, es que ANTES de salir de uno de los windows, dejemos los archivos correspondiente para que al inicar otra vez, nos arranque del "otro" windows. Bien, para ello, simplemente "a mano" o con una bateria que nos hagamos a tal efecto, seremos capaces de arrancar en el windows que nos interese (dejo la creacion de estas baterias, como un pequeo ejercicio facil de realizar). PREGUNTAS Y DUDAS SOBRE LO ANTERIOR ----------------------------------P. Tengo instalado ya windos98 y quiero instalar msdos 6.22 para instalar luego win3.1 o WFW como lo hago? R. La secuencia normal es al reves. Primero tener 6.22 y luego instalar win98. Pero en este caso, tambien hay solucion. Para ello, se debe tener otro equipo en el cual est instalado un MSDOS 6.22. En ese equipo, formateamos un disquete con el sistema, dando los siguientes comandos: format a: /s a: attrib *.* -s -h -r ren msdos.sys msdos.dos ren io.sys io.dos ren command.com command.dos

126

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........


Jos manuel Tella Llop y ahora el contenido de ese disquete lo copiamos en nuestro PC con win98, dando los comandos: c: cd \ copy a:\*.* attrib io.dos +s +h +r attrib msdos.dos +s +h +r Debemos igualmente crear un config.dos y autoexec.dos que contengan las instrucciones del config.sys y autoexec.bat que queramos que existan bajo MSDOS 6.22. Se debe recordar que al entrar en el "Anterior sistema operativo", los archivos .DOS se renombraran con las extensiones correctas. Ademas debemos copiar todo el directorio DOS del PC que tiene MSDOS 6.22 a un directorio DOS en nuestro PC. Es conveniente utilizar en este caso el pkzip con la opcion -& para crear una copia multivolumen en disquetes y hacernos mas facil la transferencia. S al entrar en el men de win98 (tecla CTRL pulsada al arrancar), no aparece la linea de ir al "Antiguo sistema operativo", debemos editar el archibvo MSDOS.SYS de nuestro PC con win98, e incorporar la linea: BootMulti=1 La manera de hacerlo, es, entrando en "Solo simbolo del sistema" y teclear: attrib msdos.sys -s -h -r edit msdos.sys y ahora podremos buscar esa linea y si no existe incorporarla. Posteriormente nos salimos y tecleamos: attrib msdos.sys +s +h +r **** P. Tengo instalado win98, y deseo instalar win95 OSR2. O bien tengo instalado un win98, y deseo instalar otro win98 OEM (solo para equipos nuevos). R. En ambos casos debemos saber que los productos para equipos nuevos, analizan en nuestro disco duro a ver si encuentran un archivo win.com. Si lo encuentran no se instalan. Por tanto debemos "renombrar" todos los archivos win.com que existen en nuestro disco, instalar el nuevo windows y posteriormente volver a dejar esos archivos con su nombre. **** P. Quiero instalar NT 4 en mi maquina y no me deja. Avisa sobre el sistema de ficheros FAT 32. R. NT 4 necesita que el disco C: sea de FAT 16. Igualmente la particion en donde se instale debe ser FAT 16 o bien NTFS (particion propietaria y exclusiva de NT, no visible desde otros sistemas). Por tanto, esto nos obliga a reconfigurar todo nuestro sistema al objeto de hacer el disco C: con FAT 16. Vease las notas sobre el tema en los articulos anteriores. ****

127

You might also like