Desde Que Pulsamos El Botón de Nuestra PC Hasta
Desde Que Pulsamos El Botón de Nuestra PC Hasta
Desde Que Pulsamos El Botón de Nuestra PC Hasta
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
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
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
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.
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
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
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.
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
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:
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
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
** 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
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
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
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
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
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
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
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
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
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
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
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
** 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
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
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
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
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
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
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
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
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
+02h
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
1 BYTE
+06h
2 BYTES
+08h
4 BYTES
+0Ch
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
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
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
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
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
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
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
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
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
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
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
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
* 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
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
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
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
** 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
"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
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
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
53
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
55
56
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
58
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
60
61
62
63
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
65
66
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
68
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
70
71
72
** 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
** 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
** 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
76
77
78
79
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
81
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
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
84
85
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
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
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
* 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
90
91
92
93
94
95
96
97
98
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
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
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
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
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
104
105
106
107
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
109
110
111
112
113
114
115
116
117
118
119
120
121
** 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
123
124
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
126
127