Vous êtes sur la page 1sur 127

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

Jos manuel Tella Llop

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

Bueno.... esto puede ser un tema inmenso y voy a intentar escribirlo. Con esto quiero decir que esto
promete ser una "saga" que ir escribiendo poco a poco y que intentar que no se haga "pesada" y
por tanto intentar no entrar en detalles tcnicos. Por ello, ruego a los "tcnicos" que me concedan
la licencia de intentar expresarlo de la manera mas sencilla, y con ejemplos que no "son" del todo
verdad tcnicamente, pero que se aproximan a lo que queremos explicar.

INTRODUCCION

Antes de ponernos en tarea, meditemos un poco sobre nuestros hijos, por ejemplo (quien los tenga).
Nuestro hijo, no ser quiz el mejor, el mas guapo, el mas listo y el mas atltico de su clase. Pero s
nuestro hijo y lo conocemos perfectamente. Sabemos de que pi cojea y sabemos como podemos
orientarlo...

Bien, nuestro PC debe ser algo similar (salvando las distancias). No tiene porqu ser el mejor del
mercado, pero es "nuestro" PC, y por tanto, debemos conocerlo, y sabremos como "manejarlo"
antes situaciones extraas. Debemos perderlo el miedo. Conocer todo sobre l. No hace falta ser un
tcnico (no hace falta ser un medico para saber sobre la salud de nuestro hijo), simplemente unos
conocimientos superficiales y perderle el miedo....

PULSAMOS EL BOTON DE ENCENDIDO Y.....

Acabamos de pulsar el botn de encendido. y que pasa?.. bien, nada mas encender el ordenador, se
empieza a ejecutar un programa que est grabado internamente en nuestro PC. La maquina lo que
hace es ir a una determinada posicin de la memoria, y lo que est all se lo da directamente al
procesador para que empiece a ejecutarlo.

Por tanto, nuestra "memoria" del PC, no est tan vaca como parece.... algo debe contener. Este
algo es un programa que reside en un chip de memoria llamado BIOS ROM y que al encender el
PC, ocupa un posicin FIJA de memoria en cualquier PC. Siempre la misma.

BIOS

Antes lo hemos descrito como un programa. Realmente es un programa y adems es el nico


programa que conoce exactamente (o debe conocer) las tripas de nuestro PC.

Debemos pensar que realmente en el mundo, hay bastantes fabricantes de placas madre. Y muy
pocos fabricantes de BIOS. Los fabricantes de BIOS (Award, AMI, Phoenix, etc.) lo que tienen son
unos modelos de bios semi-estandard (por ejemplo la versin 4.51 PG de Award) y lo que hacen,
bajo pedido del fabricante de la placa madre, es adaptar "su" estndar de bios, a "esa" placa madre.
Por tanto, fijmonos que la versin 4.51 PG de Award, se ejecuta en muchas maquinas totalmente
diferentes, y resulta que la bios es totalmente diferente. Es especifica para "esa" placa madre (y de
cara al exterior, lo que pasa es que cumple la funcionalidad de la 4.51 PG - que ser una norma
interna fijada por el fabricante de la bios -).

Por eso, y por ser un programa, cuando hablamos de "actualizar" la bios, podemos efectivamente
"sustituirlo" por una versin superior. Pero, para ello, debemos buscar la "versin" de la bios 4.51
PG de Award para "nuestra" placa madre. Y nicamente, podremos buscarlo en el web del
fabricante de "nuestra" placa madre. S el fabricante es una marca "puntera" se preocupar de pedir

1
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

a Award revisiones y mejoras de sus bios. Si es una marcar "cutre", pues probablemente la placa
madre "muera" con la misma revisin de la bios que tenamos al adquirirla.

Y ahora una pregunta por qu se llama ROM? ROM quiere decir "Real Only Memory", es decir
"Memoria de Solo Lectura", y si es de solo lectura cmo podemos actualizar la bios?. Bueno,.... en
un principio, las ROM eran de solo lectura. Actualmente el termino ROM es un poco mas amplio:
se entiende por ROM aquella memoria que cuando se apaga de la corriente, no tiene perdida de
datos, y por tanto es susceptible adems de ser actualizable (memorias de tipo EPROM). Por tanto
con un programa especifico podremos actualizarlo.

Esto tiene un problema: s existen programas capaces de actualizarla, no podrn existir virus que
sean capaces de borrarla?.... Pues por desgracia: si. Y tiene muy malas soluciones el tema.
Pensemos que si nuestra bios est daada, bien por un virus, o bien porque hemos intentado
actualizarla y se ha ido la corriente en ese momento, o bien porque nos hemos equivocado y hemos
bajado del web un archivo de actualizacin que no es para nuestro "exacto" modelo de placa
madre... en ese caso, nuestro ordenador no volver a la vida. Es ms, ni se iluminar la pantalla, ni
har intento de arrancar de disco o desde disquete. Nada: muerto.

Las BIOS son configurables. Es decir podemos entrar en una serie de pantallas al iniciar el
ordenador para poner o quitar algunos parmetros que puede hacer que nuestra maquina responda
mejor ante un determinado hardware, o determinado sistema operativo. En muchas de las BIOS,
podemos entrar justo nada mas encender el ordenador, pulsando la tecla "DEL" (borrar) o la tecla
"ESC". Otras bios pueden requerir otra combinacin de teclas.

CONFIGURACION DE LA BIOS

Siempre es aconsejable, nada mas adquirir un ordenador, el entrar en la BIOS y apuntarnos TODO
lo que tienen las pantallas de definicin. En ciertas maquinas (y adems, con ciertas impresoras), la
tecla "Imprimir Pantalla" funciona. Pero no suele ser lo habitual, por lo que nos tendremos que
armar de paciencia, bolgrafo y papel, y a escribir....

Esto puede que nos saque de algn apuro alguna vez.

En principio, no se debe andar toqueteando en la bios, pero es conveniente intentar dejarla lo mas
acorde con las necesidades de nuestro sistema operativo. Hay que recordar que el MSDOS y todas
las versiones de Windows (excepto el NT), se apoyan "excesivamente" en la bios.

Recordemos los parmetros que podemos tocar (sin apenas riesgo) y adems que es conveniente
tocarlos:

Puerto paralelo: se debe intentar definir (pongo las opciones de "mejor" a "peor")

ECP+EPP (con DMA 3)

ECP (con DMA 3)

EPP

SPP

2
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Esto no quiere decir que sea lo mejor para nuestro sistema. Depender de que dispositivos
tengamos en el puerto paralelo. Existen impresoras (pocas) que nicamente funcionan e modo EPP
puro (no sirve ECP+EPP), y existen algunos scanner que tambin les sucede lo mismo. Es solo
cuestin de probar cual se adapta mejor a nuestro sistema. Pero para ser un poco ordenados por
qu no probar por el orden que he dado antes?

Pantalla PnP:

Bien, esto puede ser un mundo. En principio, muchas BIOS preguntan como primera opcin:

PnP OS (Operating System) : YES | NO

Pues aunque parezca mentira, mi consejo es poner NO. (al menos con win98 en Espaol. Con
Win98 en Ingls da igual lo que pongamos, pero el Espaol, tiene un "bug" en este sentido. Bug
que no aparece en "todas" las placas madre, pero s en un numero alto de ellas, y sobre todo si
tenemos dispositivos PnP ISA - mas adelante hablaremos de ello-)

Y luego, en esta pantalla, casi todas las bios, nos permiten poner IRQ por IRQ, si en PnP, o PCI, o
Legacy ISA o simplemente ISA. Estas opciones depeneden de cada bios. En principio no tocarlo, y
posteriormente cuando veamos los "BUSES" y posibles conflictos de dispositivos, veremos para
que pueden servir.

Pantalla APM (o Power Management).

Importantisimo: aqu tenemos que poner Power Management: "Enabled" y posteriormente todos los
timer (contadores de tiempo) para los distintos modos (suspender -suspend-, dormir -sleep-, etc...),
dejarlos a "cero" o "disabled". De esta manera, windows podr establecer sus propios contadores y
no entrar en posible conflicto con la bios.

Igualmente, hay ciertas bios que en dicha pantalla pregunta por ACPI (enabled/disabled). ACPI es
una caracterstica de control "avanzado" del sistema. Mi consejo, si vuestra lo bios lo pregunta es
que pongis activo "siempre" el modo ACPI. Mas adelante hablaremos tambin de l, en la
instalacin del sistema operativo.

** Con esto, ya hemos realizado una tarea "importante". La tarea, fijaros que no es configurar la
bios como he comentado antes. Sino ESCRIBIR como est la bios por defecto (al adquirir nuestro
PC) y que se supone, que mejor o pero, nuestro sistema operativo, al menos funciona.

Antes de ver que hace el programa de la bios hasta arrancar nuestro sistema operativo, debemos
conocer un poco de hardware. Que nos suenen un poco los temas.....

QUINCALLERIA (HARDWARE)

Bueno, al menos, ya nos suenan tres cosas: CPU, memoria (por la "pasta" que tenemos que pagar
por ella, aunque no est muy clara su funcin todava) y BIOS.

Pero que mas hay en la placa madre? Vamos a enumerar un poco, como si realmente existiesen
estos componentes por separado. Digo como si existiesen porque actualmente dichos componentes,
la mayora estn "embebidos" en algn chip multifuncion de la placa madre. Pero existir: existen.

Enumeremos un poco:

3
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

1) BUSES : PCI, ISA, AGP

2) Controlador de disco duro

3) Puertos: serie, paralelo

4) BUS USB

Y ahora algunos "chips" importantes:

1) Controlador Programable de interrupciones (IRQ)

2) Chip de DMA.

Y luego otra serie de "cosas" de las que hemos odo hablar: puertos, IRQs, etc.....

** Empecemos un poco con el concepto de un:

DISPOSITIVOS

Vamos a definir los "dispositivos" como el resto del hardware independiente de la CPU y memoria
con los que la CPU interactua.

Hagamos un poco de historia. El PC actual que conocemos, aunque parezca mentira, es


bsicamente el mismo que surgi en el ao 82. Su arquitectura es la misma y lo nico que ha ido
evolucionando han sido los "perifricos" o dispositivos. Algunos de ellos, actualmente, se
incorporan ya en la placa base (controladores de disco, disquete, puertos serie y paralelo, por poner
un ejemplo). Y otra evolucin evidente han sido las CPU, pero recordemos, que por suerte o por
desgracia han tenido que mantener su compatibilidad descendente y por tanto, su juego bsico de
instrucciones es el del antiguo 8086.

Vemos a empezar por la CPU y memoria y luego veremos con detalle el resto de "perifricos".
Recordemos que no nos queda ms remedio que ceirnos a la historia. Al ao 82.

CPU

La primera CPU con una arquitectura de 16 bits que triunf en el mercado (que conste que no era la
nica arquitectura existente en sus aos), fue el 8086 de Intel.

Su triunfo, al igual que el del Windows actual, fue una decisin de un gigante del hardware: IBM, y
un montn de suerte de una persona que empezaba en aquel momento: Billy Gates.

Hagamos historia. IBM hasta ese momento estaba dedicado a los grandes ordenadores
(mainframes) y bajo el supuesto de que empezaba a surgir un mercado potencial (la
microinformatica) decidi empezar a dedicarse a este mercado. Para ello encarg a Intel el diseo
(mejor dicho, la mejora de un antiguo 8008 - equivalente a un Z80) de un procesador de 16 bits. Y
abri publica subasta (por decirlo de alguna manera), sobre un futuro sistema operativo para dicha
arquitectura.

El propio IBM defini las caractersticas bsicas de las placas madre: el bus PC que rpidamente
evolucion al bus AT, y que por desgracia todava seguimos sufriendo.

4
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Con respecto al software, en aquellos aos existan unos sistemas operativos serios para los
ordenadores de 8 bits que empezaban a surgir. Decimos sistemas operativos "serios" porque
realmente lo eran para su poca. Estamos hablando del CPM cuya propiedad intelectual era de
Digital.

En la propia Digital, una vez abierta la "subasta" (y la apuesta) por parte de IBM para el futuro
sistema operativo de 16 bits, empezaron a desarrollarse dos proyectos: el CPM 86 (o "concurrent"
CPM) y un sistema basado en DOS.

En las fases finales del desarrollo, Digital "apost" por el CCPM (o CMP 86, o Concurrent CPM,
como queramos llamarlo), y abandon el proyecto basado en el DOS.

Pero Digital era (y sigue siendo) una Empresa "curiosa" con sus ingenieros de Software. El
ingeniero de Software tiene la "patente" de lo que desarrolle dentro de la Empresa (esta
caracterstica la hace nica en el mundo del software), y una vez implementado un producto de
ingeniera, el equipo, o la persona que lo ha desarrollado percibe "royaltis" por cada venta, al igual
que la propia empresa. Y si esta persona se va de la Empresa, se va con su "patente" o su "parte de
la patente" o sus derechos, y sobre todo si el producto ha sido desechado por la propia empresa se
lleva completamente "su" desarrollo y "su" propiedad intelectual.

Y este fue el caso. El ingeniero de Digital encargado del proyecto DOS se fue (o bien "cabreado", o
bien por una oferta que le hizo nuestro avispado Gates). Y nuestro avispado Gates, hizo una carrera
contra-reloj para tener finalizado su primer MsDOS (versin 1.0) seis meses antes de que Digital
finalizase su CCPM.

IBM tenia prisa por sacar el producto al mercado. Y form alianza con la incipiente Microsoft para
empezar a implementar el MsDOS (PCDOS) en sus ordenadores.

Fue una decisin acertada?. Personalmente creo que no. Pensemos que el incipiente CCPM ya era
capaz de soportar multitarea (hasta 4 tareas) en modo consola (no exista todava interfaz grfica) -
Por cierto, todava lo tengo y funciona!!!-.

Fue una triple decisin de IBM, que nos condiciona hasta el momento actual:

1. Se defini una arquitectura (bus PC que evolucion inmediatamente hasta el bus AT. Este bus
AT bsicamente se sigue conservando en nuestros actuales PCs y condiciona un montn de
cosas que iremos viendo en estos captulos)

2. Se defini un procesador: arquitectura X86 (el 8086)

3. Se defini un Sistema Operativo (por llamarlo "algo"...), el PC-DOS 1.0

Y de all surge la todava frase hecha: "ordenador COMPATIBLE". Pero compatible con que?
pues compatible IBM. Con los aos se ha perdido la palabra IBM.

Y surge la frase CPU compatible. con qu? pues con la arquitectura X86 de Intel.

** Bien, repasemos un poco dicha CPU. Como todas las CPUs tiene un montn de "patitas", ests
se agrupan lgicamente en las siguientes funcionalidades:

a. "patitas" de DATOS

5
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

b. de DIRECCIONES

c. de CONTROL

Es decir, los buses que salen directamente de la CPU, son de "datos" de "direcciones" y de
"control". Para escribir un dato en memoria, es necesario enviar el dato y "adems" enviar su
direccin. Y el bus de "control", es para comunicarse con el resto "del mundo", con los perifricos,
con la circuiteria externa, etc....

Esta primera CPU, tenia nicamente 20 "patitas" de direcciones. Y adems los registros generales
(todas las CPUs tienen una serie de registros generales internos con los que saben hacer ciertas
operaciones) eran de 16 bits.

Por tanto con 16 bits en principio, solo se podan direccionar 2 elevado a la 16 direcciones. Es decir
64 Kbs de memoria.

Intel, introdujo en esa CPU, el concepto de "segmentacin" (concepto por el que todava seguimos
pagando "muy caro", muchas, demasiadas "malas herencias").

El concepto de "segmentacin, consiste en utilizar 2 registros generales para formar una direccin
fsica. Un registro llamado "segmento" (o base) y un registro llamado "desplazamiento" (offset).

Bien, recordemos que 16 bits, son realmente 16 unos y ceros puestos a continuacin. Agrupmoslos
en grupos de 4 bits. Esto forma 4 grupos de 4 bits. Cada grupo de 4 bits, puede tener los valores:

0000 0 (posibles "cuartetos")

0001 1

0010 2

0011 3

0100 4

0101 5

0110 6

0111 7

1000 8

1001 9

1010 A

1011 B

1100 C

1101 D

6
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

1110 E

1111 F

En total 16 valores. Por abreviar, podemos representar cada grupo de 4 bites, con el numero o la
letra que he puesto a continuacin. Esta es la representacin hexadecimal (base 16).

Recordemos que hay 4 grupos de 4 bits, es decir, puesto entonces en representacin hexadecimal un
registro, puede tener el contenido 01A5 o bien 23EF, etc. Es decir desde el 0000 hasta el FFFF (en
total desde el numero cero al numero 2 elevado a 16 (menos 1 del cero), es decir 65535 o lo que es
lo mismo 64 Kbs.

En Espaa, utilizamos la palabra "octeto" en lugar de byte por una mala traduccin del francs que
fue quien implement esta palabra. Al igual, la palabra "ordenador" proviene de "ordinateur"
(francs). Y la palabra "cuarteto" como la mitad de un "octeto" (byte).

** Continuemos un poco ms.......

Pero como estamos limitados a 20 lineas de direcciones, tal y como comentabamos antes, se
defini, que la manera de "sumar" esos dos registros fuese, poniendo uno a continuzacion del otro y
desplazando el codigo de segmento un "cuarteto" (o "nible") aadiendolo un cero. Por tanto, por
ejemplo: (segmento A012, offset 2312)

Segmento: A0120

Offset 2312

Direccion A2432

Cinco "cuartetos" es decir 20 bits, por tanto se podian direccionar 10 elevado a 20 posiciones de
memoria: todo un "mega". Imposible pensar en un mega en aquel entonces !!!!

Curiosamente hay que fijarse que la manera de construir esto 20 bites, no es unica. Es deir, la
misma solucion, nos podra haber dado por ejemplo:

Segmento A0000

Offset 2432

Direccion A2432

(esto ya nos puede empezar a dar los problemas de que con dos direcciones de segmento diferentes,
se "alcanzan" posiciones de memoria iguales. Por tanto puedo "machacar" desde una direccion de
segmento, otra direccion que "teoricamente" pertenece a "otro" segmento.... malo de cara a
programacion no?)

A este modo de funcionamiento, es lo que ahora llamamos modo "real" del procesador y a ese
mega, es lo que llamamos memoria "real" del procesador.

7
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Y ademas por definicion, cualquier "compatible" (y los actuales lo sn), su CPU, arranca siempre
en modo REAL. Es decir, al encender un ordenador actual (PIII por ejemplo), su funcionamiento es
"exactamente" igual al funcionamiento del 8086 primitivo. Pero *EXACTAMENTE* igual.

Las CPUs actuales, no han sido ms que una evolucion de esta primitiva. Poco despues de nacer el
8086, surgi ya el 80286 capaz de direccionar 16 megas de memoria. Dur muy poco, ya que fu
una transicin al 80386. El famoso 386 con el cual se conserva actualmente compatibilidad
absoluta (excepto una y solo una nueva instruccion en el Pentium). Por tanto la arquitectura actual
se la llama tambien arquitectura 386. El 386, tena (tiene) un nuevo modo de funcionamiento. El
modo "protegido", ademas del modo "real" y otro modo hibrido entre ellos, que es el modo "Virtual
8086".

Sepamos simplemente que por compatibilidad hacia abajo, el modo real sigue limitado al famoso
"mega" inicial, y el modo protegido ya es capaz de ver toda la memoria.

Igualmente recordemos que los registros generales de la CPU, pasan a ser de 32 bits. (excepto los
de segmento que siguen en 16).

Por tanto con una direccion de 32 bits, podemos direccionar 4 gigas de memoria (2 elevado a la
32).

Por compatibilidad, la parte inferior de los 32 bits (los 16 bits inferiores) de cada registro,
corresponden a los antiguos registros del 8086.

Los registros generales, podian haberse numerado por ejemplo R0, R1, R2...., tal y como sucede en
otras arquitecturas. Pero Intel decidi ponerles "nombre" y ademas, que en ciertas operaciones
aritmeticas, fuese obligatorio realizarlos unicamente con ciertos registros y no con todos. Los
nombres, fueron tambien tan "raritos" como AX, BX, CX, DX, SI, DI, SP, CS, IP, ES, SS, DS. Y
estos son los unicos registros con los que se puede operar.

La evolucion posterior al 80486, y Pentium unicamente trajo consigo la posibilidad de incorporar


un chip matematico, el 387, que era capaz de realizar operaciones en coma flotante y de paso
incorporar una pequea pero importantisima cantidad de memoria dentro del procesador: la
memoria cach de primer nivel.

Posteriormente en el Pentium, se incorpor el juego de instrucciones MMX. Son unas "macro"


instrucciones especiales que son muy repetitivas en todo el tratamiento de graficos y video, y que al
implementarlas precisamente como "instruccion" hardware, facilitaban la programacion y la
"rapidez" a los programas que eran capaces de utilizarlas. No nos llevemos a engao: ningun
sistema operativo las utiliza y ademas pocos, realmente pocos programas (fundamentalmente los
juegos), las utilizan.

El Pentium, solo se distingue de sus predecesores en que tiene una instruccion "ms". una sola: el
"cpmexchg" es decir: compara dos registros y en funcion de la comparacin, los intercambia entre
s. Por compatibilidad hacia abajo, "tampoco" la utilizan los sistemas operativos, ya que si no,
tampoco funcionaria dicho sistema en una CPU anterior.

Posterirmente surgi, el Pentium Pro, que basicamente es un pentium optimizado para ejecutar
codigo "puro" de 32 bits, pero que se queda ridiculo cuando se le mete codigo de 16. Para solventar
esto, naci el PII, que basicamente es un Pentium Pro mejorado para codigo de 16 bits y que
ademas se le incorpora de base la tecnologia MMX.

8
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Y por ultimo estamos en el PIII. La unica diferencia es que se amplia el juego de instrucciones
MMX a las llamadas MMX avanzadas.

** Internamente existen muchas diferencias para "acelerar" la CPU. En las primeras CPUs, una
instruccion maquina, por ejemplo ADD AX,3 (suma 3 al registro general AX), representaba 3
ciclos de reloj. Tengamos presente que un procesador a 25 MHz (de los 386 primitivos), tena 25
millones de ciclos de reloj por segundo).

Segun han ido evoluvionando, en los Pentium, esta instruccion utiliza un solo ciclo de reloj (y
encima los pentium, pueden llegar ya a 500 millones de cilos de reloj por segundo), y ademas, en el
pentium, en "ese" ciclo de reloj, se est utilizando tecnica de "pipeline" (como las fotocopiadoras),
es decir aunque este procesando una instruccion, est preparando otra - en total hasta 5
simultaneamente. (en una fotocopiadora, mientras se est haciendo una fotocopia, el papel de la
siguiente fotocopia, ya est entrando en la maquina para acelerar el proceso. Esto es la tecnica de
"pipeline").

Ademas, para acelerar las CPUs, se ha incrementado su memoria cach de primer nivel, y ademas
se ha creado un "predictor de saltos" optimizado.

Pensemos que cada vez que un programa efectua un "salto", es decir, realiza una operacion del tipo:
"S esta fecha es mayor que 80, ejecuta la rutina tal y tal...". Bien, este condicional, es un "salto" en
las direcciones de memoria de programa. Cada vez que se ejecuta un salto, lo que hay en la cach
de primer nivel, no sirve para nada. Es necesario vaciarla y cargarla con el nuevo codigo de
programa que empieza en donde apunta dicho "salto".

Por tanto, es necesario "invalidar" la cach y cargar desde la direccion que apunta el "salto" otra
vez en la cach. Esto es una operacion "costosa".

Solucion: y que tal, si tenemos un circuito inteligente dentro de la CPU que sea capaz de
"predecir" un salto, y por tanto se vaya encargando de invalidar la cach y cargarlo con lo que ha
"predicho"?. Pues genial, la unica condicion es que acierte lo mas posible. Si no, la CPU se nos
viene abajo.

Bueno, pues ahora, Intel tiene un juicio pendiente con la tecnologia ALPHA de Digital, por
"piratear" su predictor de saltos en la arquitectura "Alpha". (Aprentemente le juicio no va a
realizarse ya que Intel "ha comprado" toda la fabrica de desarrollo de los chips Alpha y su
tecnologia hace unos meses.... curioso, tambien no?)

Y otra cosa: fijaros que este predictor de saltos, es importantisimo. Esto es lo que realmente
"acelera" una CPU (aparte de la tecnologia "pipeline").

Y la pregunta del milln: la competencia de Intel, tiene suficientemente desarrollada este tipo de
tecnologia?. Personalmente opino que n. No existe ningun indice de velocidad que sea capaz de
medirnos esto, y esto, precisamente es lo que sucede en un programa real.

MEMORIA

Poco podemos contar de ella. Es donde se guardan los datos. La evolucion de ella, ha sido
unicamente respecto a la velocidad, y poco ms. Variantes:

9
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

EDO, DIMM, etc..... pero informaticamente, excepto la compatibilidad con nuestra placa madre, y
su velocidad, poco mas puede interesarnos.

PLACA MADRE (NORMA DE COMPATIBILIDAD IBM)

Bien, llegado a este punto, y debido a las con-notaciones que tiene actualmente, es necesario
introducir un par de chips basicos que se definieron en las placas madre primigenias.

Son:

El controlador de Interrupciones

El controlador de DMA

Recordemos, que siguen "exatamente" igual a como se definieron al principio.

Tan exactamente igual, que hasta la frecuencia de funcionamiento del chip de DMA sigue siento de
unos ridiculos 4 MHz, que quiz fuesen rapidos en su momento, pero que actualmente son ridiculos
comparados con el resto de funcionamiento de una placa madre.

(Recordad, entonces que hay que "huir" de los dispositivos que utilicen DMA, simplemente por su
lentitud -y bloqueos de la CPU-. Igualmente recordad que la DMA y la UDMA no tienen *nada*
que ver. Ya lo iremos viendo ms adelante).

Veamos primero, como puede comunicarse la CPU con el resto de dispositivos.

Recordad que la CPU, tiene una serie de lineas de "control". Estas son las importantes para la
mayoria de los dispositivos.

Veamos las tres "unicas" maneras que tiene la CPU de "enterarse" o "recibir/enviar" datos a un
dispositivo. Antes de eso, vamos a introducir que realmente la CPU, solo tiene dos instrucciones
llamadas IN y OUT para poner un byte (o maximo, 2 bytes) en un "puerto". Y que un "puerto" no
es nada mas que una direccion de destino que tiene algun chip o dispositivo de la placa madre. Un
puerto, se direcciona con 2 bytes, es decir existe un maximo de 65535 puertos en un PC.

Bueno, ya ahora como podemos direccionar un dispositivos, al cual sabemos que por "hardware"
tiene un determinado (o determinados) puertos.

** Podemos mediante la instruccion IN poner datos en un puerto. La secuencia de datos que


estamos poniendo para un determinado hardware, puede ser por ejemplo, una "peticion" de que ese
hardware haga algo, o bien le estamos "escribiendo" datos, en vez de ordenes, etc.... Esto depende
del dispositivo. Del hardware, en s,... es decir del "manual" del fabricante de hardware (del manual
"tecnico"). Igualmente, mediante la instruccion OUT, podemos "leer" un dato que un dispositivo
nos haya dejado en un puerto.

Perfecto!. Pero ahora como nos enteramos que el dispositivo ya tiene un dato preparado para que
lo leamos? Bueno, pues dos posiblidades:

1) A lo "bruto". Empezamos enviamos una peticion a un dispositivo (mediante la instruccion IN),


y segun el manual del fabricante, ahora ese dispositivo, nos va a responder en un puerto. Pues

10
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

bien, empezamos a leer (mediante OUT), de ese puerto hasta que exista un dato. Hala!, a lo
loco!, OUT->no hay dato?->OUT->no hay dato?->OUT.......

2) Es decir nos metemos en un bucle, sin hacer nada ms hasta encontrar el dato que nos dice el
manual. Pero.... si por desgracia falla el dispositivo, o hemos programado mal la peticion que
realizamos con el IN, pues... nos hemos metido en un "bucle" infinito. La CPU nunca tendr ese
dato y ademas la secuencia programada no se puede interrumpir....... malo, malo.

Una mejora de esta solucion, sera mira unicamente cada cierto tiempo. Se puede hacer que se mire
cada "tic" de reloj. Y ese "tic" de reloj interno lo podemos programar (exite tambien un circuito de
"timer" para estas cosas).

Bueno.... hemos mejorado, pero reconozcamos que estamos perdiendo mucho tiempo en "ver" si el
hardware nos responde.

Este es el modo PIO (Program Input Output)

3) Un poco ms sofisticado. Alguien invent las IRQ (Interrupt Request). Es ms logico: le


pedimos algo al dispositivo, y nos dedicamos a hacer otras cosas. Cuando el dispositivo tenga el
dato, simplemente que nos avise enviando una "interrupcion" (IRQ). Se llama as porque una
interrupcion, interrumpe obligatoriamente lo que est haciendo la CPU y la obliga a tomar
alguna accion. Ya veremos cual. (en este caso por ejemplo, leer una vez del correspondiente
puerto, porque tenemos la seguridad que ahora s que hay dato).

Estas interrupciones, pueden ser interrupciones hardware, o bien interrupciones software, las
veremos tambien mas adelante.

* Este es el metodo IRQ.

** Y existe un tercer metodo para llevar ciertos tipos de datos desde un dispositivo hardware.

4) Imaginemos que tenemos un "chip" inteligente, y que somos capaces de decirle que una vez que
tenga LOS datos (digo "LOS", porque este chip admite programacion a nivel de decirle cuantos
queremos), nos los pase a una direccion de memoria prefijada sin necesidad de que la CPU
trabaje para nada. Esta es la tecnica DMA. Esta tecnica aparentemente genial tiene un
incoveniente (mejor dicho dos). Primero, cuando el chip va a pasar los datos a la memoria, o
desde la memoria, para asegurarse que nadie los toca, lo que hace es "desconectar" a la CPU del
bus. Y mientras est "desconectada" la CPU no hace nada. Sufre un "parn".

Bueno,... esto no era tan importante en la primera arquitectura del PC, con CPUs a 4,77 MHz, y una
DMA rapida (4 MHZ), este tipo de acceso simplificaba la programacion y ademas era mas rapida
que las tecnicas IN, OUT (tecnicas PIO). Pero por desgracia y para conservar la compatibilidad la
velocidad de la DMA sigue siendo la velocidad primitiva (4 MHZ), y ademas por el mismo motivo,
la DMA solo sabe hacer transferencias de 8 y 16 bits simultanemanete (cuando la memoria actual
se direcciona en un bus de 32). Y ademas, por desgracia, mientras est haciendo la transferencia
"interrumpe" a nuestro flamante PIII, que durante ese tiempo habra podido hacer cientos de miles
de operaciones en multitarea.

Esta es la transferencia DMA.

Bien retomando un poco el inicio de este capitulo, habiamos visto que existia el:

11
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

** Controlador programable de interrupciones. y que hace este "bicho"?,pues facil, lo que hace es
que cuando recibe una interrupcion, lo primero es enviar una seal a todo el hardware
"prohibiendo" que se emitan mas interrupciones, y posteriormente se la comunica a la CPU
mediante una linea de control especial (y unica!!). Se le llama "programable" ya que tiene la
posibilidad de que si recibe "simultaneamente" mas de una interrupcion, puede ordenararlas por las
prioridades que le haya programado el sistema operativo, para irselas dando a la CPU de una en
una.

Igualmente recordad, que como este controlador, ha prohibido las interrupciones, una vez que se ha
notificado a la CPU de esta intrrupcion y la CPU ha llamado a la rutina de servicio (driver) que
controla esta interrupcion, lo primero que tiene que hacer, en cuanto pueda, el "driver" es emitir una
instruccion STI, es decir informar a todo el sistema que ya est permitido de nuevo enviar
interrupciones.

Fijaros, lo "peligroso" que puede ser un driver mal programado, simplemente porque al
programador de turno se le olvida de vez en cuando el emitir una instruccion STI.

IRQs (INTERRUPT REQUEST)

Bueno, pues tambien arrastramos aqu una desgraciada herencia. Solo se definieron 16 IRQs (y
ademas, no vectorizadas, por lo que en principio NO pueden compartirse. Ojo!!, he dicho en
"principio").

Y ademas de "pocas", pues mal distribuidas. De base, sin tener NADA en el PC, estn utilizadas:

IRQ 0 Reloj del Sistema

IRQ 1 Teclado

IRQ 2 Controlador Programable de Interrupciones

IRQ 3 Puerto de Comunicaciones Serie 2

IRQ 4 Puerto de Comunicaciones Serie 1

IRQ 5 LIBRE

IRQ 6 Controlador de Disquetes

IRQ 7 Puerto paralelo.

IRQ 8 Reloj en tiepo real (CMOS de la BIOS)

IRQ 9 LIBRE

IRQ 10 LIBRE

IRQ 11 LIBRE

IRQ 12 LIBRE

IRQ 13 Coprocesador matematico

12
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

IRQ 14 Primer controlador IDE de disco duro

IRQ 15 Segundo controlador IDE de disco duro

Fiejmonos que en principio, solo quedan 5 libres. Pero.... si tenemos raton en puerto de ratn, este
utilizar la IRQ 12. Quedan 4. Si nuestra placa tiene bus USB, este necesita otra interrupcion, si
ademas tenemos bios ACPI, esta necesita otra interrupcion..... y la tarjeta de red, otra, etc,etc,etc,
Mala pinta tiene el asunto como para poder poner nuevas tarjetas no?

Vamos a introducir un poco los "buses" del sistema para dialogar con dispositivos. All veremos
como a pesar de las restricciones que aparecen por las pocas IRQs libres, podemos llegar a un ten
con ten con el hardware y el sistema operativo, para poder compartir al menos, alguna interrupcion
entre varios dispositivos.

Con esto de los "buses" debemos remitirnos otra vez a la "historia" de la evoluvion de las primeras
placas madre y su enlace con las actuales BIOS y el sistema en general.

Con esto ya podremos empezar a preguntarnos otra vez el tema del titulo de estos articulos: "Desde
que pulsamos el boton de arranque hasta..."

BUSES

Se conoce por BUS el conjunto de cables por los que circulan los datos de un dispositivo a otro o
de un dispositivo a la memoria y/o CPU.

COMUNICACION DE UNA TARJETA CON LA CPU

Solo a modo de recordaorio, recordemos que cualquier tarjeta, tiene, o puede tener para
comunicarse con la CPU, un rango de puertos, una(s) posible(s) interrupciones y una(s) posibles
DMA(s).

A continuacion, veremos como se asignas o no estos, en cada tipo de BUS.

BUS ISA

Empecemos otra vez por las "herencias". El primer bus que se implement en la arquitectura PC
fu el bus ISA. En un principio era de 8 bits y rapidamente evolucion a 16 bits.

Esto indica que cada vez, en cada ciclo de reloj, era capaz de poner un byte o 2 bytes en el bus. Y...
cuantos ciclos de reloj tiene el bus ISA?, pues 8,33 MHz es decir 8 millones de ciclos de reloj.
Tena esta frecuencia y la "sigue" teniendo (por el consabido motivo de compatibilidad descendente
las herencias pesan-).

Es decir el bus ISA con tarjetas de 16 bites, es capaz de soportar un maxion de 16 megas de
transferencia por segundo PARA todos los dispositivos.

Ridiculo en la situacion actual.

Y ahora la pregunta del millon: como se comunica con la CPU?.

13
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Bien, existan y siguen existiendo dos posibilidades principales. Esto es general para todas las
tarjetas, sean ISA, PCI, etc, pero vamos a empezar a hablar de ello en esta parte.

Un tarjeta, ademas de los consabidos puertos, irqs y DMs que pueda pillar (evidentemente de la
lista de "libres" que diamos con anterioridad, puede ser que tengo o no tenga su "propia" BIOS.

** En la arquitectura del primer PC, IBM, defini que la memoria principal del PC, podia llegar
hasta la direccion hexadecimal A000:0000 (es decir, recordando un poco, hasta el segmento A000,
offset 0). Siu pasamos esta dirteccion a Kbs nos d la increible capacidad de 640 Kbs os suena
esta cifra, no?.

Digo "increible capacidad", porque en el ao 82, era realmente increible.

Igualmente IBM defini las areas con los segmentos desde A000 a C000 como reservadas para los
buferes de video. Dfinini ifualmente el segento F000 hasta el final del mega para contener la
informacion de la BIOS de la placa madre, y dejo libre las direcciones C000 hasta F000 para
posibles BIOS de dispositivos y tarjetas que necesitasen su propia BIOS para funcionar.

Haciendo un mapa de la memora (referida a segmento y sabiendo que cada uno de estos ocupa 64
Kbs), tenemos:

0000

1000

2000

....

9000

A000 Hasta aqu los 640 Kbs primeros de memoria-

B000 Desde A000 hasta aqu el area para el video "grafico"

C000 Hasta aqui, dos zonas B000 a B7FF y B800 a BFFF

.... Libre

F000 Desde aqu al final para la BIOS del PC.

(nota la zona B000 a B7FF es para la memoria grafica en modo monocromo y modo texto. La B800
a la BFFF es para la memoria grafica en como color y mod texto. Lo que normalmente se utiliza en
el modo MSDOS puro).

Bine, pues ahora a las BIOS de las tarjetas: la primera tarjeta y totalmente necesaria en nuestro PC
es la tarjeta grafica o de video. Esta tarjeta "siempre" tiene BIOS, y normalmente de 32 Kbs, y
normalmente ocupa las direcciones desde C000 a C7FF. No es obligatorio, no est escrito, pero es
una norma no escrita que practicamente siguen todos los fabricantes de tarjetas de video.

14
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Como tal BIOS, incluso es actualizable. Al menos las de las tarjetas "buenas". (Matrox, etc...).
Recordad que en principio cualquier bios se puede actualizar y a veces, en las tarjetas graficas, ha
sido obligado para soportar alguna de las normas del ActiveX de windows).

En principio, ahora ya sabemos las cuatro posibles cosas que puede "tener" una tarjeta:

1) BIOS y por tanto "ocupar" un rango de memoria desde C000 a F000).

2) Puertos

3) IRQs

4) DMAs.

** Alguno de las 4 "cosas" anteriores (o cualquier combinacion de ellas) se necesitan para que la
tarjeta sirva para algo.

Y ahora ciendonos a nuestro caso del BUS ISA. como se asignaban las IRQs, los ports, etc, en
aquel entonces?. Recordad que no exista la norma PnP (Plug and Play, Plug and Pray para otros).
Pues medinate switches. Asi de facil. Era responsabilidad nuestra saber que IRQs o prots teniamos
libres y mediante switches se configuraba la tarjeta.

Bueno, se configuraba lo que se poda. Cada fabricante escogia al azar un conjunto de puerto y/o
IRQs de funcionamiento de su tarjeta y t lo instalabas. Pero claro, si queras aadir otra tarjeta, era
responsabilidad tuya que no "chocasen" entre ellas. Y a lo mejor, el nuevo fabricante, no te daba
opciones. Resulta que los posibles puertos de tu nueva tarjeta, ya estaban siendo utilizados por otra.
Y a lo mejor teniamos que utilizar una u otra. No podiamos instalar ambas a la vez.

Curioso y diro el tema, no?. Antes de comprar habia que leerse con lupa que IRQs podia utilizar y
que puertos y que DMAs y que direcciones poda pillar la posible BIOS. Llevar en el bolsillo, los
uqe ya tenias utilizados con las otras placas, y ver, antes, si era posible instalar esa nueva.....

Bien una vez instalada y asignadas (a mano) las IRQs y ports, etc, pues ya teniamos nuestra
flamante tarjeta. Pero ya nos teniamos que olvidar de la IRQ o de la DMA "sacrificada".

Ahora su entrada en funcionamiento era como siempre. Un driver se encargaba de su


funcionamiento y dialogaba con ella con las tecnicas que hemos comentado anteriormente PIO,
DMA e IRQ.

(como nota curiosa, todas las bios empiezan por los caracteres hexadecimales AA55. Las rutinas
llamadas de POST de la bios de nuestro PC, lo que hacen es recorrese al encender el PC, la
memoria comprendida dentre C000 y F000, en bloques de 2 Kbs en 2 Kbs y ver si all se encuentra
esos caracteres hexadecimales. Si se encuentra, ya sabe que es una BIOS)

(y como otra nota curiosa, recordad que antes hemos hablado de tarjetas ISA de 8 bits y 16 bits.
Esto implica que hay tarjetas "mas cortas" que lo que es el bus en donde se pinchan. No pasa nada.
Pueden pincharse ya que el bus ISA actual soporta ambos formatos de tarjeta).

BUS PCI

15
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Surgi mucho mas tarde. Es relativmente joven (vamos a saltarnos aqu una serie de buses
intermedios -EISA y VESA- que ya carecen de sentido).

La norma PCI, indica que un bus PCI es unicamente de 4 slots (pero permite saltarse la norma e
instalar mas slots en grupos de hasta 4 ms, mediante un "bridge" -puente- "PCI to PCI").

Igualmente la norma define al bus PCI como un bus de 32 bites a 33 Mhz. Esto implica una
velocidad de transferencia de 4 * 33 = 133 Megas por segundo.

Aqu la velocidad ya empieza a ser apreciable frente al bus ISA.

Igualmente, define las IRQs que pueden utilizarse como IRQs de dos tipos: "level" (por nivel) y
"edge" (esquinado). Precisamente este ultimo tipo:

"edge", es el que permitir cuando surgi la norma PnP, el poder compartir una IRQ con mas de un
dispositivo!... ya era hora no?. Lo veremos en cuanto tengamos definidos todos los buses.

Esto ultimo, ya empieza a parecer un poco mas serio. Ya nos empieza a abrir las posibilidades del
PC un poco ms del "corset" que teniamos hasta ese momento. Pero de paso, empieza a complicarle
la vida a la BIOS de la placa madre. En ese momento, fu cuando las BIOS, pasaron de ser una
cosa "tonta" y practicamente "la misma" para todas las placas madre, a tener su "propia vida" y ser
capaz de identificar los dispositivos. Complicaron la existencia a los fabricantes de BIOS....

BUS AGP

Es completamente nuevo. Unicamente consta de 1 slot, y est pensado para graficos a alta
velocidad. No es importante llevar un chequeo de la integridad de los bites en este bus (ya que si se
pierde un bit de un grafico en un instante dado, ni se nota). Lo unico importante aqu es la
velocidad. Existen varios estandares 1X, 2X, 4X Y en general se v a llegar a utilizar la misma
frecuencia que el BUS de la placa madre.

Con esto, actualmente se consiguen tasas de transferencia de 500 Megas por segundo.

Solo es importante aqu un matz:

*) El BUS AGP se inicializa "despues" del BUS PCI. Esto para respetar al pie de la letra la norma
PCI. Por tanto, si tenemos dos tarjetas graficas, una PCI y otra AGP, siempre ser la tarjeta
primaria la PCI (teoricamente ms lenta que la AGP).

Pero como las normas estan hechas precisamente para saltarselas, pues ciertos fabricantes de bios,
empezaron a poner la pregunta "Primary AGP/PCI o PCI/AGP" en la configuracion de la bios para
saltarse esta secuencia. Pero repito: no es un estandar, por tanto nuestra BIOS, pudiera no tener esa
opcion.

PLUG AND PLAY

Bin, hasta aqu hemos visto los posibles "buses" incorporados en nuestra placa madre. Queda
todavia por ver el bus SCSI. Debido a que este ultimo, no es nada ms que una tarjeta SCSI de la
cual salen un nuevo bus, podemos abordar el tema de Plug and Play en este momento y dejar para
mas adelante el SCSI.

16
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Hasta ahora, las tarjetas que hemos visto, haba que configurarlas "a mano".

Teniamos que asignarlas una IRQ de la lista que teniamos "libre" (recordad que en principio solo
tenemos la IRQ 5, 9, 10, y 11 -y puede que la 12 dependiendo si en la bios se la hemos asignado o
n a un posible ratn en puerto de ratn-)

Evidentemente este conjunto de IRQs libres empieza a quedarse excaso, maxime cuando en la
actualizada todo el mundo tiene tarjeta de sonido la cual nos va a pillar otra IRQ, y probablemente
la tarjeta de video nos va a solicitar otra. Evidentemente entonces para que queremos slots libres y
para que otros dispositivos, si aparentemente no vamos a poder instalarlos?.

** Bueno, algo "nos salva". Recordad que habiamos comentado que el bus PCI fu diseado para
poder "pillar" las IRQs de dos modos "level" y "edge". En principio entonces, el bus PCI (y AGP),
ha sido diseado para poder compartir interrupciones. Ahora solo queda el definir el como
compartirlas.

Igualmente debemos recordar que "por diseo" el bus ISA no puede compartir las IRQs y ademas,
debemos recordar que las IRQs asignadas a los puertos serie, paralelo y controladores de disco y
disquete (es decir IRQ 3, 4, 6, 7, 14, y 15) y las del sistema (IRQ 0, 1, 2, 8, 13) tampoco pueden
compartirse. Y si adems tenemos raton en puerto de ratn, o nuestra bios se lo asigna SIEMPRE a
un posible puerto de ratn, la IRQ 12 *tampoco* podr compartirse.

Igulamente quiero resaltar que en las IRQs "fijas" hay alguna matizacin:

a) Los puertos COM1 y COM2 /serie), necesitan una IRQ. Lo "normal" es que la bios le d la 4 y
la 3 respectivamente. Pero en ciertas bios PnP, la propia bios puede decidir (o puede ser
configurada) para que le d otra. Si el puerto no tiene IRQ no funcionar. Igualmente si el
puerto tiene conflicto con la IRQ porque la "pilla" otro dispositivo, tampoco funcionar.

b) La IRQ del puerto paralelo (normalmente la 7, pero estamos en un caso similar al anterior, con
respecto a que la bios puede darle otra), puede ser que no sea necesara. En win95 / win98,
"siempre" la bios le asigna una IRQ y por tanto windows la utiliza (y los drivers de impresion la
necesitan). En Windows NT (y windows 2000), esto no es necesario. NT y 2000 "pasan" de la
bios, y los drivers de impresion no lo necesitan. Lo gestionan mediante tecnica de "pool" y
liberan al sistema una IRQ que puede ser preciosa.

c) La IRQ 12 es ISA s est asignada a puerto de raton. Si en nuestro PC tenemos el raton en un


puerto serie, lo normal es que entremos en la BIOS y le digamos que no asigne la IRQ al puerto
de ratn. Hay ciertas bios que son capaces de detectar esta situacion y "liberan"
automaticamente dicha IRQ.

Pero esto no es lo normal y por tanto somos nosotros responsables de informrle a la propia bios.

** He repetido los conceptos anteriores que ya habiamos visto para tenerlos frescos en este
momento. Vamos a para entonces a hablar realmente del PnP.

En windows 95, Microsoft prepar una especificacion del PnP. No vamos a entrar en detalles
tecnicos, unicamente conceptuales. En resumen, la especificacion PnP es la siguiente:

1) Cada fabricante de perifericos PnP tiene asignado un numero identificativo unico en el mundo.

17
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

2) Los fabricantes son responsables de "numerar" sus dispositivos. Es decr una tarjeta suya tedr
en numero 1, otra el 2, etc. Numeros UNICOS.

3) Los dispositivos se agrupan por "funcionalidades" (dispositivos de "Mass Storage" para los de
acceso a disco, "Video" para los de video, "Multimedia Device" para los multimedia, etc.... es
decir hay una clasificacion.

4) El conjunto de estas dos caracteristicas definidas en el punto 1) y 2) forma un "string" (cadena


de caracteres) identificativo "unico" para un dispositivo. Por ejemplo de la forma:
VEN_8086&DEV_7110. Este ejemplo corresponde al fabricante INTEL (VEN es abreviatura
de "vendor") e Intel tiene curiosamente el "numero" identificativo de fabricante el 8086 (igual
que su primera CPU "compatible"). DEV indica "device" (dispositivo) y el 7110 es un numero
interno de Intel con el cual identifica de manera unica su dispositivo (el que sea, que en este
caso en particular es el: Intel 82371EB PCI to ISA bridge (ISA mode)).

5) Existe una "norma" estandar para preguntar al dispositivo que IRQs le "gustara" y "puede"
utilizar (tanto en plan exclusivo como "compartidas", si fuesen dispositivos PCI). Y cuantas
"Necesita". Lo mismo para los puertos y lo mismo para la DMA. Es decir, preguntandole al
dispositivo, este es capaz de informarnos que quiere y que posibilidades tiene.

6) La BIOS en inicializacion, es la responsable de preguntarle a los dispositivos esto.

7) La propia BIOS, es "lista". En principio "ve" que dispositivos tiene la placa madre y le d las
IRQs del sitema FIJAS que hemos comentado antes.

Realmente la secuencia que sigue es:

7.1 Asigna las IRQs fijas a los elementos incorporados en la placa madre. (puertos serie, paralelo,
raton, etc)

7.2 Mira en la tabla (que es modificable por nosotros entrando en la bios), a ver si alguna IRQ,
nosotros la hemos bloqueado (es decir, en la bios le hemos marcado, por el motivo que sea, que la
IRQ 10, por ejemplo, es una IRQ ISA o "Legacy ISA"). Si la tenemos marcada as, la ignora en su
lista de asignacion a dispositivos PnP.

7.3 En este momento tiene la bios una linsta de IRQs que le quedan librs.

7.4 Se recorre el bus ISA y "pregunta" a cada tarjeta s es o n, PnP. Y si es PnP que necesita y que
posibilidades alternativas le d. Posteriormente selecciona una IRQ de "su" lista de "libres" y le
informa al dispositivo de que esa IRQ es para l. Y SOLO PARA l. (Recordad que la IRQ ISA no
se pueden compartir. Por tanto se la d a un dispositivo y la borra de su lista de IRQs libre).

7.5 Cuando termina con el bus ISA, empieza con el bus PCI y AGP. Se recorre igualmente estos
buses preguntando a los dispositivos lo mismo con respecto a las IRQs. Y ahora les va asignando
las libres. Como las IRQs de las PCI, normalmente son "edge", es decir, se pueden compartir,
cuando la bios termina con su "lista" de libres, vuelve a asignar otra vez el comienzo de su lista al
dispositivo siguiente. Es decir "comparte la IRQ).

8) Lo anterior, no implica que el dispositivo funcione. Implica unicamente que ahora el dispositivo
"sabe" y la bios "sabe", que "debe" utilizar. Pero ahora queda que el sistema operativo lo
soporte. Este es el caso de w95 / w98. El MsDOS y el w3.1 *no* soportan IRQs compartidas. Y

18
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

en cambio en NT y el windows 2000, debido a que no hacen ni caso de la bios, vuelven a


reprogramar a su gusto todas las tarjetas para asignarlas lo que mas le interese a cada driver de
dispositivo.

RESUMEN Y POSIBLE USO POR NUESTRA PARTE

Y ahora que posible uso, o que posibles conclusiones debemos sacar de lo anterior?....

** Bien, en principo, y lo primero es saber si las tarjetas que tenemos o vamos a aadir a nuestro
PC (las ISA), son o no son PnP. S no son PnP y ademas no tenemos ningun "jumper" para que lo
sean, debemos ver que IRQ va a necesitar (mirando el manual nos dir cuales "puede", y ademas si
tenemos o no que poner algun jumper para esto).

Una vez identificada la IRQ libre que queremos para esa tarjeta, debemos entrar en la pantalla de la
BIOS, en la parte de PnP y a dicha IRQ, ponerle "ISA" o "Legacy ISA". Con esto unicamente
conseguimos que la bios NO se la asigne a ninguna tarjeta.

Curiosamente tampoco se la asigna a la nuestra. Es responsabilidad luego del driver (o del propio
windows), el asignarsela, por lo cual "puede" que tengamos que informarle al sistema operativo
(windows) en las "propiedades del sistema" que dicho dispositivo utiliza esa IRQ para que a su vez
windows se lo informa a "su" driver.

** Gracias a Dios, de estas tarjetas, practicamente no quedan.... (a excepcion de algun modem


interno ISA).

IMPORTANTE: Igualmente, si entre los dispositivos PCI, vemos que la bios (y windows) asignan
una determinada IRQ a un dispositivo, y por el motivo que sea, no nos gusta, o nos causa
problemas y queremos que le asigne "otra" de las posibles asignadas al bus PCI, es facil. Abrimos
la maquina y cambiamos a la tarjeta de "slot". Recordad que la bios asigna su lista de libres
recorirendose el bus PCI. Por tanto cambiandola de slot se la encontrar en otra posicioon y
"seguramente" le asignar otra IRQ. (Realmente aqu intervienen ms factores de tipo tecnico, ya
que existen las denominadas IRQ#A, IRQ#B, IRQ#C e IRQ#D. Estas son las que realmente solicita
un dispositivo y el proio bus PCI las tiene "entrelazadas" y juega con estas IRQs "logicas" y la lista
de IRQs libres. Pero este es un tema "tecnico" que se sale del alcance que quiero dar a estos
documentos)

** Bien hasta aqu hemos visto una "nueva" tarea que realiza la bios "Desde que pulsamos el voton
de encendido"...... y antes de empezar a cargar todavia el sistema operativo.

BUS SCSI Y SUS DISPOSITIVOS

Como introfuccion, debo comentar que la tecnologia SCSI siempre es la puntera (y la mas cara).
Los discos SCSI siempre son mejores que los IDE. Y mucho mas rapidos, pero evidentemente a
igualdad de "tecnologia". Me explico, todo lo "puntero" siempre nace en los dispositivos SCSI.

Posteriormente los IDE (uno o dos aos mas tarde) los alcanzan. Hagamonos una idea: los discos a
7200 revoluciones, eran normales hace 2 aos en SCSI.

Ahora se estn introduciendo en los discos IDE de ultima generacion.

19
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Actualmente el SCSI tiene ya discos de 10.000 revoluciones y con cach interna de 4 megas. Los
IDe todavia ni suean con esto.

SCSI=Small Computer System Interface

Bueno, pues una de las tarjetas que podemos pinchar a la placa madre, son las tarjetas SCSI (se
pronuncia "escasi"). Ests tarjetas lo que hacen es definir un nuevo "bus". Estas tarjetas pueden ser
PCI o ISA (casi no quedan de estas), e incluso hay placas madre que ya las llevan incorporadas.
Pero en este ultimo caso, a todos los efectos, es como si fuese una tarjeta independiente.

Por firmar un BUS, desde la tarjeta scsi, podemos colocar uno o dos cables que van a ir a uno o
varios dispositivos.

Veamos: un bus scsi no es nada mas que un cable. Y de este cuelgan los dispositivos. Y uno de los
posibles dispositivos es precisamente la tarjeta SCSI. Si salen dos cables, (por ejemplo uno interno
y uno externo), la tarjeta scsi est en el "medio" del BUS. Si unicamente tenemos un cable, la
tarjeta est en uno de los "extremos" del bus.

Es decir, teoricamente podemos tener:

1) D---D---D--T---D

2) T---D---D--D---D

(he representado por "D" cualquier dispositivo scsi (disco, CDROM, scanner, etc) y por "T" la
propia tarjeta).

En el caso 1) se supone que tenemos dos cables que salen de la tarjeta (uno interno y otro externo)
con dispositivos. En el caso 2) Solo tenemos dispositivos en uno de los cables (d igual).

IMPORTANTE: El BUS SCSI debe estar "terminado" por *ambos* extremos. Esto es
*OBLIGATORIO*, son propiedades electricas del dispositivo y si no prestamos atencion a esto, en
cualquier momento puede suceder un malfunionamiento de bus, o que uno de los dispositivos no
sea reconocido, etc. Mas adelante veremos que quiere decir "terminado".

Vamos ahora a ver que es lo que tiene cualquier dispositivos SCSI.

Previamente, debemos saber que cada dispositivos SCSI (incluso la misma tarjeta, ya que como
hemos dicho anteriormente es un dispositivo ms), tiene que tener un numero UNICO en el BUS.

Este numero debe ser un numero de 0 a 7 (luego veremos las ampliaciones del bus scsi). Este
numero se asigna en los dispositivos. Todos los dispositivos SCSI, tienen mediante "jumpers" la
posibilidad de asignarle un numero. Este numero se asigna en binario. Veamos como:

Normalmente hay tres jumper numerado 0, 1 y 2

Posibilidades (S=jumper colocado, N=no colocado):

2 1 0

- - -

20
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

N N N Identificacion cero (ID 0)

N N S ID=1

N S N ID=2

N S S ID=3

S N N ID=4

S N S ID=5

S S N ID=6

S S S ID=7

** Cada dispositivo un numero UNICO en el bus.

Y ademas hemos dicho que la tarjeta es un dispositivo ms. Recordar ademas que las tarjetas SCSI,
realmente son realmente una CPU especial y que ademas tiene su propia BIOS. Por tener su propia
BIOS es configurable, por ejemplo en las tarjetas Adaptec, se puede entrar en dicha bios pulsando
CTRL-A cuando se est inicializando la tarjeta.

Entonces como se asigna el numero "ID" a la tarjeta?. Facil: en las "antiguas" tarjetas,
normalmente por jumpers como los anteriores, y en las tarjetas actuales, entrando en su BIOS y
asignandoselo. Por defecto la tarjeta SCSI siempre viene con el ID=7.

Estos numeritos, no solo son para deifrenciar cada dispositivo, sino que ademas nos determinan la
"prioridad" del dispositivo. La norma SCSI define que el dispositivo de maxima prioridad es el ID
7, y luego va disminuyendo la prioridad desde el ID 6 hasta por fin el ID 0. Este es el motivo por el
cual la tarjeta scsi, viene siempre de fabrica con el ID 7. Evidentemente la tarjeta SCSI debe ser,
por logica, la que tiene mayor prioridad en el BUS.

** Otra caracteristica de la que hemos hablado anteriormente es la "terminacion". Y habiamos


comentado que el bus SCSI debe estar "terminado" en ambos sentidos (AMBOS).

que es la terminacin?: pues no es nada mas que una "resistencia" electrica que cierra el extremo
del bus.

Normalmente cada dispositivo "tiene" esta resistencia internamente. La manera de "activarla", es


decir la manera de decirle a un dispositivo que l es el ltimo del bus y por tanto "debe" tener la
resistencia colocada, es mediante un jumper (este jumper, suele denominarse "TE" termination
enabled-).

Es decir cada disco o dispositivo que vayamos a conectar, al menos tiene 4 jumpers. Los 3
anteriores para asignarle el ID y uno mas marcado como "TE".

Unicamente el *ultimo* dispositivo en cada parte del bus, debe llevar el "TE" activo. CUIDADO
con esto. De fabrica TODOS los dispositivos que copremos suelen tener el "TE" activo.

21
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Y la propia tarjeta?. En el caso 1) que hemos visto anteriormente NO debe estar "terminada" y en
caso 2), bien sea externo o interno el cable con dispositivos, la tarjeta debe estar "terminada"
siempre. Entonces la terminacion, depende del tipo de tarjeta: en algunas (viejas, o incorporadas en
la propia placa madre del PC), puede ser un jumper. En las actuales, se define tambien en la propia
BIOS de la tarjeta ademas de asignarle all el numero de ID.

Algunos de los dispositivos "viejos", en vez de tener el "jumper" TE, lo que fisicamente tienen
es una fila (o dos) de resistencias ("resistor"). La manera de quitar la "terminacion" es eliminar
fisicamente las resistencias.

Igualmente, existen "tapones", que no son mas que un pequeo conector que se pone al final del
cable, en uno o en ambos extremos y que realmente son resistencias. Hacen de tapon. Esto es
muy util, mi costunbre, segun compro un dispositivo scsi, es quitarle siempre el jumper TE, y
finalizar *siempre* los buses con estos "tapones". As tengo la seguridad que no se me olvidar.

La velocidad "base" de tranferencia del bus scsi es 10 megabytes en total en todo el bus. El cable es
un cable de 50 hilos.

El bus que hemos definido hasta aqu es el llamado NARROW SCSI. Y ya realmente es de los
"viejos".

ULTRA SCSI

Es el mismo bus (aparentemente), con un chip especial que permite una comunicacion al doble de
velocidad. Por tanto soporta 20 megabytes en el bus. Los dispositivos deben soportar negociacion
"ultra". Practicamente todos los actuales lo soportan.

WIDE SCSI

Cambia el bus. En vez de 50 hilos es de 68 y soporta 16 dispositivos, y por tanto los dispositivos en
vez de 3 jumpers para asignar el numero, tienen 4, para poder asignar un numero del 0 al 15. Por
compatibilidad el orden de prioridad sigue siendo del 7 al cero y luego con "menor" prioridad
todavia el 15, 14, 13,.....,8.

Debido a que el cable es de 68 hilos, fisicamente los dispositivos son diferentes. Su conector es
diferente.

Estas tarjetas, lo normal es que uno de los conectores (bien el externo o bien el interno, o incluso
hay veces en que ambos son internos), sea de 50 hilos y el otro de 68. As los dispositivos
"normales" los conectamos al de 50, y los "wide" al de 68.

ULTRA-WIDE SCSI

Pues una combinacion de ambos anteriores. Evidentemente duplica la velocidad, por lo que la
velocidad del bus llega a 40 megabytes por segundo.

ULTRA 2 SCSI o ULTRA 2 WIDE SCSI

Es la ultima tecnologia, llamada tambien LVD (Low Voltage Diferential).

22
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Normalmente estas tarjetas son 2 buses en 3 conectores. Dis de los conectores forman un bus
normalito ULTRA-WIDE de los comentados anteriormente y con los terminadores conectados tal y
como hemos comentado.

Y ahora el canal LVD. Este canal es el "otro" bus. Uno de los extrmos sigue siendo la tarjeta. Por
tano, una tarjeta ULTRA 2 con tres conectores, tiene dos posibles terminadores. Uno para la parte
normal ULTRA-WIDE y otro para la parte LVD (por tanto este ultimo debe estar siempre
"terminado").

Los dispositivos LVD (discos), son especiales. En un bus LVD todos los dispositivos que
enchufemos "deben" ser obligatoriamente LVD. Sino lo hacemos as, TODO el bus se comportar
como un bus NORMAL. En este caso, los discos LVD, tambien tienen un jumper que se debe
activar, para decirle que debe comportarse como un disco normal y no como un disco ULTRA 2.
Por tanto en este caso, existen dos posibilidades:

1) Todos los dispositivos son LVD en ese bus. Entonces NINGUNO de los dispositivos debe tener
activo el jumper de "normal". Y el bus debe terminarse "externamente" (al final, no puede ser
que uno de los dispositivos haga de terminador), mediante una resistencia especial llamada
resistenc a "activa" o "terminador activo".

2) Alguno de los dispositivos en ese bus NO es LVD. Entonces el resto de dispositivos LVD,
deben tener al jumper de "no LVD" o bien "SE" conectado.

En este caso, en dichos discos ya puede activarse el jumper "TE" y por tanto, el ultimo debe tenerlo
activo. S el ultimo no lo tueviese activo, el bus debe terminarse tambien con una resistencia
externa. Pero debe ser una resistencia "pasiva" o "terminacion pasiva" en este caso. Es decir una
resistencia normalita como si fuese un bus ULTRA-WIDE de los citados anteriormente.

La velocidad de este bus soportada es de 80 megabytes por segundo.

*** Y por ultimo comentar que actualmente hay tarjetas y dispositivos que soportan la tecnologia
SCAM. Esta tecnologia es simplemente que los dispositivos negocian (o pueden negociar) su ID
con la tarjeta y la propia tarjeta puede cambiarselo automaticamente. Con esto nos evitamos el
"engorro" de tener que asignar un numero a cada dispositivo, pero perdemos la flexibilidad de
poder asignar nosotros mismos las prioridades, ya que existe la posibilidad de que la tarjeta nos lo
cambie de prioridad.

Particularmente yo desactivo dicha opcion en la bios de la tarjeta y lo gestiono "a mano".

*** Y ya por ultimo, recordar que sino tenemos discos IDE y queremos que uno de los discos de
nuestra tarjeta SCSI sea el disco de "boot", la norma SCSI dice que este disco debe tener el ID 0 o
el ID 1. Esta es la norma, pero en las tarjetas actuales, esto tambien es configurable mediante su
bios.

OTROS DISPOSITIVOS EN LA PLACA MADRE: CONTROLADOR IDE

Este dispositivo, historicamente era una tarjeta "aparte" que se pinchaba en un slot ISA. Despues de
aparecer el bus PCI dichas tarjetas empezaron a ser PCI y en la actualidad, practicamente en todas
las placas madre vienen incorporadas.

23
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

** Se le llama controlador IDE, pero realmente es "la mitad" del controlador. Me explico: la
electronica de los actuales discos duros lleva incorporada la otra mitad.

Recordemos que un controlador IDE soporta dos "buses" o "canales" IDE. Cada canal IDE
unicamente puede soportar a su vez dos dispositivos: dicocs dura, disco y CD, o dos CDs. Por tanto
estamos limitados a un maximo de 4 dispositivos IDE.

Cada dispositivo debe estar identificado dentro del mismo "canal" IDE como "master" o como
"slave". Esto se configura mediante un switch o jumper en el propio disco del le dice si es "MA"
(master) o "SL" (esclavo). S solo tenemos un dispositivo en un canal IDE, este debe ser "master".

Por tanto existen dos canales IDE (primario y secundario), y cada uno de ellos con dos dispositivos
(uno master y otro slave).

** Cada canal IDE, "pilla" una IRQ del sistema. El canal primario, la IRQ 14 y el secundario la
IRQ 15.

Es importante la matizacion anterior, ya que si unicamente tenemos utilizado un canal no


podriamos utilizar la IRQ 15 para otra cosa? Pues efectivamente: s. La manera de decirle a la bios
que deje libre la IRQ 15 porque no vamos a utilizarla en la controladora IDE, es precisamente
entrar en las pantallas de la bios y decirle que *no* tenemos canal IDE secundario.

Esto ultimo, puede que a windows no le guste y nos mrque una admiracion amarilla en el canal IDE
secundario. No es problematico y no pasa nada. Todo funcionar correctamente. De todas maneras,
si esto nos pasase y queremos que wndows no nos informe de esta "incidencia", en la mayoria de
los controladores actuales (drivers de windows), se puede entrar en al Administrador de
dispositivos y en la controladora existe una opcion (en casi todas) para decirle lo mismo que le
hemos dicho a la bios: que se utiliza solo el canal primario. Con esto dejaremos ya de ver la
admiracion amarilla. Pero repito, esto no influye en el rendimiento ni en el comportamiento de
windows.

VELOCIDAD DE LOS DISPOSITIVOS IDE

Siempre hemos oido hablar de las velocidades del disco duro, de la DMA, del modo PIO 4, de las
UDMA, y siempre nos han querido vender las cosas con frases majestuosas: soporta UDMA 33 y
nosotros nos quedamos con la boca abierta y luego incluso vamos "fardando" de rapidez. Pero
realmente sabemos lo que nos han vendido? realmente es tan rapido?

Tenemos varios componentes que influyen desde que un sector de datos est en el dsico hasta que
ese sector de datos, est en la memoria principal de nuestro PC.

Por una parte tenemos la verdadera velocidad del disco duro. Esta velocidad es unica. Es un
componente mecanico y por tanto unicamente depende de la velocidad de rotacin del disco
(actualemtne en los IDE, hay velocidades de 4200, 5400 y 7200 revoluciones por segundo).

Cuando queremos leer un sector de datos, lo peor que nos puede pasar es que el sectar, acabe de
pasar por debajo de la cabeza de lectura. Si es as, tendremos que esperar una revolucion completa
del disco hasta que vuelva a pasar por debajo de la cabeza de lectura. Lo mejor que puede pasar es
que est justo antes de la cabeza lectora. En este caso se leera inmediatamente.

24
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Y estadisticamente la media de los sectores que queremos leer, estarn a la "mitad" de distancia de
una revolucion completa del disco. Esto es lo que se define como "average", y realmente solo
depende de la velocidad de rotacion.

A mas velocidad, mas rapido ser el disco (y mas caro).

No tenemos en cuenta aqu tambien otro factor. Si la cabeza lectora no est en el cilindro
correspondiente al sector que queremos leer, el brazo que soporta a la cabeza lectora, tendr que
hacer un moviemiento transversal de posicionamiento a ese cilindro. Esto es lo que se denomina
"seek".

Por otra parte, pensemos, que la "mitad" de las controladoras actuales, estan integradas dentro de la
electronica del disco duro. Y all es donde podemos tener el verdadero cuello de botella (otro ms),
ya que a circuiteria y la logica del propio disco, lo mas normal, cuando le solicitamos un sector, es
que "lea" ms sectores y se lo pase a la controladora (a un mini-cach) por si acaso inmediatamente
despues solicitamos otro sector contiguo (suele ser bastante normal que nos interese leer mas de un
sector: 512 bytes, incluso el propio sistema operativo, se organiza en cluster que siempre son
mayores de ese tamao, por tanto siempre se le solicitar al disco ms de un sector en diversas
peticiones sucesivas).

Pasemos a ver ahora como van los datos de la controladora a la memoria.

DE LA CONTROLADORA A LA MEMORIA

Se pueden utilizar 4 metodos diferentes.

Programmed I/O (PIO)

Memory Mapped I/O

DMA

Busmaster DMA

PROGRAMMED I/O

En el "programmed I/O" la transferencia de datos entre controladora y memoria principal se


desarrolla a traves de los diferentes ports de I/O (Entrada / Salida) de la controladora que tambien
sirven para la transmision de comandos. En el lado del software, se encuentra un programa
correspondiente con los comandos de lenguaje maquina IN y OUT. Pero esto significa que cada
BYTE del disco, debe pasar por la CPU despues de ejecutar dicho comando. Uno a uno (o dos a
dos, como maximo)-

En este caso, la tasa de transferencia de datos no solo est limitado por los valores maximos de
velocidad del bus, sino tambien por el rendimiento de la CPU, y evidentemente en un sistema
multitarea, la CPU puede que llegue a estar demasiado ocupada preocupandose del acceso a los
datos.

MEMORY MAPPED I/O

25
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

La CPU podra recoger los datos de la controladora de una manera mas rapida, si esta los dejase en
una zona de memoria fija. En este caso, la cpu puede trabajar mucho mas rapidamente con estos
datos ya que puede moverlos mediante las intrcciones MOV que trabajan mas rapidamente que los
accesos mediante IN y OUT.

De esta manera, en las actuales CPUs se puede obtener un mayor rendimiento.

Pero por desgracia, las controladoras no "saben" de memoria virtual, no sbaen del modo protegiod
(protected mode) de la CPU. Unicamente conocen la memoria real. Esto causa un problema muy
serio de rendimiento en los actuales sistemas operativos basados en las tecnicas de memoria virtual
(frente al antiguo MSDOS que operaba con memoria real).

DMA

Ms conocido que los dos procedimientos anteriores, es la transferencia DMA, que en los PCs se
soporta en un chip DMA propio. Este chip, debe posibilitar la transferencia de datos desde un
dispositivo (disco duro, disquete, CDROM, etc..) a la memoria y evitar con ello, el largo camino a
traves de la CPU.

DMA = Direct Memory Access.

La idea es buena, ya que el software solo debe indicarle al controlador DMA, cuantos bytes se han
de transportar de donde adonde. Pero esto en el PC se realiz de una manera bastante chapucera, ya
que el controlador de DMA que emplean los PCs, no solo es bastante inflexible (lo que an se le
podra perdonar), sino sobre todo lento. Tan lento, que an el acceso segn el procedimiento PIO en
el peor de los casos es mas rapido a partir de los antiguos 486. Ya que como anacronismo en la
historia de los PCs, el controlador DMA en los AT y sus sucesores, sigui haciendose funcionar a 4
MHz, en donde los primeros PCs ya alcanzaban los 4,77 MHz. En ellos, en los antiguos, la
transferencia DMA es mas rapida que el PIO. De esta forma no se puede alcanzar mas de 2 Mb
/segundo.

Por ello, la mayoria de los discos modernos ya no controlan segun el metodo DMA

BUSMASTER DMA

Otra forma del Direct Memory Access es el Busmaster DMA, pero este no tiene nada que ver con
el chip de DMA integrado en la placa madre, y del acual hemos hablado anteriormente.

En este tipo de acceso, la controladora del disco duro, desconecta a la CPU del BUS y transfiere los
datos con ayuda de un controlador Busmaster DMA con control propio.

De esta manera se pueden conseguir tasas de transferencia de has 8 mb/seg.

Busmaster DMA solo se empleaba en el caso de controladoras SCSI.

UDMA

No lo he mencionado al principio del articulo, debido a que no es nada mas que una variante del
Busmaster DMA, implementada en controladoras IDE y aumentada su velocidad de transferencia a
16 MB/s. Posteriormente surgi la UDMA 2 (o UDMA 33) hasta 33 megas/s. Y actualmente ya se
estan vendiendo placas madre con controladoras incorporadas a 66 MB/seg.

26
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

NO LLEVARSE A ENGAO

No hay que llevarse a engao con todo lo anterior. En las controladoras / discos actuales, ambas
cosas forman un TODO. Es decir, no solo el chip de la placa madre debe soportar esa velocidad,
sino que tambien el propio dispositivo (la electronica del propio disco duro), debe soportarla. Es
decir un disco UDMA actual (UDMA 2) por mucho que lo pongamos en una placa madre con
controladora UDMA 66, no dar mas rendimiento que el que daba en una UDMA 33.

GOODBYE AL MODO PROTEGIDO

Como colofn de esto, voy a hacer unos pequeos comentarios de diseo del propio nucleo del
sistema operativo, en relacion con los metodos de acceso anterior.

Recordad que existen dos modos de funcionamiento del procesador. El modo "real" que es el modo
en MSDOS puro y duro, con el limite de 640 Ks en memoria contigua y el limite de 1 mega + 64
Kb para todas las direcciones reales. Y el modo "protegido", en donde se tiene acceso a toda la
memoria de la maquina, y es el modo en que funciona windows, linux, OS2, etc.....

Las formas vistas antes de transferencia DMA, solo se pueden utilizar en el mundo del modo Real
(Real-Mode), y llevan al procesador a un "cuelgue" si no se toman las medidas adecuadas.

El problema es la gestion de memoria virtual, mnejada por la Memory-Management-Unit (MMU)


de la CPU. Es el encargado de formal las direcciones virtuales para los programas que trabajan en
modo protegido y proyectarlas sobre las direcciones verdaderas (fisicas) en la memoria.

Pero de esto, los programas no se enteran, ya que nunca entran en contacto con las direcciones
fisicas, y el controlador de DMA no es una excepcin:

tampoco se entera, ya que no tiene acceso a la MMU de la CPU.

Esta problematica, no solo suerge en windows y otros sistemas en modo protegido. Tambien afecta
al MSDOS cuando este est trabajando o conmuta a modo Virtual-86 (el tercer modo de
funcionamiento del procesador). Por ejemplo en cuanto instalamos el EMM386.EXE en el
config.sys que sirve para la emulacion de la memoria expandida y que depende de la gestion de la
memoria virtual del procesador.

Solo hay un modo de evitarlo, y es la vigilancia de la controladora DMA.

Esto es posible en modo protegido mediante el control de los ports I/O (virtualizacion del
hardware). As por ejemplo, windows instalar un Control-Monitor virtual en el fondo (en la capa
mas baja), que vigila la programacion del controlador DMA, mediante la BIOS o un programa, y
que convierte las direcciones virtuales indicadas en direcciones fisicas verdaderas antes de que se
escriban los registros del controlador DMA (antes que se programe una lectura/escritura)

RESTO DE DISPOSITIVOS INCORPORDOS EN PLACA MADRE

En las placas madres actuales, tendermos incorporados:

1) Puertos serie (COM1 y COM2)

2) Puerto paralelo

27
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

3) Puerto de raton

4) Puertos USB (practicamente en todas las placas actuales).

PUERTOS SERIE

Simplemente son unos puertos de baja velocidad (115200 bits/segundo) Esta velocidad es adecuada
para los modem o el raton serie, pero para comunicacion PC a PC mediante la conexion serie que
nos suministra windows, se queda bastante escaso.

Esta comunicacion equivale a unos 14 Ks por segundo. Evidentemente se queda muy corta para
conexion por cable. Debemos recordar que la velocidad se configura en el Administrador de
dispositivos. La velocidad configurada all unicamente tiene efecto en la conexion por cable y no
tiene ningun efecto en el modem. Esto es importante, ya que por defecto en windows, viene a 9600.

Mi consejo es configurarlo al maximo de velocidad (normalmente 115200).

Las placas madre de ultima generacin llevan incorporado un chip multipuerto que nos puede dar
hasta 1.000.000 (un millon) de bps. (en este caso, la comunicacion via puerto serie, empieza a ser
"decente").

PUERTO PARALELO

Este dispositivo, aunque muy "viejo", vamos a "mirarlo" con un poco mas de cario, y esto es
debido a que ya no solamente se utiliza para la impresora, sino que ya pueden conectarse a ella un
monton de dispositivos. Los mas "genericos", por ejemplo, son: el ZIP, el LS-120 (SuperDisk),
algunos modelos de Scanners y algunos modelos de grabadoras de CD-ROM.

Debido precisamente a la conexion de estos dispositivos, debemos prestar especial atencion a su


configuracion en la bios.

Recordemos que las bios soportan normalmente:

ECP+EPP

ECP

EPP 1.9

EPP 1.7

Bidireccional

SPP

(nota: no todas las bios soportan el metodo ECP+EPP, y no todas tienen dos normas para EPP -1.9
y 1.7-)

En general he escrito lo "optimo" de abajo arriba, pero lo optimo en funcion de la velocidad y


prestaciones, no quiere decir que sea lo optimo para nuestros dispositivos.

28
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Yo aconsejo realizar las pruebas del puerto paralelo seleccionando en la bios el puerto paralelo con
lo metodos anteriores, y probando cada opcion de arriba a abajo. Cuando encontremos la primera
en la cual funcionen todos los dispositivos que tenemos en el puerto paralelo, esa es la que debemos
dejar.

No todos los drivers de impresora, ni drivers de scanner, etc, soportan todos los metodos del puerto
paralelo. Por ello es necesario "probar".

Es importante este tema, fijaros que por ejemplo un ZIP en puerto paralelo, pasa de unos ridiculos 5
Megabytes por minuto, hasta unos "buenos" 30 megas / minuto, unicamente configurando
correctamente el puerto (y ejecutando luego el "optimizador de puerto paralelo" de iomega, que lo
unico que hace es "mirar" como tenemos el puerto para "decirselo" al driver del ZIP. De esta
manera, pasamos de 5 a 30, simplemente tocando la bios y ejecutando en ambos casos el
"optimizador").

** La velocidad tipica de puerto paralelo en una comunicacion directa por cable entre dos PCs,
llega a 1 Megabyte por segundo, pudiendo alcanzar los 2,5 megas en las placas madre de ultima
generacion que utilicen un "buen" chip de multipuerto.

PUERTO DE RATON

Es un puerto (una conexion) especifica incorporada en la placa madre, y que por desgracia nos
"roba" una preciosa IRQ (suele ser la 12). Lo normal es que pueda deshabilitarse el puerto de raton
en la bios. En ese caso no se utilizar esa IRQ, pero... no todas las bios la van a dejar disponible
para otros dispositivos en la placa madre al deshabilitarlo.

He visto situacion (placas madre SuperMicro) que aunque deshabilitemos el puerto de raton en la
placa madre, no deja que ningun otro dispositivo "pille" la IRQ 12 (al menos dispositivos PnP). En
otras placas, al deshabilitar el puerto de ratn, vemos que inmediatamente es seleccionada por
algun dispositivo PnP.

Otra desventaja de este puerto, es que la IRQ que "pilla", es del tipo ISA. Es decir la pilla "en
exclusiva" y no puede ser compartida por otros dispositivos.

Como comentario personal, no entiendo el porqu apareci este dispositivo, maxime teniendo 2
puertos serie en un PC, y siendo el raton un dispositivo que *no* necesita "velocidad" en el puerto.
Entiendo que es una herencia arrastrada y que surgi en sus epocas unicamente por motivos de
marketing (de IBM).

PUERTOS USB

Bien, en un principio se apostaba por ellos como la conexion universal y el futuro de todos los
perifericos a conectar a un PC. Desde luego, este tipo de apuesta no va tan rapido como se
esperaba.

* La mayoria de las placas madre actuales, suelen llevar incorporados dos puertos USB. Si no fuese
as, podemos adquirir por un precio no excesivo, una placa PCI especifica que nos suministre los
dos puertos.

* Por tener USB, la bios le asigna una IRQ, pero en este caso, esta IRQ es del tipo PCI y se puede
compartir con el resto de dispositivos PCI que tengamos en el PC. Al igual que en el caso de puerto

29
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

de raton normalmente en la bios podemos "desactivar" el USB si no vamos a tener dispositivos de


este tipo. Si lo desactivasemos, se quedar libre para el sistema, pero en este caso no tiene mucho
sentido, ya que "no molesta" al ser una IRQ que es capaz de ser compartida.

* La velocidad de un bus USB son 12 megas (bastante aceptable comparado con los anteriores
"buses").

* Recordemos que un bus USB puede tener hasta 127 dispositivos. La pregunta del millon es si
solo tengo 2 puertos en el PC, como es posible conectar hasta 127 dispositivos?. Pues facil, desde
un puerto puedo conectar un HUB (como en las "redes", es decir una especie de distribuidor) que
tiene una entrada y "n" salidas. Y as se pueden conectar en "cascada" tantos HUB como queramos
hasta tener las 127 posibles salidas (incluidos en ellas los propios HUB).

** AVISO: Existi un problema de hardware con los primeros chip de bus USB fabricados por
Intel que no funcionan correctamente. Para ver si nuestro "chip" es bueno, debemos ir al
Administrador de Dispositivos, y abrir el dispositivo "Controlador serie universal USB" y debajo
de l veremos colgando un dispositvio del tipo "Intel XXXXX PCI to USB Universal Host
Controller" Pinchandolo, podremos ver en esa pantalla la "Revision de Hardware". Debe ser la 001
o superior. La version 000 no funciona e Intel aconseja que nos pongamos en contacto con el
fabricante de la placa madre y se la devolvamos (como si fuese tan facil!).

** IMPORTANTE: Normalmente los puertos USB, pueden dar un pequea cantidad de corriente a
los dispositivos. Existen dos "estandard": de 100 mA (miliAmperios) y de 500 mA. Windows
controla en funcion del dispositivo "colgado" su consumo, y si el consumo es superior al tipo de
puerto, desconecta el dispositivo.

Debe prestarse atencin, entonces, a ciertas camaras de video, las cuales toman "corriente" del
puerto. Las camaras de video son "devoradoras" de corriente, por lo que corremos peligro que
windows las desconecte.

Igualmente, conozco placas madre, que a pesar de montar el chip correcto de Intel capaz de dar
hasta 500 mA, fallan estrepitosamente al informar incorrectamente a windows del consumo de sus
perifericos. (problemas de la bios de la placa madre y que normalmente se corrige em alguna
revision de la bios)

*** Y con esto cerramos el capitulo (por ahora) dedicado al hardware y las inicializaciones que
efectua la bios sobre l en el momento en que "pulsamos el boton de encendido de nuestro PC".
Igualmente hemos visto las posibles parametrizaciones que podemos hacer del hardware a traves de
la bios.

A partir de ahora, vamos a entrar con el "software", es decir una vez que la bios a inicializado los
componentes hardware y empieza a construir ciertas tablas de interrupciones y parametros en la
memoria del PC, para a continuzacion "buscar" un disquete o un disco duro con el sistema
operativo y cargarlo en memoria.

PREPARACION DE LA CARGA DE UN SISTEMA OPERATIVO

Bien llegados a este punto, suponemos que la bios ya ha inicializado todos los dispositivos de la
maquina. Asignado las correspondientes IRQs y recursos a los dispositivos y ahora va a proceder a
cargar el sistema operativo.

30
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Lo mas normal es que intente su carga desde un disquete primero. Si esta carga falla, lo intenta
desde el primer disco duro.

Hay que matizar, antes de continuar, que esto es configurable en la bios de la maquina. Lo
comentado en el parrafo anterior es la opcion por defecto de casi todas las bios, y matizando
precisamente en esta opcion, mi consejo es precisamente desactivar el intento de carga desde
disquete en la bios. Casi todas las bios, permiten cambiar la sequencia de arrancada de A,C (es el
defecto) a C,A o bien C only. Las ventajas que tenemos con esto son:

1) Se iniciar la carga mas rapidamente ya que no ir a buscar a disquete.

2) No tenemos el riesgo de habernos dejado un disquete en la maquina con un virus del boot. Si lo
tuviesemos e intentase arrancar desde el disquete aunque no lo consiguiese, ya nos habra
infectado el disco duro.

Vamos a ver primero, precisamente la carga (el inicio de la carga) desde disco duro. Luego
veremos una variante de este metodo de carga, que coincide precisamente con el arranque estandard
desde un disquete. Para ver la carga desde disco duro, debemos conocer primero como est
logicamente particionado el disco.

PARTICIONES EN UN DISCO DURO

Bien, por definicion un disco duro permite hasta 4 particiones. No puede tener ms y la explicacion,
proviene del diseo del sector de boot del disco duro. Este sector de boot, se le llama tambien MBR
(Master Boot Record).

Dicho sector que ocupa siempre la misma posicion fisica en todos los discos duros (cabeza cero,
cilindro cero, sector 1), tiene un diseo fijo.

Todos los sistemas operativos tienen un FDISK o similar, que "sabe" crear en vacio este sector y
ademas lo hace automaticamente si el disco est nuevo (recien comprado). Todos los sistemas
operativos, lo crean exactamente igual.

Recordad que el tamao de un sector es unicamente 512 bytes.

La estructura de dicho sector, es un mini-programa y una pequea tabla de 4 elementos. Cada


elemento de la table, tiene los datos de cabeza, cilindro, sector de donde empieza una particon, de
donde termina, el tipo de particion (hay unos codigos para FAT 16, FAT 32, Linux, NTFS,
primaria, secundaria etc...), y una marca de cual es la particion "arrancable".

El mini-programa de este sector, lo unico que sabe hacer es leer dicha tabla, buscar si existe una
particion "arrancable" y si existiese, va a la posicion del cilindro, cabeza, sector de comienzo y all
carga en memoria el primer sector que encuentra y lo ejecuta. Este nuevo sector es precisamente el
"boot" de la particion (no confundirlo con el MBR, o sector 2 "boot" del disco que hemos citado
anteriormente). Este ultimo "boot", el responsable de crearlo es el "format". Y el responsable de la
creacion de las particiones es el FDISK (en sistemas Microsoft)

Entonces, retomando un poco el titulo de estos articulos, la bios lo que hace es cargar en memoria
el MBR del disco duro (en la direccion 7C00 hexadecimal) y cede el control a dicho programa. Este
se realoja en otra posicion de memoria, busca la particion "activa" o "rrancable" y carga en
memoria su sector de "boot", tambien en la direccion 7C00 y le cede control.

31
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Pero antes de continur con esto, merece la pena que echemos una mirada al sector de particiones o
MBR.

EL SECTOR DE PARTICIONES

El llamado sector de particiones es creado por FDISK en su primera llamada (con un disco recien
adquirido y sin preparar) o cuando ejecutamos el comando FDISK /MBR.

Es el primer sector del disco duro (cabeza 0, cilindro 0, sector 1). Este es el sector que siempre
arranca la BIOS primeramente antes de cargar ningun sistema operativo. La bios lo carga en la
poscion de memoria 0000:7C00 siempre que no encuentre un disquete en la unidad A:.

Si los dos ultimos bytes de los 512 de este sector contienen el codigo 55h,AAh (hexadecimal)
considera este sector como ejecutable y comienza la ejecucion de programa en el primer byte de
ester sector una vez se ha cargado en la posicion de memoria anterior.

El codigo de programa que hay en este sector de arranque, tiene como tarea el reconocer la
particion "activa" y con ello, el sistema operativo a ejecutar, cargar su sector de arranque y
comenzar la ejecucion del codigo de programa que all est contenido. Ya que este codigo de
programa, por definicion, se ha de encontrar en la posicion de memoria 0000:7C00, el codigo de
particion, primeramente, se desplaza a la posicion de memoria 0000:0600 y con ello deja espacio
para el sector de arranque.

Direccion Contenido Tipo

+000h Codigo de la particion Codigo

+1BEh 1 entrada en la tabla de particiones 16 Bytes

+1CEh 2 entrada......... 16 Bytes

+1DEh 3 entrada......... 16 Bytes

+1EEh 4 entrada......... 16 Bytes

+1FEh Identificacion AA55h 2 Bytes

Longitud= 200h = 512 Bytes.

Veamos cada entrad de 16 Bytes que define una particion, que es lo que contiene:

Direccion Contenido Tipo

+00h Estado de la particion 1 BYTE

00h = Inactiva

80h = Particion de arranque

+01h Cabeza de lectura/escritura 1 BYTE

donde comienza la particion.

32
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

+02h Sector y Cilindro donde comienza 2 BYTES

la particion (formato WORD - palabra)

+04h Tipo de particion 1 BYTE

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

+05h Cabeza de lectura/escritura 1 BYTE

donde termina la particion.

+06h Sector y cilindor donde 2 BYTES

termina la particion.

+08h Distancia del primer sector de la 4 BYTES

particion (Sector de arranque)

+0Ch Numero de sectres de esta particion 4 BYTES

Longitud = 10h = 16 Bytes

Luego las funciones del programa de boot (MBR) del disco duro son:

1) Localizar el sector de arranque de la particion activa, para esto se recorre las 4 entradas de las 4
posibles particiones para ver cual es la activa.

2) Posicionar la cabeza de lectura escritura en dicha particion.

3) Volver a cargar los 512 primeros bytes de esa particion en memoria y ceder el control (este es el
verdadero sector de arranque del sistema operativo. En el caso de MSDOS o WINDOWS, es
creado al dar un FORMAT a la particion)

PARTICIONES. SU SIGNIFICADO Y SU CREACION

33
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Una particion, no es ni mas ni menos que reservar un "trozo" (o todo) del disco para contener un
sistema operativo o datos.

La manera de crear / borrar paticiones bajo MsDOS (o en los sistemas operativos de microsoft), es
mediante el comando FDISK.

* La primera pregunta que nos realiza FDISK es si queremos soporte para grandes particiones (por
defecto viene activada la letra "S" en windwos 98).

Esta pregunta a lo que realmente se refiere, es que si decimos "S", la particion que vamos a crear en
ese momento, ser FAT 32. Si decimon que "N", la particion a crear ser FAT 16.

Al contrario de lo que cree mucha gente, no es en el FORMAT en donde se le dice en tipo de FAT,
sino justo en el momento de crear la particion.

Antes de continuar con las particiones, vemos que hemos introducido un concepto: FAT 16 y FAT
32. Vamos a hablar un poco de ellas.

FAT 16 y FAT 32

Bien, imaginemos que ya tenemos un "pedazo" de disco. Imaginemos ahora que queremos guardar
all archivos. de que manera "fisicamente" puede hacerse, para ser capaces de almacenarlos y
recuperarlos rapidamente?.

Se admiten ideas......

Bueno, los primeros programadores del MsDOS, de los cuales heredamos el actual windows,
tuvieron que "disear" un sistema de archivos... El diseo, quiz no sea el mejor (seguro que no),
pero funciona y por suerte o por desgracia lo hemos heredado. Pensemos un poco.... como lo
disearon? Pues mas o menos razonando de la siguiente manera:

1) Evidentemente la manera mas rapida de acceder a un archivo, siempre es si tenemos un "indice"


a donde est ese archivo.

2) S tenemos un "indice", debemos guardarlo siempre en el mismo sitio para que el sistema lo
busque rapidamente.

3) Ademas, de alguna manera, deberemos ser capaces de buscar rapidamente sitios no utilizados
en el disco para poder grabar un archivo nuevo.

4) Lo mejor sera tener numerados todos los "pedacitos" del disco. Sabemos "por diseo" que la
minima cantidad que entiende un controlador de disco son 512 bytes. Es decir se grabar de 512
en 512.

5) Pero 512 es poco. por qu no agrupamos pequeos grupos de 512 bytes?.Correcto. Pues
tenemos que dar un nombre a esta "agrupacion". Y se decidi darle en nombre de "cluster". Ya
veremos cual es el tamao mejor.

6) Ahora bien, si tenemos "cluster". no sera mejor tenermos en un indice tambein al inicio del
disco para saber si est libre o ocupado?. Vale, pues parece correcto. Pero como esto es
delicado por si acaso, vamos a tener 2. El original y otra copia de l.

34
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

7) Bueno ya tenemos un indice para tener los archivos. Vamos a llamarle "Directorio principal".
Tambien tenemos unos pequeos indices o tablas que nos indican si un "cluster" est libre o
ocupado. Vamos a llamarle FAT (File Allocation Table, o "tabla de asignacion de archivos").

8) Y como podemos ahora guardar un archivo. A ver que nos hace falta saber de un archivo?.
Pues, "Su nombre", "la fecha de creacion", "la fecha de modificacion", en que "cluster"
comienza, su tamao en "bytes", y de paso, vamos a ponerle tammbien "atributos". Del tipo
"rchivo", "Oculto", "Sistema", "Solo lectura".... Bueno, pues todas estas caracteristicas comunes
las guardamos en el "directorio".

9) Y ahora su contenido. Hemos dicho que en el directorio est el numero del "cluster" en donde
comienza el archivo. Como lo hemos buscado?... Bien hemos hablado de la FAT. La FAT en
principio podra ser simplemente un bite por cada cluster del disco, al inicio del proio disco, que
nos dijese 1 o 0 para saber si est libre o ocupado. Pero que tal si utilizamos esto para algo
ms?. Vamos a utilizarlo.

10) y si cada "entrada" en la FAT, en vez de ser de 1 bite, con contenido uno o cero, lo definimos
de "n" bites de tal manera que tengan un cero si est libre. Pero si est ocupada, que su
contenido sea distinto de cero pero puede ser perfectamente el numero del siguiente cluster que
utiliza el fichero, en el caso de utilizar mas de un cluster. Y ademas, si es el "ultimo" cluster del
fichero, pues podemos ponerle una marca. Por ejemplo todo a "unos" binarios.

11) Parece que encaja. Entonces para grabar un archivo nuevo, primero buscamos un hueco en el
directorio. All grabamos su nombre y sus datos de fecha, atributos, tamao, etc. Ahora vamos a
la FAT. La recorremos buscando una posicion que tenga "ceros". Esto nos indica que ese
cluster del disco estar vacio o se puede utilizar. Pues nos guardamos dicho numero en el
directorio, y asignamos todos a unos binarios en esa posicion de la FAT. Igualmente guardamos
en el cluster fisico del disco el primer pedacito de nuestro archivo. Ahora miramos si el archivo
ocupa mas tamao de un cluster. Si es as, continuamos recorriendonos la FAT para buscar el
siguiente "hueco" a ceros. Cuando lo encontremos, en la posicion ANTERIOR que habiamos
grabados unos binarios, le ponemos la direccion de este nuevo "hueco" y a este hueco le
llenamos con unos binarios (y grabamos en ese cluster, el segundo pedacito de nuestro archivo).
Y as continuamos hasta el final del archivo.

12) que estamos haciendo con lo anterior?. Facil: crearnos una "lista" de apuntadores al disco.
Supongamos, que el tamao del cluster es 4 Kbs. Supongamos que cada entrada en la FAT es
de 16 bites y recordad que el numero maximo en binario que puede tener con 16 bites es 2
elevado a 16, es decir, desde cero a 65535. Con la suposicion anterior, vamos a ver como
guardariamos un archivo de 7150 bytes.

12.1) Primero se busca un hueco en el directorio. Una vez encontrado recorremos la FAT de 2 bytes
en 2 bytes (16 bites = 2 bytes). Imaginemos que encontramos "cero" en la posicion 124 desde el
inicio de la FAT. Como vamos de 2 en 2 bytes, indica que el "cluster" numero 64 del disco est
libre.

12.2) Entonces guardamos el numero 64 en el directorio. Grabamos unos binarios en esa posicion
de la FAT, y en el cluster 64 real del disco grabamos los 4 primeros Kbs del archivo.

12.3) Como el archivo tenia 7150 bytes y hemos guardado 4 Kbs, quiere decir que para guardar el
resto, debemos guardar otro pedacito de 4 Kbs. Entonces, realizamos la secuencia definida en 12.1)

35
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

es decir buscamos el siguiente hueco, Por ejemplo el 250 (esto indica el cluster 125). Guardmos el
numero 125 en la posicion anterior de la FAT en donde habiamos guardado unos binarios, ponemos
unos binarios en la posicion actual y guardamos otros 4 Kbs, en el cluster real 125 del disco.

12.4) Si nos fijamos, ha quedado la lista: 64->125->unos binarios (o marca de fin). Y ademas
hemos "utilizado" 8 Kbs fisicos del disco, cuando querimos guardar unicamente 7150. Por tanto se
deperdicia un espacio. Logicamente a mayor tamao del cluster, mas espacio podriamos perder.....

13) Pues lo que acabo de describir es el funcionamiento de la FAT 16. Se le llama 16 porque utiliza
16 bites para cada "apuntador".

Realmente en el proceso anterior que hemos supuesto que el tamao del cluster era 5 Kbs, esto no
es verdad. como calcula el sistema operativo cual va a ser el tamao del cluster?.

Bien, tal y como definimos antes, sabemos que solo podemos tener hasta 65536 pedacitos. Ademas
sabemos el tamao total de la particion. Pues el sistema divide el tamao en Kbs entre 65536. El
resultado lo redondeamos hacia arriba a un numero que se multiplo de una potencia de dos. O sea a
2, 4 , 6, 16, 32.... y el numero que nos salga es el tamao del cluster.

Se consider que para no perder mucho espacio, se debria limitar el tamao maximo del cluster. Y
se defini as que el tamao maximo del cluster debia ser 32 Kbs. Por tanto 32 Kb * 65535
maximos posibles cluster, nos d la cantidad de 2 Gigas maximo. Por tanto la particion maxima que
podemos tener en FAT 16, est limitada a 2 Gb.

Y ahora la FAT 32. Simplemente y debido a la limitacion anterior, se ampli el tamao de fat a 32
bites (o 4 bytes). Con esto el numero maximo que cabe, ya no es 65535, sino 4.294.967.295 y como
el tamao maximo de cluster se define aqu en: 16 Kbs, entonces el tamao maximo del disco sera:
68.719.476.736 es decir 68000 Gigas (o lo que es lo mismo 68 Teras).

CONSEJOS UTILES (Y NECESARIOS)

* Recordad que tal y como hemos comentado antes, un disco soporta 4 particiones maximo.

Como consejo, se debe seguir esta secuencia (IMPORTANTE):

1) Arrancar con la tecla CTRL pulsada y seelccionar "Solo Simbolo del Sistema), o bien arrancar
con el disco de inicio de win98. Es decir en modo MsDOS "puro".

2) Crear o borrar una particion con FDISK

3) Inmediatamente despues, salir y reiniciar el ordenador (boton de reset).

Aunque parezca una tonteria, es importante. Sinoi lo hacemos as puede que la particion no sea
creada correctamente.

TIPOS DE PARTICION

Habiamos hablado de dos posibles tipos de particion: Promaria y Extendida (o secundaria). Es


simplemente un "marca". Pero una marca muy importante, ya que el sistema operativo lo va a hacer
caso.

36
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

En el caso de los sistemas operativos de Microsoft, unicamente nos deja crear una particion
primaria y una particion "extendida".

El disco de arranque (el C:) del sistema operativo, debe tener obligatoriamente una particion
primaria. El propio FDISK, al ser la particion primaria del C:, la deja igualmente marcada como
"arrancable".

Ademas, estos sistemas operativos, permiten a su vez, el volver a partir la partcion extendidad en
otros pedacitos.

Por cada "pedazo", el sistema le asignar una letra de disco. cual?. Bien esto es IMPORTANTE, si
tenemos mas de un disco. El sistema se recorre todos los discos buscando particiones primarias en
TODOS (repito). En este primer proceso ignora las extendidas. Por cada particion primaria que se
encuentra, le asigna una letra consecutiva de disco. C:, D:, etc....

Cuando se ha recorrido TODOS los discos, ahora empueza a busczar particiones extendidas,
empezando otra vez desde el primer disco. Cuando las encuentra, continua asignando letras a todas
las "subparticiones" dentro de cada particion extendida que se encuentre.

** Para que nos puede ser util lo anterior?. Facil. Imaginemos que tenemos 2 discos. Ademas que
al primer disco le queremos tener "partido" en dos, y ademas queremos "entero" el segundo disco.

Y ademas, queremos que el primer disco fisico, tenga las letras C: y D:, y el segundo la E:

Pues bien, si creamos en el primer disco una particion primaria y una extendida, y ahora en el
segundo creasemos una primaria, lo anterior no podra ser, ya que por los razonamientos anteriores,
se recorre primero todas las particiones primarias. Por tanto a la del primer disco, le dara la C:,
ahora va al segundo disco. Como tiene una primaria, le dara la D:, y ahora empieza con las
secundarias, y por tanto a la particion extendida del primer disco, le daria la E:. Esto no es lo que
queriamos.

Repetir el ejercicio anterior, suponiendo que en el segundo disco, la particion (unica) creada, en vez
de primaria es secundaria. Vereis como "sale" lo que queriamos hacer.

FDISK

* La primera pregunta, a "compatibilidad para discos grandes", realmente est camuflada. Lo unico
que nos quiere decir, es que lo que vayamos a crear en dicha sesion, como lo queremos: FAT 16 o
FAT 32. Si decimos que "S" a esa pregunta, la partcion que creamos en ese momento ser FAT 32.
Si decimos que "N", ser FAT 16.

* Recordar que SIEMPRE, una vez creada una particion, hay que salirse de FDISK y reiniciar el
ordenar. SIEMPRE (insisto). Basicamente continene 5 funciones.

1. Crear una particion o una unidad logica de DOS

2. Establecer la particion activa

3. Eliminar una particion o unidad logica del DOS

4. Mostrar informacion sobre la particion

37
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

5. Cambiar la unidad actual del disco duro

Antes de hacer nada, debemos saber que nada mas arrancar el FDISk, este est "apuntando" a
nuestro primer disco fisico. Si queremos operar sobre otro disco, lo primero sera cambias la unidad
de disco (opcion 5). Cuidado con esto, ya que por error podriamosm por ejemplo, borrar una
particion de un disco, creyendo que estamos en otro disco..... y si hacemos esto, *no* hay marcha
atrs.

* La opcion numero 1). nos permite crear una particion primaria, una extendida o bien "dentro" de
la extendida, crear unidades logicas (es decir realmente crear "subparticiones" de dicha extendida
como si esta fuese un nuevo disco.

Las particiones primarias, tienen una marca que le indica al sistema si es "activa" (arrancable).
Evidentemente la particion primaria correspondiente a nuestro primer disco fisico, debe estar
"activa" (opcion 2). En principio, esto no debe preocuparnos, ya que el propio FDISK, al crear la
primera particion del primer disco, siempre la pone la marca de "activa". De todas maneras, saber
que existe dicha opcion, por si acaso en algun momento nuestro sistema no arranca. La opcion 2),
solo pone la "marca". No es "destructiva", es decir, no hay perdida de datos.

* La opcion 3) corresponde a borrar una particion. O bien borrar unidades logicas dentro de una
particion extendida (sub-partiones). Mi consejo es siempre el mismo. Si borramos y deseamos crear
una nueva, lo primero, borrar y debemos salir y reiniciar la maquina, luego volver a entrar y crear la
particion que queriamos.

NOTA: (para quien tenga ademas dispositivos SCSI). Recordar que le FDISK unicamente las
unidades a las cuales la bios les ha asignado la INT 13 de acceso a disco. Las bios (todas) por
diseo, unicamente asignan dicha interrupcion a los 8 primeros discos que se encuentran. Por tanto,
el FDISK est limitado a esos 8 primeros discos ("discos" fisicos). Esto no causa Problemas a uien
tenga unicamente unidades IDE, ya que estas estan limitadas a 4 posibles discos. Bien en el caso de
tener mas de 8 discos fisicos, para "particionarlos" con FDISK, se hace necesario "quitar" alguno
para que el nuevo disco entre en los limites de los 8 anteriores. Particionarlo, y luego volver a poner
las unidades quitadas. Otra solucion sera utilizar herramientas de terceros para particionarlos.
(normalmente las utilidades que nos sumnistran con las tarjetas SCSI, suelen tener un software de
este tipo, debido a que son conscientes de esta problematica).

* Conocemos ya un poco de FAT 16 y FAT 32, y ademas hemos visto las particiones y como
crearlas. Ahora que analizar un poco cual es la mejor de dichas opciones. Existe mucha discusion
sobre el tema y entiendo que es debida a una mala informacion (o desinformacion) por parte de
Microsoft al anunciar la FAT 32. Los programas por ejemplo, de instalacion de windows 98, nos
dicen que nuestro sistema ir un 33% mejor. Esta frase es totalmente incorrecta. La frase "real"
debera ser: "puede ahorar hasta un 33% de espacio en disco, penalizandose (ligeramente,
dependiendo del sistema) los tiempos de acceso a disco". Vamos a ver esto ultimo con detalle.

FAT 16 y FAT 32: VENTAJAS E INCONVENIENTES

* A astas alturas supongo que tenemos "asimilado" un poco los capitulos anteriores. Es necesario el
haberlo intentado al menos (s que me explico muy mal, y menos sin una "pizarra" para dibujar,
pero al menos se debe intentar comprender.....). Por tanto empezemos a "pensar" un poquito:

38
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

1) La FAT es importantisima. Se utiliza para todo. Es el "indice" de cmo estn los archivos en el
disco duro. Tanto para leer un archivo o para grabarlo, se hace necesario "varios" accesos a la
FAT.

2) Y ademas es peligrosa, ya que si se daa perderemos informacion.

3) Por tanto el sistema operativo "intenta" tenerla en memoria siempre para ahorrar accesos a
disco (debido al punto 1). Y ademas una vez que se "actulice" por la grabacion de un archivo,
intenta escribirla inmediatamente a disco (debido al punto 2).

** El punto 3) nos implica varias cosas. Pensemos un poco que tamao real tiene la FAT?.
Recordemos que la FAT 16 tiene un maximo de 65535 entradas cada una de 16 bites (2 bytes). Es
decir, tiene un tamao maximo de 128 Kbs. Como existen 2 FAT por seguridad, es un tamao
maximo de 256 Kbs. Totalmente aceptable para tenerlo en memoria y actualizarla a disco en el
momento en que es actualizada en memoria.

Pero y en FAT 32?... pues muy mal: un disco tipico de 3,2 Gb, tiene 800.000 entradas en la FAT
(en FAT 32). Y como es FAT 32, son 32 bites (4 Bytes). Es decir en total 3,2 Megas y por dos
copias de la FAT son: 6,4 megas que el sistema intenta tener en memoria para no penalizar los
accesos. Y ademas si actualizamos un fichero, intenta escribirla inmediatamente en disco.

** CONCLUSION:

A) PENALIZACION

1) Se utiliza bastante mas memoria real para FAT 32 que va en detrimento de la memoria
"ejecutiva" de programas.

2) Se utiliza mas CPU en la busqueda en memoria de las entradas en la FAT (es dirente recorrese
"muchas" veces una tablita de 65000 elementos maximo, que una tabla de casi un millon de
elementos (al menos y dependiendo de que disco tengamos)

3) Se penaliza cada actualizacion de un archivo ya que hay que reescribir todo o parte de la FAT
en disco. Y la FAT 32, es "bastante" mas grande.

4) El disco C: no puede ser FAT 32, si deseasemos instalar ademas un sistema operativo diferente
de win98. Por ejemplo NT 4 obliga a que el disco de "boot" del sistema sea FAT 16,
independientemente de donde instalemos el NT (es decir independientemente de si la particion
real de instalacion es FAT 16 o NTFS).

B) VENTAJAS

1) Se puede superar el limite de 2 Gb por particion.

2) Como el tamao de "cluster" es menor, "ahorramos" una cantidad de espacio en disco, que en
este caso, y en un disco tipico de 2 Gb, s que puede llegar al famos 33% anunciado por
Microsoft. (depende del numero de archivos este ahorro de espacio).

** Las medidas tipicas de penalizacion en un disco, FAT 32 frente a FAT 16 con una CPU PII 400,
on aproximadamente del 7% de perdida de rendimiento en FAT 32.

39
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

NOTA: Existe una manera de "ver" cuanto espacio tenemos "perdido" en el disco por culpa de los
"cluster" de gran tamao. Es sencilla:

a) Abrimos una ventana msdos

b) tecleamos: dir \*.* /s/v

Esperamos a que finalice, y nos mostrar los bytes utilizados por los archivos y los bytes
"asignados" a esos archivos. La diferencia de tamao es el espacio "perdido" que "casi, casi",
podremos recuperarlo con una FAT 32.

**** Es interesante, ahora que hemos introducido un poco la FAT, particiones y discos, retomar
"Desde que pulsamos el boton de nuestro PC...." en el punto en que la bios habia finalizado el
reconocimiento, asignacion de IRQs, e inicializacion del hardware. Hemos introducido tambien,
que la siguiente tarea era "cargar" el MBR del disco, que realmente es un mini-programa, y le haba
cedido el control a dicho programa.

Pero es importante saber, que hace la propia bios, inmediatamente antes de iniciar dicha carga.
Como ha preparado la memoria real (por debajo del mega, ya que los sistema intel, arrancar
siempre en modo real tal y como vimos anteriormente), para que el sistema operativo, el que sea,
sea capaz de comenzar a hacer algo......

LA BIOS. PREPARACION DE LA MEMORIA REAL PARA INICAR UN O.S.

(esto hay que leerlo despacio... tiene su "miga", y si veis que es un poco lioso, la culpa es
unicamente mia. Es un tema dificil de explicar, y tampoco es imprescindible para continuar con
estos capitulos. Pero por "culturilla" lo cuento aqu).

* Bien, la bios ademas de la inicializacion del hardware, se encarga de crear una serie de estructuras
en memoria y deja ademas en ella, las rutinas "minimas" para escribir en pantalla, manejar el
teclado y acceder a disco.

Mas adelante veremos por ejemplo, que "cisco" se tiene que montar, solo para pulsar la letra "A" y
que esta aparezca en pantalla.....

Aunque el procesador en modo real y en MsDOS no es multitarea, si pensamos un poco en la que


est haciendo, si que "parece" que est hacindo multitarea. Pensar que mientras estamos tecleando
algo, no solo lo muestra por pantalla, sino que a la vez, por ejemplo, est actualizando el "reloj" del
sistema.... este es el ejemplo ms sencillo. Un ejemplo que realmente sorprendi a todo el mundo
de la programacin, fu en los primeros aos del MsDOS, cuando Microsoft sac un programa
residente "print". Recordad que en esa epoc ademas, las impresoras iban muy lentas.... pero
maravillosamente con el comando print empezaba a imprimir un archivo, y dejaba "libre" la
pantalla el teclado, con lo cual podiamos seguir haciendo cosas. Y la impresora mientras tanto, iba
sacando hojas.....

Esta tontera que ahora no nos llama en absoluto la atencin, caus furor en el mundo de la
programacion. Inmediatamente a "destripar" el programa para ver dos cosas:

1) Como se creaban los residentes en MsDOS (no estaba "documentado")

2) Como hacer o "simular" una multitarea.

40
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Ahora cualquier programador, sus primeros "pinitos" es construir residentes.

No tiene ningun merito. Est ya perfectamente documentado.

* Pero la pregunta es como podemos hacerlo?.

Relativamente facil. A base de manejar interrupciones (interrupciones de "software", no de


hardware como las que vimos al principio de estos capitulos. Ms adelante veremos estas
interrupciones). Me explico: por definicion, una interrupcion, "interrumpe" el programa que se est
ejecutando y cede control a una rutina. En principio la que queramos.

Entonces, sabemos que hay interrupciones cada cierto tiempo. Por ejemplo existe una interrupcion
que se activa 11 veces por segundo y que se encarga de mantener el reloj de nuestro PC.

Si fuesemos capaz de que esa rutina de actualizcion del reloj, "ademas" de eso, por ejmplo, enviase
una linea a la impresora.... pues ya tendriamos activo el "print". Genial idea.

Este es el concepto basico de multitarea: reparto de tiempos de una CPU entre varias tareas. Y la
idea, para su epoca, no estuvo mal....

Pasemos ahora a ver las interrupciones "software".

INTERRUPCIONES SOFTWARE

En el diseo del primer procesador Intel de la serie X86 (de los cuales derivan por compatibilidad
los Pentium actuales), se pens en implementar por hardware dentro del procesador de una serie de
interrupciones "software", que cada vez que se activasen se cediese el control a cierta rutina.

En dicho diseo, se definieron 256 posibles interrupciones. Y ademas la intruccion maquina INT
para provocar una interrupcion. Por deficion, entonces se reserv el area de memoria mas "baja" de
la maquina, es decir desde la direccion "cero" para contener las direcciones de esas 256 posibles
rutinas (o programas que son llamados) de interrupcion.

Para el mundo "real" del procesador, una direccion de memoria es un "segmento" y un


"desplazamiento". Es decir 4 bytes. Por tanto 256 * 4 = 1024. Es decir de la direccion 0 a la 1024
"fisica" de la memoria de nuestro PC, se reserva para tener 256 posibles direcciones de las rutinas
de dichas interrupciones.

La manera de invocarlas por software en INT 21h (por ejemplo). Esto hace que el procesador salte
a la direccion 21h * 4 y all se encontrar a su vez con la direccion que apunta a la rutina que d el
"servicio" a la INT 21h.

Evidentemente no todas las posibles 256 interrupciones estn ocupadas. No son necesarias tantas.
Por tanto, las no ocupadas apuntan a una instruccin IRET (volver desde interrupcion). Es decir: no
hacen nada. Pero est la posibilidad de que nosotros, en nuestro programa, "colguemos" en vez del
IRET, una rutina nuestra que haga lo que queramos....

Bin, ppues lo que la bios hace, es "disparar" unas interrupciones "software" cada vez que sucede
una interrupcion "hardware". Recordar que habia 16 IRQs (del la 0 a la 15).

41
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

La bios, lo que hace, es que cada vez que suceda una IRQ 0 a 7, dispara una interrupcion 50 a 57h
"software". Igualmente las IRQs 8 a 15, disparan de la 70 a la 77h.

Por tanto esas interrupciones software, debern contener la "direccion" del programa o driver que
va a manejar dicha IRQ.

* Veamoslo con un ejemplo real. Recordad que habios dicho al ver las IRQs que la IRQ 1 era la de
teclado. Entonces que sucede al pulsar una tecla?.

Bien lo primero que sucede es una IRQ 1. Esto interrumpe lo que est haciendo el procesador y tal
y como acabamos de comentar, esto disparar la interrupcion software 51h. Esta interrupcion
software, entonces lo que provoca es que el procesador, busque en la direccion de memoria 51h * 4,
y pega un salto a la zona de memoria que est apuntada por el contenido de esa direccion. Se
supone que en esa zona de memoria "debe" haber un programa, o una rutina que se encarga de
analizar la tecla pulsada y ademas de "sacarla en pantalla". Efectivamente, esa rutina existe, y es la
propia bios quien la ha puesto all.

Realmente el tema es un poco mas complicado. La INT 51h lo que hace a su vez, es invocar a la
INT 09h. (tambien software). Esta, mediante los comandos IN vistos anteriormente, lee del puerto
de teclado. All puede saber la tecla pulsada y no solo eso, sino admeas si tenemos a la vez pulsada
otra tecla (MAY, CTRL, ALT), y ademas si en ese momento se est pulsando o "soltando" la tecla.
Es decir realmente al pulsar una tecla, suceden 2 interrupciones una en le momento de pulsarla y
otra en el momento de soltarla -y otra ms por cada ciclo de tiempo que la tenemos pulsada-.

Una vez analizada la tecla pulsada, hay que sacarla en pantalla. Bien, el "servicio" de video, lo ha
definido tambien la bios, en la interrupcion 10 h. Por tanto, la INT 09h lo que hace una vez
analizada la tecla pulsada en cuando tengamos disponible ya el caracter, se emite una INT 16h que
a su se emite una INT 10h.

Y todavia es mas complicado. Si pulsamos un CTRl-G d un "pitido" el altavoz. Por lo tanto


ademas, debe analizar dicha rutina, si es algun caracter especial como el anterior. Si lo fuese, ahora
se deben emitir las correspondiente interrupciones tambien software para "activar" el altavoz.

Esta activacion, ser tambien mediante comandos IN y OUT a unos puertos que son los
correspondientes al "timer" para generar una onda de sonido hacia el altavoz del PC.

*** Todos un verdadero lio no?.

Bien, el encargado de situar estas rutinas "basicas" y de generar la tabla de interrupciones es la bios.

Ademas, pensemos que lo hace "casi" instantanemanente nada mas encender el PC. Si no lo
hiciese, no podriamos ni "ver" las letras en la pantalla. De echo, hasta que no ha definido la INT
10h de video, no podemos ver nada en pantalla. Y hasta uqe no estn activas la INT 09 y 16h, no se
podr pulsar el teclado.

Y vemos que eto ultimo es casi instantaneo!!!!.

Buen cisco se monta la bios nada mas encender nuestro PC, no?

RESTO DE RUTINAS EN MEMORIA REAL

42
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Al igual que define los accesos a pantalla y teclado, la bios nos d soporte "minimo" para acceso a
disco. INT 13h, etc....

Cuando se emite una interrupcion, se le pasan parametros (contenidos) en los registro generales del
procesador. Por tanto cada INT, por decirlo de alguna manera, admite "parametros" o ordenes
especificas de que hacer. Por ejemplo, la de acceso a disco, espera, en un regustro general, si es en
escritura o en lectura. Y en otros registros generales, el numero del cilindro, la cabeza y el sector
que queremos leer. Y por supuesto, la direccion de memoria en donde queremos que nos deje el
dato. Y ciuantos "bytes" hay que "traer" del disco.

Lo importante en esta parte, que acabamos de ver, es que aunque "todavia" no se ha cargado nada
del sistema operativo, la bios, ya ha sido capaz de deajrnos perfectamente preparado nuestro
hardware y nuestra memoria con las rutinas basicas para empezar a hacer algo.

Y ahora viene ese "algo". Hay que empezar a cargar el sistema operativo.

Empieza la busqueda......

CARGA DEL SISTEMA OPERATIVO

La bios ha terminado sus tareas y ahora decide cargar el sistema operativo.

Empieza la busqueda por las unidades de busqueda que tenga definidas en los parametros de la
bios. Por defecto, suele ser A,C. Es decir, intenta cargar desde disquete y si no puede lo hace desde
el disco C:.

Para ello, lee el primer sector fisico del disco: cilintro 0 cabeza 0 sector 1. Lo carga en memoria y
le cede control para su ejecucion.

Vamos a imaginar que el sistema que queremos cargar, es el windows 98. Bien, windows 98
comienza su carga desde un MsDOS, por tanto lo primero que se cargara sera un MsDOS. O bien,
tambien podemos cargar un MsDOS desde el disco de inicio de win98, o desde un disquete
formateado con el parametro /S (es decir, contiene el "sistema").

ARRANQUE DESDE DISQUETE

Supongamos ahora que la carga es desde disquete. El sector de boot del disquete (el cual es creado
con el format), contiene (si ha sido formateado con el sistema - parametro /S -), un mini programa
que lo unico que sabe hacer es buscar un archivo oculto en esa unidad de disco, llamado "IO.SYS",
cargarlo en memoria y cederle control.

* EL IO.SYS inicia la carga y ejecucion. Lo primero que busca es otro archivo oculto en la misma
unidad llamado MSDOS.SYS. Este archivo no es un archivo de ejecucion, sino un archivo de
parametros del sistema que en cualquier momento podemos ver (no es aconsejable tocarlo), con un
editor.

Mas adelante veremos el posible contenido de este archivo.

* A continuacion, el IO.SYS, busca en el directorio raiz de esa unidad, un archivo llamado


CONFIG.SYS. S el archivo existe, lo lee y ejecuta las instrucciones que lleva dicho archivo.

43
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Basicamente el config.sys, lo que puede contener son parametros del propio sistema y sobre todo,
carga de drivers de dispositivo. No es obligatorio que exista. Solo si lo encuentra lo ejecuta.

*A continuacion, el IO.SYS, busca el COMMAND.COM. Es decir al interprete de comandos. No


es obligatorio (pero s lo mas usual), que el command.com sea el interprete de comandos. En el
archivo config.sys que acaba de ejecutar previamente el IO.SYS, podria haberse cambiado este
interprete, y decirle al sistema que utilice otro.

* Supongamos que es el COMMAND. entonces lo carga en memoria y le cede control para su


ejecucion.

* El COMMAND, busca a su vez la existencia de un archivo llamado AUTOEXEC.BAT tambien


en el directorio raiz de la unidad de arranque y lo lee para ejecutar los comandos que all existan.
Dichos comandos, serian basicamente programas (no pueden ser ya drivers de dispositivos) y algun
parmetro de configuracion (como el PATH por ejemplo) propio del interprete de comandos. Al
igual que el CONFIG.SYS no era obligatorio, el AUTOEXEC.BAT tampoco lo es.

NOTA: debido a que en Espaa o en otros paises distintos de USA, se utilizan tablas de codigos
especiales (para los caracteres especiales, por ejemplo los acentos, la "", o caracteristicas
regionales) y teclados de acuerdo con el idioma, es obligado en este caso el tener CONFIG.SYS y
AUTOEXEC.BAT con las "pocas" lineas de comando que definen tanto las tablas de codigos como
el teclado. Esto sera lo unico obligatorio. Todo el resto sobra y son herencias del antiguo MsDOS.
Por tanto mi consejo, es no andar tocando estas cosas. Es muy facil, que windows pierda
prestaciones por haber incorporado lineas indebidas en estos archivos. Incluso todavia, hay "viejos"
programas instaladores, que tocan estos archivos y lo unico que hacen es daar nuestra
configuracion de windows.

** Bien, si hemos arrancado desde disquete, esta habr sido la secuencia de arranque, y el sistema
se nos queda en este punto.

ARRANQUE DESDE DISCO DURO

El arranque desde disco duro es ligeramente diferente. Lo primero, al igual que en el disquete,
carga el primer sector del disco duro (cilindro 0, cabeza 0, sector 1). Pero en este caso, tal y como
debemos recordar de capitulos anteriores, este sector en un disco duro es el MBR (Master Boot
Record).

Como tambien es un miniprograma, se carga en memoria y comienza su ejecucion. Pero este


miniprograma lo unico que sabe hacer, es localizar la particion activa del disco duro (la primaria y
"activa"). Una vez que la localiza, es como si ahora estuviesemos en la secuencia de arranque desde
disquete que acabamos de ver.

Es decir, carga otra vez, el "primer" sector de esa particion, que al igual que el primer sector de un
disquete, contiene un miniprograma que ha sido generado con el format /S, que es "identico" al que
tiene un disquete. Por tanto, inicia la carga del IO.SYS, y la misma secuencia de carga que la
definida anteriormente.

** Es necesario, recordar de nuevo: en un disco duro, hay dos sectores de boot. Uno el MBR que ha
sido creado con FDISK, y otro el "boot" de la particion, que ha sido creado con el FORMAT.
Ambos son necesarios para el inicio del sistema operativo.

44
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

* Vamos a ver a continuacion, por parametros de configuracion en los tres posibles archivos de los
que hemos hablado. MSDOS.SYS, CONFIG.SYS y AUTOEXEC.BAT. Pero unicamente vamos a
ver en este momento los parametros de configuracion. No los posibles drivers (config) o programas
(autoexec) que pueden ser ejecutados o cargados desde all.

PARAMETROS DE CONFIGURACION - MSDOS.SYS

** Contiene dos secciones diferenciadas.

La seccion [Paths] puede contener las siguientes opciones:

HostWinBootDrv=<Disco en donde esta instalado windows>

Defecto: C

Proposito: Especifica la localizacion de en que disco est instalado windows.

UninstallDir=<Disco de "desistalacion">

Defecto: C

Proposito: Especifica la localizacion de los archivos W95undo.dat and W95undo.ini. Son los
ficheros necesarios para desistalar windows cuando se ha seleccionado la opcion de parmitir
desistalar en caso de una actualizacion.

WinBootDir=<Directorio de windows>

Defecto: Directorio donde reside windows (por ejemplo, C:\WINDOWS)

Proposito: Indicar al cargador del sistema desde donde debe inicarse windows.

WinDir=<Directorio de windows>

Defecto: Directorio especificado en la instalacion (por ejemplo, C:\WINDOWS)

Proposito: Localizacion del directorio de windows especificado durante la instalacion.

La seccion [Options] puede contener las siguientes opciones, o bien pueden ser insertadas
manualmente.

NOTA: El valor "booleano" que aparece a continuacion, indicar un "0" para NO y un "1" para SI.

AutoScan=<Numero>

Defecto: 1

Proposito: Define cuando o no, Scandisk va a ejecutarse debido a un apagado de maquina


incorrecto. Una opcion de 0 indica no ejecutar Scandisk. 1 indisca preguntar antes de ejecutar
Scandisk; 2 indica no preguntar antes de ejecutar Scandisk, pero preguntar antes de "fijar" posibles
errores si estos fuesen encontrados.

45
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

BootDelay=<Segundos>

Defecto: 2

Proposito: Cantidad de segundo en los que aparece la frase "Iniciando windows" y por tanto
permite pulsar F8, en windows 95.

NOTA: Esta opcion no est soportada en windows 98.

BootSafe=<Booleano>

Defecto: 0

Proposito: Si tiene valor 1, el PC arrancar en el "modo a prueba de fallos".

BootGUI=<Booleano>

Defecto: 1

Proposito: Si tiene el valor 1, arrancar windows automaticamente, con el valor de 0, una vez
ejecutado el config.sys y el autoexec.bat, permanecer en el simbolo del sistema. En este caso, ser
necesario teclear "win" para que windows cargue la interfaz grafica.

BootKeys=<Booleano>

Defecto: 1

Proposito: Un valor de 1 activa el uso de las teclas de funcion (F4, F5, F6 y F8). Un valor de 0
desactiva el uso de teclas de funcion durante el proceso de arranque de windows.

NOTA: Colocando BootKeys=0 sobreescribe el uso de BootDelay=n.

BootMenu=<Booleano>

Defecto: 0

Proposito: Colocando un 1, activa el que siempre aparezca el men de seleciion de incio. Si est
colocado a 0 se debe pulsar F8 cuando aparezca la frase "Iniciando windows 95" (o pulsar y
mantener pulsada la tecla CTRL en windows 98 al inicio del PC), para invocar el men de inicio.

BootMenuDefault=<Numero>

Defecto: 1 si el sistema se est ejecutando correctamente

3 si el sistema fall en el arranque anterior.

Proposito: Se utiliza para seleccionar la opcion del menu de incio de windows que se ejecutar por
defecto.

BootMenuDelay=<Numero>

Defecto: 30

46
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Proposito: Este valor es usado para colocar el numero de segundos que el sistema va a esperar en el
men de inicio de windows, antes de arrancar automaticamente sino seleccionamos ninguna
opcion.

NOTE: Esta opcion no tiene sentido a no ser que la opcicion BootMenu=1 haya sido aadida en la
seecion [Options].

BootMulti=<Booleano>

Defecto: 1

Proposito: Un valor de 0, desactiva la opcion de "multi-boot" o arranque del "antiguo" o previo


sistema operativo. Un valor de 1 activa tanto la tecla F4 como la posibilidad en el men de
seleccionar la opcion de arrancar el sistema operativo anterior.

BootWarn=<Booleano>

Defecto: 1

Proposito: Un valor de 0 desactiva el aviso del modo a prueba de fallos al ejecutarse el menu inicio.

BootWin=<Booleano>

Defecto: 1

Proposito: Colocando un 1 fuerza a windows a cargarse en el incio. Un valor de 0 desactiva


windows como su sistema operativo por defecto. (esto solo tiene sentido si teneiamos instalado
MS-DOS 5.x o 6.x previamente en nuestro PC)

NOTA: Presionando F4 invierte el defecto de arranque solo si BootMulti=1. (Por ejemplo,


presionando F4 con una opcion 0, fuerza a Windows 95/98 a arrancar).

DoubleBuffer=<Booleano>

Defecto: 0

Proposito: Colocando un 1 activa el "double-buffering" para los controladores que necesiten esto
(por ejemplo los controladores SCSI). Colocando un 2, es una opcion incondicional que activa el
"double-buffering" mirando cuando el controlador es necesario o no.

DBLSpace=<Booleano>

Defecto: 1

Proposito: Un valor de 1 carga automaticamente el DBLSPACE.BIN. Un valor de 0 impide su


carga.

NOTA: Windows 95 usa o Dblspace.bin o Drvspace.bin si alguno de ellos est presente en el


directorio principal de C: Para desactivar esta opcion sino tuviesemos discos comprimidos, debe
forzarse un valor de 0.

Por ejemplo:

47
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

DBLSpace=0

DRVSpace=0

DRVSpace=<Booleano>

Defecto: 1

Proposito: Mismo sentido que la opcion anterior pero con DRVSPACE.BIN.

LoadTop=<Booleano>

Defecto: 1

Proposito: Un valor de 0 no permite a windows cargar COMMAND.COM o DRVSPACE.BIN o


DBLSPACE.BIN por encima de los 640 Kbs. Si tenemos problemas de compatibilidad con alguna
vieja aplicacion DOS, es conveniente probar a forzar un cero en esta opcion.

Logo=<Booleano>

Defecto: 1

Proposito: Si tiene el valo 1 hace que aparezca el logo de windows al arrancar. Con el valor 0 se
desactiva el logo de windows. Un valor de cero, libera una serie de interrupciones software que
pudieran causar incompatibilidades con antiguos TSR del modo DOS o incompatibilidades con
cierto manejadores de memoria de terceros.

Network=<Booleano>

Defecto: 0

Proposito: Con un valor 1, nos paparecer la opcion "Modo a prueba de fallos con soporte de RED"
como una opcion en el menu de inicio.

PARAMETROS DE CONFIGURACION - CONFIG.SYS

Tericamente, debemos recordar que el config.sys no es necesario. No debera existir y es una


reminiscencia del antiguo MsDOS.

Unicamente en paises diferentes a USA, es necesario especificar un par de lineas en l debido a las
clasicas configuraciones regionales. (y esto unicamente si tenemos un teclado diferente al teclado
normal utilizado en USA)

Las lineas a utilizar en Espaa, deberan ser:

device=C:\WINDOWS\COMMAND\display.sys con=(ega,,1)

Country=034,850,C:\WINDOWS\COMMAND\country.sys

Y extrictamente no es necesaria ninguna linea ms en el config.

(en otros paises de America Latina, los parametros pueden variar ligeramente)

48
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

** Recordemos un poco de la historia del MsDOS y del antiguo windows 3.1.

* Windows 3.1 fu el primer sistema (mejor dicho, fue la primera interface grafica sobre el MsDOS
-no puede llegar a la categora de sistema operativo-), que era capaz de superar la barrera del mega.
Para ello, era capaz ya de poner a trabajar al procesador en modo protegido. (Veremos este
funcionamiento mas adelante).

* Para ser capaz de realizar esto, necesitaba un manejador de memoria en modo protegido. Este
manejador fu un standard creado por microsoft como driver de DPMI (Dos Protected Mode
Interface). Dicho driver era el HIMEM.SYS

* Windows 98, necesita por cuestiones de compatibilidad de la misma interface DPMI para iniciar
su carga. Por tanto es necesaria, pero es opcional el declararlo o n en el CONFIG.SYS. Windows
lo cargar de todas maneras.

* Igualmente, aunque no est declarado en el config.sys, windows cargar el DBLBUFF.SYS. Este


es un driver para suministrar un marco en memoria baja para todos los dispositivos SCSI que lo
necesiten para transferencia de datos via DMA (esto se refiere a las antiguas tarjetas SCSI ISA cuya
transferencia es DMA y que practicamente ya, no existen).

NOTA IMPORTANTE: Ademas de lo anterior, en el antiguo MsDOS, era necesario cargar aqu
todos los drivers de dispositivos de los fabricantes (y alguno del propio Microsoft que veremos a
continuacion). Es importante recordar, que estos drivers ya no son necesarios en windows 98, y que
si los ponemos, podemos correr el riesgo de malfuncionamiento, o lo que es peor, de perdida grave
de prestaciones y velocidad dentro de windows 98. Por esto, debemos ser excesivamente cautos con
este archivo de configuracin y ademas vigilar despues de cualquier instalacion ya que todavia
circula mucho software muy viejo el cual tiene la "insana" costumbre de tocar sin permiso nuestro
CONFIG.SYS

Todos los drivers de dispositivos, se cargan con el comando DEVICE o DEVICEHIGH.

Vamos a ver ahora un driver especial de Microsoft. Tambien es una vieja herencia, pero a veces nos
puede resultar necesario el instalarlo para poder utilizar viejos programas MsDOS, o algun juego
que requiere mucha memoria MsDOS. Me estoy refiriendo al EMM386.EXE.

Para poder estudiar el funcionamiento del EMM386.EXE, es necesario repasar un poco la memoria
real por debajo del mega. Es necesario tambien que recordemos lo que vimos en los primeros
capitulos sobre la memoria real.

A modo recordatorio, debemos tener presente que una direccion en MsDOS (debido al
funcionamiento del hardware, es decir debido al funcionamiento del propio procesador de Intel en
modo real), estaba formada por una direccion de segmento y un desplazamiento.

El segmento en hexadecimal, podia valer desde 0000 a FFFF. Exactamente igual el desplazamiento.
La manera de sumarlos era desplazando un cuarteto el segmento y sumando entonces el
desplazamiento para formar una direccion real. (repasar los capitulos anteriores).

Igualmente recordemos, que por diseo, IBM defini la direccion del adaptador de video en el
segmento A000. Por tanto la memoria real, podia (y por degracia, todavia es as por
compatibilidad) llegar desde 0000 hasta A000 (esto corresponde justo a 640 Kbs.). Es por el propio
diseo de donde se encuentra el adaptador de video. Por tanto esta es la maxima memoria real

49
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

"contigua" que puede existir en el PC. Podeis verificar con la calculadora de windows que A0000
en hexadecimal son justo los famosos 640 Kbs de los que hemos oido hablar por todos los lados.

Debemos recordar tambien que desde la C000 hasta la F000 (en la cual se encuentra la bios), estan
en principio reservadas para otras bios de otros posibles dispositivos y tarjetas que puedan
necesirtarlo. En particular la tarjeta de video tiene siempre (practicamente, aunque no es una
norma), su direccion en C000 hasta C7FF.

Pero...... all hay 196 Kbs. y de ellos, unicamente 32 Kbs utilizados por la bios de la tarjeta grafica.
Entonces.... si no tenemos mas tarjetas que tengan bios propia, por qu no utilizar esos Kbs de
memoria para meter algun driver de dispositivo?. O bien por qu no utilizarlos para que el propio
MsDOS meta all sus rutinas, en vez de utilizar el espacio de los primeros 640 Kbs?

Efectivamente, esta idea surgi en el MsDOS 5.0 (y superiores). Recordad que el MsDOS de
windows 98, se identifica internamente con la version 7.10.

** Microsoft en el MsDOS 5.0, modific el codigo del sistema para poderse cargar todo o parte,
tanto codigo como areas de datos reservadas, en dicho espacio. Y ademas dise un driver (el
EMM386) para recuperar dicho espacio y poderlo utilizar incluso para cargar posibles pequeos
programas que se quedaban residentes en la maquina.

A esta memoria se la llamo UMB (Upper Memory Block).

Antes de ver con detalle el EMM386.EXE, veamos que otras necesidades podiamos tener con
respecto a ese posible "mega" de memoria.

* Existi antes de la especificacion DPMI de Microsoft, la cual suministraba el concepto de


memoria XMS (eXtended Memory System) o memoria Extendida, otro tipo de memoria. La
memora Espandida. o memoria EMS (Expanded Memory System). Era la memoria LIM definida
por el consorcio Lotus-Intel-Microsoft. Dicha memoria lo que hacia era utilizar un marco de
pagina (una ventana) que apuntaba a 64 Kbs de memoria en cualquier posicion por encima del
mega. Es decir en un momento determinado, al escribir o leer en ese marco de pagina, estabamos
escribiendo realmente en una zona determinada por encima del mega. Cambiando simplemente una
direccion en el PC, esa ventana apuntaba a otro marco de 64 Kbs, diferente al anterior.

De esta manera, cambiando simplemente unas direcciones, nos estabamos moviendo en pequeos
bloques de 64 Kbs por encima del mega. Esto en un principio era memoria hardware especial. Una
tarjeta especial con un chip controlador. Esa memoria se direccionaba mediante la programacion
del chip, cambiando la direccion de un puerto, y nos hacia ver una ventana de 64 Kbs en la
direccion fisica de memoria E000 de nuestro PC, la cual se "movia" a lo largo de esa memoria EMS
(o memoria LIM).

Cuando se modific el procesador 8086 en sus sucesores, el manejo de memoria unicamente


cambi para poder ver mas direcciones contiguas por encima del mega en el modo protegido. Es
decir empez a "crecer" dicho mega. Esta memoria era contigua y por tanto muy diferente a la
memoria manejada por el controlador fisico de EMS.

Se decidi entonces crear un controlador "logico" EMS, el cual nos permitiese ver la "nueva"
memoria ahora definida como si fuese una memoria EMS de las que acabamos de ver. Se hizo as
para que los antiguos programas que necesitasen EMM, pudiesen seguir funcionando.

50
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Pues de paso.... se dot de dicha funcionalidad al controlador EMM386.

** Y por ultimo, las malas lenguas comentan que cuando se cre el primer procesador capaz de ir al
modo protegido, el 80286 (los antiguos 286), algun ingeniero de intel, coment a algun tecnico de
Microsoft, que si era capaz de controlar la linea A20 de direcciones del procesador, sera capaz de
obtener otros preciosos 64 Kbs (realmente 64 Kb menos 16 bytes) de memoria real.

Esta historia es curiosa, por lo que vamos a comentarla un poco. Curiosa en plan tecnico, por lo que
pido disculpas por salirnos un poco del tema. Veamos: la definicion de las lineas de direcciones en
un 8086, eran de 20 direcciones. Lineas de direcciones A00 a A19.

Recordad igualmente que para obetenr una direcion real, sumando un segmento y un
desplazamiento, se hacia (por hardware) aadiendo un cuarteto con contentido cero a la direccion
de segmento y sumandole el desplazamiento. Es decir por ejemplo, para sumar el segmento 1234 al
desplazamiento 5678, se hacia:

12340

5678

--------

179B8

Y la maxima direcion que podia sumarse entonces era el segmento F000 (ya que como el
desplazamiento iba desde 0000 a FFFF, de esta manera no habra "desbordamiento") Es decir:

F0000

FFFF

-------

FFFFF

(FFFFF era la maxima direccion real que podia expresarse con 20 lineas de direccion: 5 cuartetos =
20)

Bien, pues Intel, le "sopl" a Microsoft, que si se utilizaba el segmento FFFF, con linea A20
activada no habra desbordamiento. Pero para esto, el software debera estar preparado. Es decir
podriamos sumar:

FFFF0

FFFF

------

10FFEF

Para esto necesitamos las 20 lineas del modo real, mas la linea 21 (la A20) para manejar el "1" que
nos sobra.

51
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Si la linea A20 no est activada, entonces por ejemplo:

FFFF0

00010

-------

00000 nos vuelve justo al comienzo de la memoria fisica.

Pero con la linea activada, esa misma suma nos d:

FFFF0

00010

-------

100000 es decir por encima del mega. Y as nos puede llegar hasta 64 Kbs - 16 bytes. A esta
memoria se la llam memoria HMA (o HIGH).

Pues ahora ya estaba relativamente sencillo. La manera de controlar la linea A20, era facil. El
HIMEM.SYS de por s controla todas las lineas de direcciones. Por tanto controla esta en
particular. Y ahora el EMM386, podia ser el encargado de comunicarse con el HIMEM para activar
o desactivar dicha linea, tomar control de dicha memoria y suministrarsela a los programas de
aplicacin.

Como el "primer" programa que podia hacer uso correcto de ella, era el propio MsDOS, se
procedio a modificar su nucleo (al objeto de ensearle a "sumar" direcciones de 21 bites), para
poder utilizar dicha memoria.

Resumiendo: EMM386 tiene (o puede tener) tres funciones basicas:


1) Control de la memoria EMS (LIM) y creacion del marco de pagina
2) Soporte a la memoria UMB.
3) Soporte a la memoria HMA (HIGH).

Y de pas se le dot al EMM386 de una serie de parametros para poder


controlar esta memoria. En particular, el parametro RAM suministra memoria
UMB. El parametro RAM implica tambien memoria EMS (y por tanto utilizar el
segmento E000 por defecto como marco de pagina).

Se defini tambien la combinacion RAM NOEMS, si queremos unicamente UMB y no


queremos marco de pagina.

Existen ademas otra serie de parametros que se salen del contenido de este
capitulo.

** Es importante indicar, que si ponemos el driver EMM386.EXE en el


config.sys, entonces *SI* que es obligatorio poner primero el HIMEM.SYS en
dicho archivo.

** Ademas, tambien es importante resaltar, que aunque pongamos el parametro


RAM, esto solo indica que esta memoria estara disponible para programas que
"sepan" utilizarla. En particular si queremos que el propio MsDOS pueda

52
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

utilizarla, se deber incorporar en el config.sys (en cualquier sitio), la


linea:

DOS=UMB

Y por ultimo, tambien, para que el propio MsDOS pueda utilizar la memoria
HIGH (HMA), se deber igualmente incirporar la linea:

DOS=HIGH

Ambas lineas, pueden resumirse en:

DOS=HIGH,UMB

(pero recordad que solo tendran sentido si tenemos el EMM386 con el


parametro RAM, y esto ademas obliga a tener el HIMEM.SYS)

OTROS PARAMETROS DEL CONFIG.SYS


-------------------------------

** Lo primero y mas importante, es recordar que NO hac falta ningun


parametro en el config.sys (excepto el DOS=HIGH,RAM visto en el capitulo
anterior).

** Igualmente quiero insistir en tres cosas:

1) Estos parametros unicamente tendrn efecto en MsDOS no en windows.


2) Cuando me refiero a MsDOS, me estoy refiriendo a MsDOS "puro". Las
ventanas MsDOS bajo windows no se ven afectadas por estos parametros.
Incluso la apertura de ficheros se hace a traves de windows en estos casos.
3) Lo que he comentado en los puntos 1) y 2), es la teoria. La practica nos
demuestra, que efectivamente, si que influyen en windows: pero
NEGATIVAMENTE. Es decir, jugando con estos parametros, lo unico que podemos
conseguir es que windows funciones peor.

Por curiosidad vamos a ver estos parametros y comentar su efecto tanto en


MsDOS como en windows.

----------

NOTA: Algunos de los parametros que veremos a continuacion, pueden terminar


en la palabra HIGH. Esto indicar que el MsDOS lo cargar en memoria alta si
tenemos activo el EMM386.

Pero esto no es necesario (y ademas es contraproducente), si ademas hemos


especificado el parametro DOS=HIGH,UMB que vimos anteriormente, el propio
MsDOS ya cargar automaticamente en memoria alta y sin necesidad de "forzar"
esta situacion.

----------

ACCDATE=disco1+|- disco2+|- ....

Nos guardar la fecha de la ultima vez que hemos accedido a los archivos de
un disco o n (en funcion del + o del -). Este parametro no tiene efecto en
windows, ya que por defecto windows nos informa de estos accesos.

----------

BREAK [ON|OFF]

53
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Sirve para activar la manera de "parar" un proma MsDOS.En un programa MsDOS,


pulsando CTRL-C podemos casi siempre teclear CTRL-C y pararlo. Pero el
MsDOS, unicamente chequea el que hayamos pulsado CTRL-C, cuando v a
escribir en pantalla o cuando va a leer desde teclado. Si nuestro programa
no est haciendo ninguna de estas dos cosas en ese momento, no se parar. Si
tenemos BREAK ON en el config.sys, el MsDOS tambien chequer el que pulsemos
CTRL-C cuando va a leer o escribir en disco. De esta manera, aunque nuestro
programa no escriba en pantalla, se supone que al menos, acceder al disco y
por tanto de esta manera podremos pararlo.

No tiene ningun efecto en windows, y este parametro no ser pernicioso


tampoco para windows. Es conveniente tenerlo.

NOTA: En cualquier ventana MsDOS, podemos teclear BREAK y veremos la


situacion en la que estamos.

----------

BUFFERS=n[,m]
BUFFERSHIGH=n[,m]

Assigna memoria "real" para contener bufferes de disco. Recordad que cada
sector de disco son 512 bytes, por tanto cada buffer que asignemos, nos
robar medio k de la memoria real.

No tiene ningun efecto bajo windows ni bajo las ventanas MsDOS bajo windows.
Unicamente tiene efecto en MsDOS puro. Y tambien tiene efecto al "arrancar"
windows, antes de que este entre en modo protegido. Antes de que entre el
procesador en ese modo, se est utilizando todavia el antiguo sistema de
apertura y carga de ficheros en MsDOS. Por tanto se ahorraria "algo" de
tiempo al arrancar windows, si este parametro fuese elevado.

Mi consejo es NO ponerlo. Solo sirve para ahorrar unos segundos en el


arranque de windows. Por contra, nos disminuir muchisimo nuestra memoria
real. Recordad que esta memoria es "preciosa", no solo por la posibilidad de
rodar antiguos programas o juegos MsDOS en ventana que requieren mucha
memoria, sino tambien porque el propio windows necesita "parte" de la
memoria real para cargar ciertas secciones de DLLs (normalmente DLLs de 16
bites heredadas del 3.1), pero de todas maneras, influye negativamente en
las prestaciones de windows el tener "poca" memoria real.

--------

DEVICE=
DEVICEHIGH=

Con estas lineas cargamos un dirver de dispositivos. Ya hemos comentado que


windows, excepto el HIMEM.SYS y el EMM386, *NO* necesita ninguno. Y no es
conveniente tener *ninguno*.

El poner alguno, indica que es un "viejo" programa o necesario para un


"viejo" dispositivo. Por tanto esto influye negativamente en el
comportamiento de windows.

En caso de tener que poner algun driver (solo en caso de "extrema necesdad),
podemos utilizar el DEVICEHIGH (en vez del DEVICE), en este caso y una vez
que ademas hemos utilizado el HIMEM y el EMM386.

Casi (pero no todos) todos los drivers admiten funcionar en memoria alta.

54
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Existen especificos (sobre todo los de acceso a las antiguas tarjetas SCSI,
y alguno de red en modo real), que no funcionaran o provocarn cuelgues
aleatorios si los cargamos en memoria alta.

La instruccion DEVICEHIGH admite ademas la "region" de carga (con el


paramtro /L, pero es opcional). Se llama "region" de carga, al numero del
posible hueco en memoria superior. Recordad que en el capitulo anterior, y
en el de memoria real, comentamos que hay huecos en la memoria superior que
se pueden utilizar, si hemos puesto el EMM386 con el parametro RAM y
utilizamos DOS=UMB. Evidentemente, como en teoria podemos tener varias
"bios" de varias tarjetas en esos huecos de memoria, puede que no queden
"contiguos". Si no quedan contiguos, admiten "numeracion". Pues bien,
podramos especificar as el "numero" del hueco UMB.

---------

DOS=HIGH|LOW[,UMB|,NOUMB][,AUTO|,NOAUTO]

No conviene andar jugando con este paramtro. Unicamente poner DOS=HIGH,UMB


si utilizmos EMM386.

El intentar forzar la memoria de otra manera es unicamente para alguna


situacion muy especifica (y totalmente improbable).

----------

DRVPARM=

Unicamnete a utilizar para disuqeteras *no* estandard. En este caso,


normalmente el fabricante nos indicar que parametros debemos especificaer
aqu. Evidentemente se ca de su peso, que no debemos tocar esto para las
disqueteras estandard que nos dan en nuestro PC.

----------

FCBS=x
FCBSHIGH=x

Es un parametro viejisimo. Herencia del MsDOS 1.0 (del ao 82). Este MsDOS
abra los archivos mediante la tencica de "File Control Block". Es decir era
necesario crear en memoria una estructura de control y pasarselo a las
funciones de acceso a disco. Esto ya no se utiliza (desde hace mas de 15
aos). Pero por cuestiones de compatibilidad con los posibles programas
MsDOS del ao 82 que nos quedasen, todavia existe esta opcion.

----------

FILES=nn
FILESHIGH=nn

Indica el numero maximo de archivos que puede tener abierta una aplicacion
MsDOS.

Mismos comentarios que he realizado para los BUFFERS:

No tiene ningun efecto bajo windows ni bajo las ventanas MsDOS bajo windows.
Unicamente tiene efecto en MsDOS puro. Y tambien tiene efecto al "arrancar"
windows, antes de que este entre en modo protegido. Antes de que entre el
procesador en ese modo, se est utilizando todavia el antiguo sistema de
apertura y carga de ficheros en MsDOS. Por tanto se ahorraria "algo" de

55
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

tiempo al arrancar windows, si este parametro fuese elevado.

Mi consejo es NO ponerlo. Solo sirve para ahorrar unos segundos en el


arranque de windows. Por contra, nos disminuir muchisimo nuestra memoria
real. Recordad que esta memoria es "preciosa", no solo por la posibilidad de
rodar antiguos programas o juegos MsDOS en ventana que requieren mucha
memoria, sino tambien porque el propio windows necesita "parte" de la
memoria real para cargar ciertas secciones de DLLs (normalmente DLLs de 16
bites heredadas del 3.1), pero de todas maneras, influye negativamente en
las prestaciones de windows el tener "poca" memoria real.

---------

INSTALL=
INSTALHIGH=

Equivale exactamente lo mismo que cargar un programa (no un dirver de


dispositivo), en el AUTOEXEC. Si estas lineas se ponen, se ejecutarn
siempre al final del config, independientemente de en donde las hayamos
situado.

---------

LASTDRIVE=
LASTDRIVEHIGH=

Indica cual es nuestra "ultima" unidad o letra de disco. Este parametro


afecta a windows, por lo que no conviene tocarlo. En el antiguo MsDOS 6.22,
si no lo poniamos por defecto, era la F:. En el MsDOS de windows 95 / 98,
por defecto es la letra Z:, por tanto no debe tocarse.

---------

NUMLOCK=[ON|OFF]

Indica si queremos que la tecla de bloqueo del teclado numerico est o no


activa. No es necesario ponerlo y se asumir lo que est definido en la bios
de nuestra maquina.

---------

REM

Escrito por delante de cualquier linea, la convierte en linea de


"comentarios". Por tanto no se jecutar la instruccion que va a
continuacion.

----------

SET variable=xxxxxxxx

Permite especificar variables de entorno. En los antiguos MsDOS, esto era


posible unicamente en el AUTOEXEC.BAT. Actualmente es posible en ambos
sitios: en el config y en el autoexec.

----------

SHELL=[[disco:]path]programa [parametros]

Este comando *si* es importante. No es necesario, pero algunas veces nos

56
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

puede ayudar a solucionar algun problema.

Aqu se define el "interprete de comandos". Normalmente sabemos que dicho


interprete es el COMMAND.COM pero puede ser perfectamente otro interprete
que no sea de MS (existen interpretes de comandos de terceros).

Por defecto, si no ponemos la linea, asume que es el COMMAND.COM. Pero


recordad que el command.com, admite parametros. Podeis verlo dando command
/? en una venta MsDOS. Imaginar que quereis que por defecto TODOS los
command (o ventanas MsDOS) de vuestra maquina se abran con unas determinadas
caracrteristicas de tamao de entorno ,etc... BIen en este caso, como
queremos "todas", lo mas comodo es especificarlos en el SHELL del
config.sys.

-----------

STACKS=
STACKSHIGH=

Define el numero de stacks (pilas) para el uso internos del MsDOS. No es


conveniente ponerlo y no tiene ningun efecto en windows ni en ventanas MsDOS
bajo Windows.

------------

SWITCHES= /F /K /N /E[:n]

/K Fuerza un teclado "enhanced" como teclado normal.

/N Deja inactivas dirante el arranque las tecla F5 y F8 que nos permite


"pasar" del archivo de comandos.

/E[:n] Si se usa sin el parametro :n indica que se debe suprimir la


reasignacion de ciertas extensiones de la bios (EBIOS). No es conveniente
tocar este parametro ya que puede tener efectos negativos en la memoria real
de la maquina al forzar la carga de las extensiones de la bios en memoria
baja.

PARAMETROS DE CONFIGURACION - AUTOEXEC.BAT


------------------------------------------

* Como introduccion (y casi, casi como unico resumen), podemos decir que el
autoexec.bat se encarga, o puede encargarse de ejecutar cualquier programa
MsDOS, as como de establecer las condiciones de "entorno" (ya las veremos
mas adelante), de todo el MsDOS, y lo que es mas importante: de todo
Windows. Esto ultimo, deriva de que Windows "hereda" todo el entorno que
tena al arrancar.

* Extrictamente este archivo no es necesario (al igual que el config.sys),


pero por desgracia, el MsDOS y el Windows, estan pensados para
configuraciones regionales USA (as como el teclado). Por tanto como nuestro
sistema (y nuestro teclado) no est en USA, debemos incorporar unas pocas
lineas, tanto en el config, como en el autoexec.

Recordemos que en el config eran:

device=C:\WINDOWS\COMMAND\display.sys con=(ega,,1)
Country=034,850,C:\WINDOWS\COMMAND\country.sys

57
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Y en el autoexec.bat, son:

mode con codepage prepare=((850) C:\WINDOWS\COMMAND\ega.cpi)


mode con codepage select=850
keyb sp,,C:\WINDOWS\COMMAND\keyboard.sys

(en ambas me estoy refiriendo a "Espaa" y teclado Espaol. Para


configuraciones en Latino America, estas lineas variarn ligeramente)

Basicamente, en estas lineas, estoy configurando la tabla de codigos, como


la 850, el pas Espaa como 034, y el teclado como espaol "sp".

** NOTA: Es importante, sobre todo si vamos a tener ms de un sistema


operativo, es decir, si nuestro sistema va a convivir con NT 4 o con Windows
2000, que estas lineas esten correctamente definidas.

El problema nos puede venir causado, porque si no tenemos correcta la pagina


de codigos en Windows 98, los caracteres acentuados y caracteres locales
(como la "") aunque la veamos correctamente en pantalla, se almacenan con
la tabla de codigos por defecto del MsDOS.

Entonces veramos correctamente los nombre de archivos acentuados, pero


internamente el nombre estara almacenado con otro codigo.

En esta situacion, si instalamos windows NT o Windows 2000, estos, al


configurarse (recordad que son independientes y no se apoyan en el MsDOS),
se configuran con la tabla correcta de codigos: 850. Por tanto los
caracteres acentuados en nombres de archivos, sern otros. De esta manera,
un scandisk desde windows 98 a la particion NT, nos dar errores en los
nombres de archivo, y lo que es mas grave: intentar arreglarlos
(estropeando el correcto desde "su" sistema). Exactamente igual nos pasar
desde windows 2000.

CONDICIONES DE ENTORNO
----------------------

* Se entiende por entorno, auqellas variables que son comunes a todo el


sistema. Se heredan entre los procesos.

* En general no son necesarias, excepto para programas particulares que las


vayan a utilizar.

Las variables que queramos que se vean en "todo" el sistema y que puedan ser
leidas por un programa, se asignan en el autoexec mediante el comando SET.
Esto lo utilizan muchas aplicaciones.

La variable ms curiosa de entorno, es la TEMP. Esta la utilizan desde el


comienzo del MsDOS, muchas aplicaciones, y en particular, tambien la utiliza
windows.

Por defecto, sino est definida, el propio MsDOS le asigna el contenido


C:\WINDOWS\TEMP y por costumbre desde los inicios del DOS, esta carpeta se
utiliza para escribir en ella ficheros temporales que necesiten las
aplicaciones, y que por definicion pueden ser borrados en cualquier momento.
Los programas o aplicaciones bien realizadas, deberan ademas ser las
responsables de borrarlos. Pero esto, quiz sea mucho pedir.....

Tal y como estabamos comentando con el entorno, nosotros podemos definir en


el autoexec otra localizacion de la carpeta TEMP. Lo mas normal es tener:

58
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

SET TEMP=C:\TEMP

y a su vez tener creada la carpeta TEMP en C:.

** Una de las variables de entorno mas importante en el PATH (camino).


Cuando tecleamos un programa para su ejecucion, tanto el MsDOS como Windows,
buscan el programa en la carpeta en donde estamos en ese momento, y si no lo
encuentran, lo buscan en el "camino" que est definido en nuestra variable
PATH.

Por defecto, sino especificamos un path, en windows por defecto el path es


C:\WINDOWS;C:\WINDOWS\COMMAND (se debe tomar nota, que los distintos
caminos, se separan por punto y coma).

Como PATH, ademas, es una variable de entorno, puede ser asignada mediante
el comando SET. Es lo mas comodo. Imaginar que queremos "aadir" al PATH que
tuviesemos en un momento determinado, la carpeta C:\KK. Bien, lo mas
sencillo sera escribir:

SET PATH=%PATH%;C:\KK

Fijaros que lo que estamos haciendo, es decirle que el nuevo PATH, es igual
al anterior (en este caso, se pone %PATH% -es decir encerrado entre simbolos
%), y a continuacion, separado por punto y coma, el camino que queremos
aadir.

NOTA 1: Para ver el PATH que tenemos en un determinado momento, podemos


abrir una ventana MsDOS y teclear simplemente PATH. Esto nos mostrar el
contenido del PATH. Iguelmente en una ventana MsDOS, si tecleamos el comanto
SET nos mostrar todas las variables de entorno, y en particular el propio
PATH, ya que esta es una variable de entorno.

NOTA 2: Cuando dentro de windows, vamos a Inicio->Ejecutar y tecleamos el


nombre de un programa, windows primero buscar en C:\WINDOWS\SYSTEM y si no
lo encuentra, a continuacion buscar en el PATH.

EMPIEZA LA OPTIMIZACION DE NUESTRO SISTEMA


------------------------------------------

Recordar que el directorio de archivos temporales, "debe" estar vacio. Si


tiene muchos archivos, degrada de una manera apreciable las prestaciones y
velocidad de windows. Es conveniente borrarlo de vez en cuando. Y ahora la
pregunta del milln: no podriamos utilizar el propio autoexec.bat, para que
cada vez que arranquemos, sea l el encargado de "limpiar" esta carpeta?.
Pues s podemos y "debemos" hacerlo.

Una manera muy sencilla de hacerlo, es incorporar las siguiente lienas de


codigo en nuestro autoexec.

if not exist c:\temp\*.* goto cont0


attrib c:\temp\*.* -s -h -r
echo S | del c:\temp\*.* >nul
:cont0

Esto nos borrar el contenido de la carpeta C:\TEMP. Si tuviesemos los


temporales en otra carpeta (por ejemplo, en la carpeta por defecto de

59
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

windows C:\WINDOWS\TEMP), deberemos sustituir C:\TEMP por el nombre de la


carpeta que tuviesemos los temporales en nuestro sistema.

Es importante recordar ademas que debe sustituirse la "S" de la linea "echo


S", por una "Y" (sin las comillas) si tuviesemos windows en Ingls.

CONFUSION EXISTENTE EN TORNO AL MSCDEX


--------------------------------------

En muchas consultas realizadas y debido a cierta confusion que existe con el


MSCDEX y la posibilidad de ver o n nuestra CDROM desde MsDOS puro, voy a
hablar un poco sobre este tema.

Notas a tener encuenta:

1) No le hace falta a windows, que tengamos definido "nada" en nuestro


config y autoexec, para ser capaz de ver la CDROM.

2) Si tuviesemos algo definido, es mas que probable que a windows no le


quede mas remedio que acceder a nuestra CDROM, utilizando el viejo metodo de
acceso de 16 bites, perdiendo entonces la capacidad de acceso en 32 bites.
Ademas, tambien es mas que probable, que si nuestra CDROM fuese IDE,
perdamos el acceso a 32 bites tambien en nuestro disco duro si este est en
el mismo cana IDE.

* Con lo anterior, quiere decir: "cuidadito" con lo que tenemos o ponemos


all.

** Repasemos un poco el antiguo MsDOS, para entender como se acceda a una


CDROM (sistema de 16 bites).

Para acceder a la CDROM, necesitamos dos componentes software:

1) Un driver de dispositivo (por ser driver, debe estar en el config.sys),


que nos permite ver un dispositivo de tipo "stream" (o de flujo) como un
dispositivo "record" (orientado a registro). Recordad que un CDROM es un
dispositivo "stream" -como si fuese una unidad de cinta-.

2) Un programa (por tanto, montado en el autoexec), que sea capaz de acceder


al dispositivo virtual montado en el punto 1), y devolvernos los datos como
si fuese una unidad de "disco". Este programa es un estandard de Microsoft:
el MSCDEX (pero podra ser cualquier otro y de echo existieron algunos
durante la vida del antiguo MsDOS).

* A partir de ahora me voy a referir unicamente a los CDROM IDE. (la idea
basica, de todas maneras, es igualmente extrapolable a los CDROM SCSI).

** Hasta que surgi windows 98, y nos incorpor un driver casi "universal"
para todas las unidades de CDROM, era bastante normal en el MsDOS em deter
drivers del tipo:

DEVICE=C:\HITACHI.SYS /D:MSCD001 .... o


DEVICE=C:\PIOONER.SYS /D:......

Es decir un driver de nuestro fabricante de CDROM (normalmente lo


identificamos por el parametro /D:MSCD001) en el config.sys para poder ver
nuestra CDROM. Igualmente teniamos una linea del tipo MSCDEX /D:MSCD001 en
el autoexec.

60
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Fijaros que el nombre puesto en /D:MSCD001, puede ser cualquiera, con tal
que sean el mismo en el driver del config y en el programa MSCDEX.

Bien, retomando el tema, estabamos diciendo que windows nos aporta un driver
"casi" universal: el OAKCDROM.SYS (que podemos encontrarlo en el disco de
inicio de windows 98, o bien en la carpeta C:\WINDOWS\COMMAND\EBD). Por
tanto incorporando este driver en el config y a su vez invocando al programa
MSCDEX, tendramos acceso a la CDROM en modo MsDOS puro.

** Pero... debido a los problemas que he comentado al principio de este


capitulo, esto est completamente desaconsejado. Perderiamos muchas
prestaciones en nuestro sistema.

** Entonces, la pregunta es como puedo acceder a la CDROM, al reiniciar en


modo MsDOS, desde windows?. Bueno, y ademas, existe un problema: un driver
de dispositivo, "debe" cargarse en el config.sys. Veamos tres posibilidades
para solucionar este problema:

1) Cargar el OAKCDROM.SYS en el config de nuestro propio windows. Y *no*


cargar el MSCDEX. Con esto evitamos que el acceso se haga a 16 bites.
Posteriormente crearnos un archivo en nuestro directorio de windows, llamado
DOSSTART.BAT que unicamente tuviese la linea de MSCDEX /D:MSCD001. Si este
el archivo ya existiese, incorporarle dicha linea.

Esta solucion funciona, pero no me gusta por dos motivos: uno, consumo de
memoria MsDOS (al cargar el driver anterior), que luego no sirve para nada
bajo windows. Y segundo motivo, este tipo de drivers en combinacion con
ciertas controladoras y unidades de CDROM, pueden causar inestabilidades al
windows.

2) Utilizar algun programa de los llamados "cargadores" de drivers. Por


ejemplo, Creative Labs, tenia en su servidor FTP, un programa llamado
CTLOAD, que era capaz de cargar un driver una vez que estuviesemos en MsDOS
y sin necesidad de incorporarlo en el config. La manera de cargarlo sera
entonces:

CTLOAD C:\WINDOWS\COMMAND\EBD\OAKCDROM.SYS /D:MSCD001


MSCDEX /D:MSCD001

(y suponiendo que el programa CTLOAD, lo hemos dejado por ejemplo en


C:\windows\command para que lo encuentre en el path).

Incorporando estas lineas en el DOSSTART.BAT citado anteriormente,


tendriamos acceso a la CDROM al reinicar en modo MsDOS.

3) Tercera posibilidad: utilizar un config y autoexec propio y crear un


acceso directo a un "command.com" desde el escritorio con ese config y
autoexec propio que incorporte esas lineas cada una en su correspondiente
archivo.

Tampoco me gusta, porque esto implica el tener que "mantener" otros config y
autoexec.

La solucion mas "limpia" en mi opinion es la 2).

SE INICIA YA LA CARGA DE WINDOWS


--------------------------------

Llegado a este punto, ya hemos visto un poco de la maquina, del procesador

61
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

del MsDOS, y nos empiezan a "sonar" los terminos de memoria real, modo
protegido, dispositivo PnP..... etc.

INTRODUCCION A SISTEMAS OPERATIVOS


----------------------------------

Windows 98, a pesar de arrancar "sobre" MsDOS es un sistema operativo con


todas las de la ley. No se apoya en MsDOS. Unicamente lo hace por motivos de
compatibilidad en ciertas situaciones y para ciertos dispositivos que ya
veremos mas adelante.

Por poner un simil con otros sistemas operativos, NT y Linux por ejemplo.
Estos no se apoyan en MsDOS, pero para arrancar se apoyan en la Bios de la
maquina. Siempre arranca la Bios. En Windows 95 / 98, hay un paso mas:
primero arranca la Bios, posteriormente el MsDOS y por fin el Windows. El
paso ms es el MsDOS, pero debemos verlo de esta manera: como un "paso" ms.

Es verdad que con posterioridad a la "patada" inicial, el NT y el Linux,


montan su capa de abstraccion del hardware (HAL), y se olvidan totalmente,
de la Bios. Y no utilizan sus recursaso para nada, y es ms, ni se fian de
como han inicializado los posibles dispositivos. Ellos los vuelven a
verificar e inicializar.

Esto por desgracia, parece que se va a perder en la informatica. Existen ya


distribuciones de nucleo de Linux, que "s" se apoyan en las bios
(evidentemente con nuestro consentimiento). Igualmente, parece que el futuro
Windows 2000, tambien se va a apoyar en la bios (y en este caso,
excesivamente por ahora -en la beta 3-).

** Veamos ahora los dos modos de funcionamiento del procesador "REAL" y


"PROTEGIDO", y al final de esta parte, vermeos tambien el "MODO VIRUTAL
8086" que es el tercer modo de funcionamiento del procesador y que es el que
nos dar soporte a las ventanas MsDOS desde Windows.

MODO REAL Y MODO PROTEGIDO


--------------------------

Vamos a repasar un poco ms en detalle estos dos terminos, antes de empezar


con la carga real de windows. Vamos a hacerlo as, debido a que windows, lo
primero que hace es poner a trabajar a la CPU en modo protegido.

Hasta ahora, hemos visto el modo REAL. Recordemos que el procesador arranca
siempre en este modo fundamentalmente por cuestiones de compatibilidad.
Recordemos un poco sus caracteristicas:

1) La memoria est restringida a lo que podamos direccionar con 20 lineas de


direcciones (por tanto 2 elevado a 20 posiciones de memoria direccionables =
1 Mega).

2) Hay zonas que obligatoriamente estan en uso por el hardware (la zona de
video: segmento A000 a C000)

3) Existe una zona de vectores de intrrupcion (interrupciones software) en


las direcciones de memoria desde la posicion 0 a la 1024 fisicas reales.
(256 interrupciones, y cada interrupcion, 4 bytes. 2 para definir el
segmento y 2 el desplazamiento). Esta table contiene las direcciones de las
rutinas a las que saltar automaticamente el hardware: la CPU, cuando se le
interrupa mediante una INT xx (interrupcion xx). Muchas de estas

62
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

interrupciones software, realmente son "preparadas" por la bios de la


maquina, y algunas de ellas, se disparan como consecuencia de una
interrupcion hardware (IRQ). Lo IMPORTANTE es destacar, que el manejo de
interrupciones lo hace la CPU ya que lo tiene implementado por hardware. Es
decir "ella solita" salta a la correspondiente direccion de la tabla una vez
que se produce la interrupcion. Ademas la CPU en el modo real "sabe" que
esta tabla empieza fisicamente en el desplazamiento cero de la memoria
fisica.

** que hay que hacer para poner a trabajar la CPU en modo protegido?: pues
muy poco. Se coloca en unos registros especificos la nueva direccion de la
tabla de interrupciones (llamadas aqu "excepciones"), se crea una tabla con
los descriptores de segmento en modo protegido y se le pasa su direccion
tambien a otros registros especiales del procesador, se cambia ahora un bite
de un registro de control de la CPU, y se realiz un salto "largo" (JMP
FAR). A la vielta de ese salto, ya estamos en modo protegido.

** pero realmente que s el modo protegido? Bueno, esto es un poco mas


costoso de explicar en unas pocas lineas. Voy a intentar resumirlo.

La CPU en este modo nos d tres cosas:

1) Control de procesos, Proteccion.


2) Proteccion mediante la memoria virtual y su mecanismo.
3) Virtualizacion del hardware.

CONTROL DE PROCESOS. PROTECCION.


--------------------------------

Este es un nuevo concepto. Recordar que una direccion de memoria era un


segmento y un desplazamiento.

Ahora suponer que lo que antes llamabamos segmento (16 bites), ahora es un
indice (es decir vale, 1, 2, 3, 4,.....) y que la direccion real de memoria
es lo que se indicque en una tabla (llamada tabla global o local de
direcciones).

Es decir si nuestro segmento, contiene un 1, indica que realmente nos


estamos refiriendo al contenido de la primera posicion de la tabla de
direcciones. Este contenido se toma tal y como tomabamos el antiguo
segmento, que sumado al desplazamiento, nos d la direccion real.

Entonces lo que antes llamabamos segmento y que ahora contiene un indice, le


cambiamos de nombre: pasa a llamarse: "Descriptor".

Y ademas, lo modificamos un poco: por tener 2 bites, puede tener un numero


desde 0 a 65535. y nos hacen falta 65535 elementos de direcciones?.
Probablemente no. Entonces vamos a limitarlo. Supongamso que utilizamos
unicamente 13 de los 16 bites. Con esto tendriamos unicamente 8192 posibles
elemento de la tabla de direcciones. Nos d de sobra, ya que ademas en
cualquier momento podemos apuntar los registros que definen la tabla de
direcciones a una nueva, y as tendriamos otros 8192 posibles elementos.

Lo importante, es el para qu vamos a utilizar los otros bites. Facil, en


particular, con 2 de ellos podemos tener el valor 0, 1, 2 y 3.

Estos bites en el descriptor de segmento, nos van a indicar el "modo" de


funcionamiento del procesador en el segmento de codigo que est a su vez
apuntado por el indice del descriptor a la tabla de direcciones.

63
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

El modo "0" es el modo ms potente. Puede realizar todo. A este modo se le


llama modo KERNEL del procesador. Es decir el codigo del programa que se
este ejecutando en modo 0, tiene acceso a todo. Esto puede servirnos para el
"nucleo" del sistema operativo.

El modo "1" en principio puede hacer todo, excepto saltar a modo cero.
Igualmente el "2" no tiene acceso a los anteriores, y el "3" no tiene acceso
nada mas que a segmentos de us propio modo. Este es el modo menos potente.
No puede hacer casi nada. Este es modo en que deben ejecutase los programas
de aplicacion. Es el llamado modo USER.

Evidentemente, tiene que existir alguna manera de poder ejecutar "trozos" de


codigo del sistema operativo. Pero en principio el modo "3" no puede saltar
a modo "0", y de hecho no salta. No puede. Lo hace mediante la tecnica de
"excepciones" o puertas de tarea. Estas estn totalmente protegidas, por lo
que un programa de usuario, nunca podra "tirar" al sistema operativo.

Graficamente lo anterior, puede pintarse con un circulo. Este es el modo 0.


Luegop un circulo concentrico mayor. Es el modo 1, y as pintar otros dos
circulos contentricos mayores hasta el modo 3. Y ahora graficamente, podemos
decir que podemos saltar del interior al exterior en cualquier punto, pero
nunca al reves. Para pasar al reves. solo puede hacerse en ciertos "puntos"
de cada circulo. Estos puntos, son la "puertas de tarea".

Curiosamente..... de esta manera ya se puede implementar proteccion a nivel


de tareas. El tema es mucho mas complejo con respecto a los descriptores,
pero a nivel de introduccion nos puede servir.

MEMORIA VIRTUAL. SU MECANISMO.


------------------------------

Antes hemos comentado que una direccion, es un descriptor de segmento y un


desplazamiento. Este descriptor de segmento, es un indice que apunta a una
tabla y contiene el "segmento" real que sumado al desplazamiento inicial,
nos da, la direccion correcta. La direccion es ya la direccion real fisica
de memoria que queremos localizar. (memoria lineal).

Todo este "cisco" que he contado, no hay que preocuparse. No necesitamos


"programarlo" nosotros. El hardware lo hace por nosotros. Todo esto lo tiene
implementado directamente la CPU. En general esto que estoy describiendo, no
es una cosa de la arquitectura 386 (es decir los actuaes Pentium). Es algo
de "todas" las CPUs. Intel no descubri nada nuevo con esto (tiene algunas
matizaciones...). Todas las CPUs trabajan basicamente con los conceptos
descritos en estos capitulos.

Pero... que pasa si ademas de esta tabla, o este mecanismo mejor dicho, de
"segmentacion", el cual nos d una direccion lineal, esta en vez de ser la
direccion fisica, lo que hacemos es que a su vez apunte a otra tabla
especial. Vamos a llamarla tabla de "paginacion". Esta nueva tabla, tendr
en cada elemento, bien su direccion ya en memoria real, o bien su direccion
en el archivo de paginacion (ya veremos que es esto).

Y s ademas, este mecanismo lo implementamos por hardware, y que sea la CPU


la encargada de realizar todo este trasiego de direcciones, pues mucho mejor
no?.

Pues ahora, empezemos al reves: cogemos toda la memoria y la dividimos en


paginas de 4 Kbs. La direccion o numero de pagina, lo ponemos en una tabla

64
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

que nos vamos a crear con las direcciones de dichas paginas. Ademas esa
tabla, va a contener un indicador de si est en memoria real o bien en disco
en el archivo de paginacion.

Cada elemento de la tabla, son las direcciones sucesivas de memoria que


"cree" ver nuestro programa. Pero la CPU, accediendo a dicha tabla, salta a
la direccion real que est all indicada que ser cualquier otra, o bien, si
est en disco, carga esa pagina del disco, en cualquier localizacion de
memoria libre, y le cede control.

Es decir, estamos "virtualizando" las direcciones. Nuestro programa no


entiende de direcciones reales. Unicamnete direcciones virtuales que son las
que le muestra la tabla de paginacion. Y es la CPU la que se encarga del
trasiego de paginas de memoria real al archivo de paginacion (cunado no le
"caben") y al contrario.

Evidentemente, el propio hardware, sigue unos criterios para descargar las


paginas "menos" utilizadas al archivo de paginacion. Una vez que ha hecho
esto, con marcar en la tabla de paginas, que esa direccion no est en
memoria real y est guardada en tal posicion de disco.... pues ya est. Los
programas ni se enteran. Realmente estan en modo "virtual".

VIRTUALIZACION DEL HARDWARE


---------------------------

Bien, al igual que se puede poner poner un mecanismo por el cual las tareas
estn protegidas, tambien puede ponerse un bit de marca que nos indique si
un descriptor de segmento (es decir el codigo, real o virutal) al que apunta
ese descriptor, est autorizado o no para ejecutar una entrada / salida
directa al hardware. Es decir una instruccion IN / OUT en ensamblador de las
que veiamos al principio de estos capitulos.

Si el bit est activo, se lo permite. Si no, lo que hace el procesador


cuando encuentra una instruccion de estas, es provocar una "excepcion". Esta
excepcion, tendr su puerta de tarea y un manejador de esta excepcion. Un
"manejador" de excepciones, no es nada mas que un "trozo" de codigo de
programa (normalmente perteneciente al sistema operativo, o implementado por
algun driver), el cual es el encargado real de ejecutar ducah instruccion o
de prohibir su ejecucion.

Por eso, por ejemplo, en windows NT, que tiene virtualizacion completa del
hardware, no podemos realizar ninguna instruccion no permitida, y la mayoria
de juegos basadso en DOS, que intentan acceder al hardware directamente, la
propia CPU no les deja. Se dispara una "excepcion" y el manejador de dicha
"excepcion" se lo prohibe. Recordad que una secuencia mal programada de IN /
OUT directos a un puerto, o bien intentando acceder a un puerto inexistente,
es lo que provoca las caidas de maquina. Un sistema operativo "serio" no
puede dear que se realicen estas cosas (NT, Linux). Un sistema que quiera
guardar compatibilidad ocn el "viejo" MsDOS, por desgracia, no virtualiza
totalmente el hardware, y deja hacer la mayoria de las cosas a casi todos
los programas. Esto es lo que provoca "cuengues" en windows 98 por programas
mal codificados (o mal "educados").

** La pregunta que surge es: si unicamente es un bit, el que "indica" estas


protecciones, facil, por que no lo cambiamos?

Y la respuesta mas facil todavia: porque no se puede. No deja la CPU


ejecutar una instrucccion de este tipo, cuando nuestro programa est en modo
USER. Unicamente el sistema operativo que est en modo KERNEL es el que

65
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

puede ejecutar estas instrucciones privilegiadas. Y ademas si lo intentamos,


se provocar otra excepcion. Y en esa excepcion, el sistema operativo har
lo que considere oportuno: normalmente "matar" a esa tarea.

MODO VIRTUAL 8086


-----------------

Es el tercer modo de funcionmiento del procesador. Simplemente se le d un


espacio de direcciones virtuales de un mega y al poner a trabajar el
procesador en este modo es como si estuviese en modo real. Pero es "como" si
estuviese. No lo est y todas las llamadas podran ser interceptadas por el
sistema operativo.

Pongamos un ejemplo muy claro. Habiamos dicho que la direccion de memoria


grafica para modo texto es el segmento B800. Pues bien, si fisicamente
"ponemos" en la posicion de memoria B800:0000 (una direccion asoluta de
memoria), dos bytes, uno de ellos con los atributos de color y otro con la
letra "A", veremos instantanemanete la letra "A" con el color seleccionado
en la esquina superior izquierda de la pantalla. Es instantaneo, como si la
pantalla fuese una "ventana" a esa direccion de memoria.

Esto es en modo real. Pero la pregunta es como lo hace windows cunado


abrimos una ventana msdos?. Es importante esto, ya que el escribir en esa
posicion de memoria por un probrama, implicara que esa "A" saldra
instantanemante en pantalla. Y no sucede esto, lo vemos, eso s en la parte
superior izquierda de una "ventana" MsDOS que puede estar ademas fisicamente
en cualquier posicion de nuestro monitor.

** Bien, es facil si hemos entendido un poco el mecanismo de memoria


virtual. La solucion es "marcar" esas paginas de memoria como "paginadas" en
la tabla de paginas. Al ir a utilizar esa direccion, como est teoricamente
paginada, ocurres una excepcion del procesador, entra a funcionar el
mecanismo de excepciones, y un manejadro para esta excepcion toma control.
Este manejador "se da cuenta" de lo que queria hacer el programa y en vez de
hacer lo "normal" que es buscar en el fichero de paginacion y traer a
memoria fisica la pagina que falta, lo que hace, es "dibujar" esa "A" que
queriamos en la ventana MsDOS en la esquina superior izquierda.

Parece un poco retorcido..... pero es la unica solucion, y funciona


perfectamente. De cara al programa que se est ejecutando, para el es como
si estuviese funcionando en modo real. Es exactamente lo mismo, pero en vez
de hacer lo que el quiere, se hace lo que quieres el sistema operativo.
Ademas, ese "mega" de memoria, est en cualquier sitio de la memoria fisico,
incluso troceado, da igual. Unicamente windows, construye una tabla de
memoria con las paginas que le interese, lo pone en unos registros del
procesador y cambia a modo virtual 8086.

MULTITAREA REAL
---------------

El concepto de multitarea lo unico que nos incorpora es la posibilidad de


repartir el tiempo en unas unidades muy pequeas, llamadas "quantum", y
ceder el control, consecutivamente y por orden de esa cantidad de tiempo
asignado a cada tarea de la maquina.

Esto nos muestra "aparentemente" que hay varios programas en ejecucion.


Realmente, en cada instante del tiempo, (en cada "quantum", dure lo que
dure), solo hay UN solo programa en ejecucion. Pero en ese quantum, con las
velocidades actuales de las CPUs, se pueden hacer muchas cosas.

66
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Evidentemente, aqu intervienen otros dos conceptos:

1) Intercambio de tareas.

2) Proridad de las tareas.

El intercambio de tareas, es simplemente el guardar el estado de una tarea


cuando ha agotado su tiempo (sus quantums asignados), recuperar el estado de
otra tarea y cederle el control. Normalmente esto se puede realizar por el
hardware de la CPU (existe una instruccion especifica para ello, en "todas"
las CPUs del mercado, incluidos los mainframes). Pero Microsoft en vez de
utilizar el mecanismo hardware, lo hace por software, "a mano". Esto es muy
costos en ciclos de reloj, pero aparentemente, Microsoft no se fiaba, al
menos al principio, de la implementacion de este mecanismo en la CPU por
parte de Intel.

Prioridad de las tareas, es simplemente un numero asignado a cada tarea, que


indica el numero de "quantums" que puede ejecutar antes de que el sistema
operativo tome control y le ceda el control a otra tarea.

* Hay que hacer notar, que una tarea, puede "perder" el control, antes de
agotar su numero de quantums. S esa tarea hace una peticion de entrada /
salida a disco por ejemplo, debido a que esa peticion es muy costosa en
tiempo (estamos hablando de algunos milisegundos), mientras se ejecuta,
evidentemente la CPU puede hacer muchisimas mas cosas. Por tanto el sistema
operativo toma el control y se lo cede a otra tarea.

El sistema operativo, debe ser "listo". Debe jugar con las prioridades de
tarea y variarlas ligeramente. Es cedir, a un programa que hace mucha
entrad/salida, debido a que est poco tiempo en memoria, el sistema
operativo le debera subir la prioridad. En cambio al reves, a un programa
que chupa mucha CPU y no realiza apenas entrada / salida, el sistema
operativo debe bajarle la prioridad al objeto de que no se apodere todo el
tiempo de la CPU.

* Evidentemente, el propio nucleo del sistema operativo debe ser el proceso


de maxima prioridad.

Bien, esta es la teoria de Multitarea REAL. Y esto es lo que realiza win95 /


98 con las tareas de 32 bites.

Pero las tareas de 16 bites, se "inventaron" (heredado de windows 3.1), la


MULTITAREA CORPORATIVA ("preemptive"). Realmente este no es un concepto
informatico. Es un concepto Microsoft. Me explico: en este caso no existe la
"cesion" de una tarea a otra por el tiempo consumido en maquina, sino como
por definicion, las tareas windows, "generalmente" emiten muchos mensajes al
sistema, (funcionan por intercambio de mensajes), cada vez que se emiten por
parte de un programa ciertos tipos de mensaje, el sistema operativo toma
control al recibir ese mensaje y cede en algunos de ellos el control a otra
tarea. Este es el funcionamiento de las tareas de 16 bites. Y evidentemente,
peligrosisimo, ya que si una tarea no emite esos mensajes, y esa tarea est
mal programada y se mete en un bucle infinito, entonces windows se nos
quedar "colgado". No responder ni el teclado.

* Windows 95 / 98, por "herencia", debe permitir ambos tipos de


"multitarea". La REAL para tareas de 32 bites, y la "cooperativa" para
tareas de 16 bites (y recemos, para que realmente "cooperen" esas tareas).
La manera de hacerlo, es crearse una maquina virtual para cada tarea de 32
bites, y otra maquina virtual para "todas" las tareas de 16 bites. Por tanto

67
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

es importante recalcar que TODAS las de 16, comparten la "misma" maquina


virtual.

Esto ultimo implica, que la caida de una tarea de 16 bites, dejar,


probablemente, inutilizado TODA la maquina virtual de 16 bits. Y esto es
importante, porque win 95 / 98 tiene mucho codigo de 16 bites en su nucleo.
Por tanto nos inutilizar, probablemente, parte del sistema operativo,
obligandonos a reiniciar la maquina.

En cambio, la caida de un programa de 32 bites, unicamente, provocar la


caida de esa maquina virtual, y no afecta al resto del entorno windows.
Rearrancando la tarea, esta seguir en funcionamiento. Por ejemplo, la caida
de Word (por lo que sea) no pasa nada, se rearranca word y sigue
funcionando. La caida de una tarea de 16 bites, en el mejor de los casos, lo
unico que sucedera es que esa tarea ya no podremos arrancarla hasta que
reiniciemos la maquina.

EMPIEZA A FUNCIONAR EL WIN.COM PARA CARGAR WINDOWS


--------------------------------------------------

Ahora ya podemos empezar a ver como se realiza la carga.

1) Lo primero que hace windows, es una "fotocopia" de la memoria real en ese


momento. Esta "fotocopia" servir para crear los espacion de direcciones
virtuales por cada ventana MsDOS que queramos utilizar bajo windows
(utilizando el modo virtual 8086 del procesador que hemos visto
previamente).

2) Busca a ver si existe un archivo llamado WINSTART.BAT en el direcotrio de


windows. Si existiese, ejecuta los comandos que all esten, y el resultado
de esta ejecucion lo heredar "toda" la maquina virtual windows. Todo
windows es "otra" maquina virtual (pero en este caso, trabajando en modo
protegido). El "entorno" de esta maquina virtual, es el entorno "despues" de
ejecutar el WINSTART.BAT si este existiese.

Entenderemos por entorno, lo mismo que en MsDOS, es decir las variables de


entorno el path y otra cosa mucho mas importante: las interrupciones en modo
real. Veamos un ejemplo: imaginemos que necesitamos un programa en modo real
que es "residente", que ademas ocupa mucha memoria, y que realmente, al ser
residente, lo que hace es establecer alguna interrupcion en modo real que es
necesaria para el funcionamiento de lo que sea. Este programa sabemos que no
vamos a necesitarlo en las ventana MsDOS, pero que s lo necesita windows.
Entonces para tener la maxima memoria en ventana MsDOS, lo que hacemos es
*no* ejecutarlo en MsDOS y si en el WINSTART.BAT. Por tanto, para MsDOS
tendremos, segun el punto 1), la memoria maxima sin ese programa, y ademas,
dispondremos de los servicios que nos incorpore dicho programa desde
cualquier programa windows (nunca desde las ventanas MsDOS).

Parece que no es practico, pero yo he tenido que utilizarlo. El caso real,


ha sido utilizando NET 1 del gestor de bases de datos Oracle. El Net 1 es un
residente MsDOS. Colocado en el WINSTART.BAT, ya que solo se utiliza desde
los programas de aplicacion windows, tena un ahorro de 64 Kbs en las
ventanas MsDOS. Curioso no?.

Seguro que alguien con imaginacion, podra buscar alguna utilizadad real a
este tipo de funcionamiento en nuestro mundo "casero" del PC. Por si acaso,
es bueno saber que existe....

68
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

3) WIN.COM, pone a funcionar el procesador en modo protegido. Para ello, se


crea una tabl global de direcciones (con los descriptores de segmento vistos
anteriormente) y que tiene posibilidad de acceder a un espacio de
direccionres virtual de 2 Gb. Crea la tabla de paginas, carga el programa
KRNL386.EXE responsable de las funciones y manejos del nucleo de windows y
le cede control.

4) Realmente en este punto de la carga, tres son los ficheros mas


importantes a cargar, y cada uno con sus caracteristicas especiales. Estos
son:

* KRNL386.EXE el cual es el responsable de controlar y asignar todos los


recursos de manejo de memoria, carga de aplicaciones y la planificacion y
ejecucion de tareas.

* USER.EXE crea y mantiene las ventanas en la pantalla. Trata todas las


peticiones de mover, crear, tamao, o cerrar una ventana. Tambien es el
responsable del manejo de los iconos y otro componentes graficos. Ademas es
el responsable de la entrada a las aplicaciones desde teclado, raton o
cualquier dispositivo de entrada.

* GDI.EXE es el "Graphics Device Interface". Es el responsable de ejecutar


operaciones graficas para crear imagenes en la pantalla (y otros
dispositivos).

Estos tres componentes, son todavia componentes de 16 bites. Procesos


"heredados" del windows 3.1.

LOS RECURSOS DE WINDOWS


-----------------------

Tal y como hemos comentado previamente, los componuentes, USER, GDI y KERNEL
que ejecuta windows son de 16 bites. Ademas de estos 3, windows 95 / 98,
carga el USER32, GDI32, y KRNL32 que son los 3 respectivos componentes para
tareas de 32 bites.

Pero por desgracia, los componentes de 32 bites a este nivel, llaman a sus
respectivos de 16 bites "siempre", los cuales son los encargados "reales" de
realizar las tareas.

Veamos un ejemplo. El API es el conjunto de funciones que puede utilizar


cualquier tarea windows para realizar una accion. Por ejemplo "crear una
ventana". Evidentemente hay dos API's una de 16 y otra de 32 (cada tarea,
dependiendo del tipo -16-32-, llama a la correspondiente funcion).

El API del GDI32 tiene los siguientes subcomponentes:

* GDI32 como tal


* Adaptador tipografico TrueType
* Archivos TrueType (usa archivos proyectados en memoria).
* Perfiles de color (usa archivos proyectados en memoria).
* Correspondencia de colores de imagenes (ICM)
* INTERFAZ de salto al subsistema de 16 bites.

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

* GDI16
* Minicontrolador de visualizacion
* Minicontrolador de Impresora

69
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

* Controlador universal de impresora


* Motor DIB grafico
* Visualizacion o Impresora (drivers ya especificos del fabricante).

NOTA (para los puristas): El motor DIB realmente es codigo de 32 que se


ejecuta con una vista de 16 bits (segmentada) de la memoria del sistema, por
lo que por ejemplo el codigo hace uso de las instruccciones rapidas del 386
para las operaciones de transferencia de memoria. Hay una cantidad
considerable de trucos implicados en la manipulacion eficiente de
direcciones, pero permiten que las aplicaciones existentes de 16 bits puedan
realizar las mejoras de implementacion del nuevo motor DIB. Si el motro DIB,
se colocara en el lado de los 32 bits, o bien el modilo GDI de 32 tendra
que reproducir muchas de las funcionalidades del de 16 o bien el motoe GDI
incurriria en mucha sobrecarga de ajuste volviendo a llamar al lado de 16
bites.

** Bien, una vez "matizado" este comportamiento, vemos que por desgracia,
windows 95 / 98, se apoya (por mantener compatibilidad total) sobre los
subsistemas de 16 bites.

** Y ahora para los programadores (o quien haya seguido con atencion estos
capitulos): cual es el segmento mayor que se puede poner en una tarea de 16
bits?: facil 2 elevado a 16 o sea 64 Kbs de memoria. Por tanto el tamao de
la "pila" ("heap", monton), maximo que puede utilizar una tarea de 16 bites
es 64 Kbs. Pues bien a ese "pequeo" espacio de memoria y que ademas es
INDEPENDIENTE del numero de megas de nuestro PC (por diseo), es lo que se
le llama RECURSOS. Por tanto, hay tres "pilas" de recursos (correspondiente
a los tres programas principales del nucleo: USER, GDI y KERNEL. Estos
recursos libres los podemos ver ejecutando el programa RSRCMTR.EXE del
directorio de windows).

Por desgracia, todas las llamadas a funciones de esta API, que nos vayan
creando "objetos" (asignacion de memoria, iconos, ventanas, etc...),
consumen una pequea cantidad de esta "pila". Lo grave es que si nos
quedamos sin alguno de los recursos, tenemos muchas posibilidades de que
windows se "caiga" -nos intenta enviar un mensaje, pero puede ya caerse en
cualquier momento-)

** Evidentemente esto es un comportamiento heredado. Windows NT y el futuro


windows 2000, no tienen esta limitacion de recursos, debido a que TODO el
codigo de este estilo es de 32 bites "puro".

Contra el consumo de estos recursos, no hay solucion. Ademas, lo "grave" del


tema, es que es responsabilidad del programa que "consume" recursos, el
liberarlos. Por tanto un programa mal codificado (mal diseado), o que
termina anormalmente, nos dejar recursos "gastados" en la pila, que no se
recuperarn hasta que reinicimos windows.

DIAGRAMA DE PROCESOS DE WINDOWS


-------------------------------

Anteriormente habiamos vistos los diferentes modos de funcionamiento del


procesador para la proteccion de las tareas. Desde modo 0 (nucelo o kernel)
a modo 3 (usuario). Y podiamos imaginarlos como anillos concentricos (el mas
interior el cero y el mas exterior el 3).

El cero era quien tenia control absoluto de la maquina y suele corresponder


al "nucleo". Si algun programa o modulo, "falla" en modo kernel,
practicamente seguro que nos podemos despedir de windows: a reiniciar la

70
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

maquina.

El modo cero tiene ademas control absoluto sobre los otros maods. Por tanto
si se cae cualquier proceso de los otros modos es capaz de "rearancarlo". Es
decir: simplemente no pasa nada.

** El tema para los diseadores de cualquier sistema operativo, es que


ponemos en modo kernel y que ponemos en el resto de modos hasta llegar al
modo 3 -usuario-? Hay que tener presente, que la "transicion" o saltos de
modo, son operaciones muy costosas en tiempo Y deben realizarse lo menos
posible. Por otra parte, por motivos de eficiencia, es mejor poner las cosas
en modo 0. como se nivela la balanza? perdemos seguridad frente a
estabilidad?

Este es el gran dilema. Por ejemplo puedo comentar que en su dia, cuando se
diseo windows NT 4, fu muy criticado debido a que meti dentro del nucleo
(modo cero) el GDI (las versiones anteriores no lo tenian as). Esto fue por
razones de eficiencia del sistema. Pero peligroso: un programa que utilizase
mal el GDI, ahora ya podia "tirar" al sistema. Es decir, a veces hay que
tomar deciones de diseo "peligrosas".

** Como es entonces la estructura de win 95 / 98?

1) Se decidi utilizar unicamente los anillos 0 (kernel) y 3 (user)

2) En el anillo 0 se incorporan dos subsistemas:

* Subsistema Administrador de maquina virtual con:


* Servicios de Gestion de memoria
* Planificador
* Servicios VxD y cargador dinamico
* Administrados de maquinas virtuales MSDOS
* Controladores (teclado, video, raton, comunicaciones...)

* Subsistema de gestion de archivos con:


* Administrador del sistema de archivos instalable(IFS)
* FAT de 32 bits
* Sistema de archivos CDROM
* Redirectores de red
* Subsistema de E/S por bloques

3) En el anillo 3, se ejecutaria tano la maquina virtual del sistema como


todas las maquinas virtuales MSDOS (una por cada ventana MSDOS que tengamos
abierta). En este maquina virtual del sistema existe un espacio virtual de
direcciones compartidos por todas las tareas que son:
* Servicios del sistema: Nucleo, Usuario, GDI
* Subsistema de 16 bits.

Y luego se crearia un espacio virtual de direcciones "diferente" para cada


tarea de 32 bits. Es decir en un espacio virtual de direcciones de 32 bits
se pueden direccionar 4 Gb de memoria virtual. Los 2 primeros gigas son
comunes a todas las tareas y corresponden a zonas del sistema operativo. Un
guga ms (hasta los 3 gigas) es para el espacio de direcciones compartido de
las tareas de 16 bits, y desde los 3 a los 4 gigasm es "diferente" para cada
tarea de 32 bits. Por tanto una "caida" de una tarea de 32 bits no es nunca
critica para el sistema.

** Con todo este "rollo" hemos terminado de ver un poco las "tripas" de
windows, y quiz ahora entendamos un poco ms de como, cuando y porqu
windows puede sufrir una "catastrofe". Vamos a pasar ahora a ver ya la carga

71
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

completa de windows.

WINDOWS CONTINUA CARGANDOSE


---------------------------

** La carga detallada de todos los drivers y dispositivos que windows


maneja, podemos verla en detalle si al arrancar windows hacemos que nos
"cree" un fichero de historia de la carag (un fichero LOG).

Para crearlo, debemos arrancar con la tecla CTRL pulsada, y cuando nos saque
un men, pulsar MAY+F8 y darle al INTRO. Nos ir pidiendo confirmacion de
linea por linea para su ejecucion, tanto del config.sys como del
autoexec.bat como algunos drivers de windows. Le damos a todo que s.

Cuando ya estemos en windows, abrimos una ventana MsDOS y tecleamos:

c:
cd \
type bootlog.txt > boot.txt

* Con esto hemos creado un fichero llamado boot.txt en el directorio raiz de


nuestro disco duro. Podemos abrir con Notepad por ejemplo dicho archivo y
vermos todo lo que iwndows nos ha cargado.

EN CASO DE PROBLEMAS AL ARRANCAR WINDOWS


----------------------------------------

** Este fichero, nos puede "salvar" la vida mas de una vez. El proceso que
he descrito anteriormente es igualmente valido si windows "se niega" a
arrancar y se cuelga en el arranque. En este caso, el proceso a seguir es
similar, pero con una matizacion.

1) Arrancamos con la tecla CTRL pulsada y luego damos MAY+F8. Le damos a


INTRO, y le confirmamos a windows cada linea.
2) Si habia problemas al arrancar, los seguir habiendo, por lo que windows
se "colgar" de nuevo.
3) Volvemos a arrancar con CTRL pulsada y uando sala el men, le damos a la
opcion de "solo sinbolo del sistema a prueba de fallos". Es importante esto,
para no perder el contenido del bootlog.txt, ya que sino se volver a
"machacar" en esta arrancada. Otra posibilidad es arrancar con el disco de
Inicio de win98 en este momento. As seguro que no lo perderemos.
4) Una vez estemos en el simbolo del sistema, tecleamos:

c:
cd \
attrib boot.log.txt -s -h -r
copy bootlog.txt boot.txt

(hemos variado ligeramente la secuencia aqu. Simplemente porque si


arrancamos en solo simbolo del sistema a prueba de fallos, el mapa de
teclado no estar cargado y es dificil encontrar el simbolo ">". De todas
maneras las lineas de comandos anteriores, son iguales a las citadas en la
parte anterior de este capitulo).

De esta manera, ya tendremos el fichero de arranque. La ultima linea de ese


fichero, nos dar el nombre del controlador que nos est causando el
"cuelgue" de windows. A vece simplemente, buscando ese archivo y
renombrandolo, ya podremos arrancar. Quiz con errores, pero podremos
arrancar.

72
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

** Debemos recordar, que si los problemas surgen despues de instalar


cualquier driver o nuevo software, windows, nos d una excelente herramienta
para intentar recuperar la situacion anterior. La herramienta es el SCANREG.
Veamos las posibilidades que pueden sucedernos despues de una instalacion de
drivers, u otro software erroneo.

1) Este software ha sido LIMPIO y no ha machacado ninguna DLL o driver


esencial para windows.

2) Ha habido "machaque" de DLLs en windows.

Bien veamos las alternativas para recuperar nuestra situacion anterior y


poder iniciar windows:

** En el caso 1) puede normalmente hay dos situaciones tambien.

a) Que el instalador haya machacado el registro de windows, incorporado


claves, o borrado claves fundamentales.

b) Que ademas haya instalado alguna VXD "peligrosa" (muy corriente esto
ultimo). Las VXD son peligrosisimas en caso de estar mal realizadas. Hay dos
posibilidades para que windows las cargue: o bien las "referencia" en el
registro, o bien en el caso de que el nuevo producto instalado, las deje en
c:\windows\system\iosubsys windows cargar de ese directorio automaticamente
todas la VXD que all se encuentre.

** En el caso 2) existen dos situciones tambien:

a) El instalador ha machacado el registro de windows.

b) Se han substituido componenetes de windows.

** En cualquiera de los casos, debemos fijarnos, que "casi" siempre "toca"


el registro. Lo primero sera recuperar dicho registro. Esto es facil.

Windows 98, conserva por defecto una copia del registro de los ultimos 5
dias que hemos arrancado el PC. Esta copia la realiza la primera vez que
arrancamos el PC en el dia (por eso, la primera arrancada del PC en el dia,
es algo mas lenta que el resto de veces que arranquemos en ese dia).
Igualmente windows nos d una herramienta para reciperar el registro: el
SCANREG.

SCANREG
-------

Para utilizarlo, arrancamos con CTRL pulsada, y cuando nos saque un men,
seleccionamos "Solo Simbolo del Sistema". All tecleamos:

scanreg /restore

Nos mostrar una lista de las ultimas 5 copias del registro. Seleccionamos
la del dia que queramos recuperar (recordando que ha sido realizada la copia
al inicio de dicho dia, por tanto si nos acaba de suceder el problema,
podemos recuperar la de ese mismo dia), y recuperamos el registro.

Recordad tambien, que existe un fichero llamado scanreg.ini en el directorio


de windows, en donde podemos personalizar el numero de copias, y otras
opciones de esta herramienta.

73
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

** Bien, de esta manera ya tenemos recuperado el registro.

*** Pero puede ser que windows siga sin arrancar (o con pantallas azules).
Esto suele ser debido a que se ha copiado alguna VXD que impide el arranque
en el directorio c:\windows\system\iosubsys. Debemos intentar localizarla y
renombrarla con alguna "extension" diferente a VXD (si no termina en VXD,
windows no la cargar). Mi consejo es controla este direcotorio. Conviene
tener una lista de las VXD que windows monta en l. Y vigilar despues de
cada instalacion, si se ha montado una nueva y apuntarla.

En este punto, si aparecen nuevas VXD y seguimos con problemas, es necesario


enombrarlas o borrarlas. Como "pista", sino tivuesemos las VXD apuntadas,
nos puede servir que windows al instalarse (win 98 "normalito", deja como
decha de sus archivos el 15/05/98. Por tanto, "en principio" los que no
tuviesen esa fechas, son candidatos que que los renombremos (su extension)
para intentar arrancar.

** En esta situacion, windows ya arrancar. Ahora debemos intentar


"recuperar" los posibles ficheros que la instalacion erronea nos haya
dejado. Para ello, tenemos otra herramienta, ya bajo windows. Es el SFC.
Debemos ejecutar este programa desde Inicio->Ejecutar.

Debemos arrancar el SFC y darle en el boton "opciones", y verificar que


esten marcados los casilleros de "Ver ficheros borrados" y "Ver ficheros
cambiados". Cuidado, porque por defecto, windows, no tiene marcadas dichas
opciones.

Al ejecutar, comprobar la version de DLL o driver, etc, que existe en la


actualidad con la que windows tiene registrada. Si son diferentes, nos
mostrar la version anterior que tenia y la actual. Debemos guiarnos aqu
por el numero de version (no por la fecha) del archivo. Si el numero de
version del fichero actual es inferior a la que tenia windows registrada
anteriormente, debemos recuperar ese fichero. Esta herramienta nos lo
permitir.

Mi consejo para un correcto funcionamiento del SFC es lo que vamos a ver a


continuacion.

SFC
---

SFC : System File Checker. Es un programa SFC.EXE que reside en el


directorio windows/system.

La primera vez que lo ejecutamos (Y DEBERIA SER NADA MAS INSTALAR W98), crea
una base de datos con loas versiones de todos los programas y Dlls de tu PC.
Si es nada mas instalar, justo son las de win 98.

Una vez ejecutado, debemos entrar en configuracion y marcar las DOS ultimas
casillas, de verificar ficheros borrados, etc......

Posteriormente, cada vez que lo ejecutemos compara su base de datos con las
versiones que tienes monstadas en ese momento. Si difieren nos permite, bien
actualizar sus datos, o RECUPERAR desde los ficheros de instalacion de W98.

Es quiz la herramienta mas potente de control de w98. Nos sorprender el


ver que cuando instalamos software de terceros, las "guarradas" que hace con
las DLLs de windows. Despues de unas cuantas instalaciones, nos
preguntaremos como es que el windows sigue funcionando.

74
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

** Llegado a este punto, hemos hablado varias veces del registro de windows.
Conviene ahora hablar un poco mas en detalle. El registro es el 50% de
windows (segun la propia definicio de Microsoft). Por tanto debemos ser
"cariosos" con el.

REGISTRO DE WINDOWS 95 / 98
----------------------------
El registro, presenta de forma jerarquizada toda la informacion que windows
y el resto de las aplicaciones escriben en l.

Sustituye a los antiguos ficheros INI en los que cada aplicacion escribia
por separado.

El registro principal (visible con "regedit"), consta de 6 claves


principales. Cada clave puede contener datos, llamados "valores" y a su vez
puede contener subclaves adicionales. Su vision se asemeja a la vision de un
disco desde el explorador, con ficheros (valores) y carpetas (subclaves),
que a su vez pueden contener mas ficheros y mas carpetas.

Claves generales:
------------------

HKEY_LOCAL_MACHINE: Informacion de los componentes hardware instalados.


Configuracion del software de la maquina. Esta clave es "comun" para todos
los usuarios de la maquina.

HKEY_CURRENT_CONFIG: Apunta a una rama de HKEY_LOCAL_MACHINE\CONFIG que


contiene informacion sobre la configuracion "actual" del hardware.

HKEY_DYN_DATA: Apunta a una rama de HKEY_LOCAL_MACHINE que contiene la


informacion dinamica del estado de los dispositivos. as como toda la parte
de PnP. Esta informacion es cambiante seguna se aaden o quitan dispositivos
al sistema. Ademas incluye informacion sobre el estado actual de los
dispositivos, as como de los posibles problemas.

HKEY_CLASSES_ROOT: Apunta a la rama de HKEY_LOCAL_MACHINE que contiene


ciertas configuraciones de software. Esta clave muestra los mismos datos que
estaban en windows 3.1 -informacion del OLE y asognacion de operaciones de
arrastrar y soltar, y ciertas abreviaturas que de echo son vinculos OLE.
Igualmente contiene la descripcion del interfaz de usuario.

HKEY_USERS: Contiene la informacion de TODOS los usuarios que se han


conectado a la maquina. Incluye tanto la informacion generica (.DEFAULT)
como la especifica de cada usuario. La configuracion general est disponible
para todos los usuarios. Esta clave, contiene subclaves con el nombre de
cada usuario y su perfil que se ha conectado a la maquina.

HKEY_CURRENT_USER: Esta clave apunta a la rama HKEY_USERS para el usuario


que est en ese momento conectado.

*******Vamos a empezar a describier, las ramas mas importantes de cada una


de ellas:
-----------------------------------------------------------------------

HKEY_LOCAL_MACHINE
===================

75
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

CONFIG : contine la informacion de las distintas configuraciones hardware de


la maquina. Puede tener las configuracion que tiene el PC, cuando est
conectado a una red, cuando no lo est, cuando quitamos una tarjeta,....etc.
Cada configuracion posible tiene asignado un identificador unico Este
identificador de la configuracion tiene una subclave bajo la clave "config".
Cada configuracion, aparece en la lista de "perfiles" de hardware en la
opcion Sistema del Panel de Control.

En la mayoria de las situaciones, el identificador de configuracion est


asignado a una configuracion unica. Normalmente casi nadie tiene varios
"perfiles" de hardware definidos y arranca con uno u otro. Lo normal para
los usuarios domesticos como nosotros es una unica configuracion. Pero no
debe perderse de vista que es posible una configuracion "multiperfil" y que
windows es capaz en la arrancada de solicitarnos que perfil de hardware
queremos.

ENUM : Los "enumeradores" de bus de windows son los que aqu construyen el
arbol del hardware. Se asigna un codigo unico de identificaion para cada
dispositivo.

Las sibclaves contiene informacion sobre el tipo de dispositivo, la letra


asignada a la unidad, por ejemplo. El fabricante y ademas la informacion de
la los controladores de los componente de la RED.

Tipicamente, dentro de esta clave se enumeran:


ESDI : Dispositivos de disco Fijo
FLOP : Dispositivo de disco flexible.
ISAPNP : Dispositivo PnP ISA
MONITOR : Monitores
NETWORK : Protocolos, serivios y vinculos de red.
ROOT : Dispositivos legados (no PnP)

Evidentemente si miramos en nuestra clave de registro, nos encontraremos con


otras subclaves que continene al menos las anteriores, ms las
caracteristicas genericas de nuestra maquina. Pensar que los equipos
actuales con ACPI, y las funcionalidades que hoy dia estan presentes,
tambien las encontraremos en la descripcion del hardare como subclave.

SOFTWARE : Contiene la informacion de configuracion sobre el software


instalado. Estas entradas se aplican a "cualquier" usuario conectado a esta
maquina. Contiene las definiciones para asociacion de archivos e informacion
OLE.

Esta rama, contiene varias subclaves, incluyendo la subclave "Classes",


ademas de las subclave "description" para todo el software.

Subclaves principales:

CLASSES: Describen todo tipo de documentos y dan informacion sobre OLE


y asociaciones de extensiones a archivos que pueden utilizar aplicaciones.
HKEY_CLASSES_ROOT no es nada ms que una "alias" de esta subclase. Aqu
estan contenidas dos tipos de subclaves.

* Subclases extensiones de archivos, que especifican la definicion de clase


asociada con el archiv que tiene la extension seleccionada.
* Claves de definicion de clase, en donde se especifican las propiedades OLE
y de la interfaz de ordenes de una clase de documento. Si una aplicacion
permite DDE (intercambio dinamico de datos), la subclase "Shell" puede
contener subclaves "Open" y "Print" que definen las ordenes DDE.

76
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

DESCRIPTION: Esta subclave contiene los nombres y numeros de version


del software instalado. La informacion especifica de usuario sobre la
configuracion se alamcena en el camino logico relativo bajo
HKEY_CURRENT_USER.

La informacion en cada subclave la aade cada nueva aplicacion al


instalarse.

Durante la instalacion, las aplicaciones graban con el siguiente formato:

HKEY_LOCAL_MACHIME\SOFTWARE\Nombre_de_compaia\Producto\Version

Evidentemente, el propio Microsoft, graba aqu una clave llamada:

HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT

y dentro de ella una subclave llamada WINDOWS\CurrentVersion la cual es


importantisima ya que es el "nucleo" de windows.

La subclave SETUP que cuelga de la anterior, es usada internamente por


windows durante su arranque.

SYSTEM : Contiene los parametros completos para los controladores de


dispositivos y servicios que son cargados en windows. Todos los datos que
controlan el arranque de winwdows estn aqu. Este conjunto tiene a su vez
dos partes:

CONTROL
SERVICES

Vamos a ver un poco mas con detalle estas ultimas ramas.

CONTROL: Contiene parametros de arranque del sistema, incluyendo las


configuraciones de arranque y apagado, rendimientos, esquemas de teclado,
idiomas, etc.... Subclaves tipicas dentro de el son:
ComputerName; Nombre del PC
FileSystem: Tipo y configuracion sistema de archivos
IDConfigDB: Identificacion de la configuracion actual
Keyboard layouts: Lista de DLLs para el idioma del teclado
Media Resources: Informacion de los componente multimedia
Network Provider: Descripcion de los proveedores de RED
NLs : Informacion sobre los lenguajes nacionales permitidos
PerfStats: Estadisticas que se ven en "monitor del sistema"
Print: Impresoras actuales y sus entornos de impresion
Session Manager: Variables globales y lista de programas
problematicos.
TimeZonInformation: Configuracion de la Zono Horaria
Update: Tipo de instalacion
VMM32: Los nombres de las VXD que se han combinado para genera el
controlador de dispositivos virtuales VMM32.VXD (esto depende de cada
maquina, y se "combina" o genera al instalar windows).

SERVICES: Presenta la lista de controladores del Nucleo, controladores


de sistemas de archivos y controladorea de los servicios que pueden ser
cargados al iniciar windows. Subclaves tipicas dentro de el, son:
Agent_name: Subclaves para cada agente del sistema instalado
(Monitor de Red, SNMP, etc....)
Arbitrators: Arbitros para administrar recursos entre dispositivos
competidores (arbitros de direcciones, DMA, E/S e IRQ)
Class: Definidos aqui "todas" las clases de dispositivos que

77
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

permite el sistema operativo (discos, monitores, ratones....)


MSNP32,MWNP32: Subclaves para la RED en modo protegido de 32 bit,
incluye informacion sobre el acceso y los proveedores de seguridad.
VxD: Controladores virtuales (VxD) que se cargan en el inico de
windows. Independientemente de estos se carga SIEMPRE todas las VxD que se
encuentran presentes en el directorio IOSUBSYS.

============================================================
Con esto se finaliza la clave HKEY_LOCAL_MACHINE.

**** Es importatisimo volver a resaltar que las claves:

HKEY_CURRENT_CONFIG
HKEY_CLASSES_ROOT
HKEY_DYN_DATA

que nos muestra el programa regedit, no son mas que "alias" de otras
subclaves del mismo nombre de HKAY_LOCAL_MACHINE, por lo que modificando
cualquiera de ellas, (el alias o la original), se modifican ambas.

Esto muchas veces es causa de confusion, ya que vemos informacion que


aparentemente est duplicada.
================================================================

La otra (unica) clave real ademas de HKEY_LOCAL_MACHINE, es HKEY_USERS ya


que realmente la clave HKEY_CURRENT_USER es un alias que apunta en ese
momento al usuario actual que est contenido en HKEY_USERS.

HKEY_USERS contiene la subclave .Default ademas de todos los perfiles de


usuario previamente cargados por los usuarios que han accedido. La
informacion de .Default, se usa para crear un perfil de usuario que ha
accedido sin perfil de usuario personal.

La subclave .Default contiene claves para AppEvents, Panel de Control,


teclados, red, y software......etc.

================================================================

Esta es la estructura de la base de registro. Evidentemente est accesible


tanto a windows como al resto de programas. El problema surge cuando algun
programa no es "respetuoso" y empieza a machacar claves de otros.

Hay que recordar que el registro es la base del funcionamiento de windows.


Sin el registro windows es incapaz de funcionar y con el registro daado,
nos podremos encontrar cualquier cosa. Por ello, aconsejo no utilizar
NINGUNA utilidad para mantener el registro. Unicamente debemos utilizar la
potencia que nos d "scanreg" para recuperar en caso de problemas.

Y nada ms... por ahora.... ya que el "resto", cada clave en particular,


depende del program que lo ha instalado. Y si ha sido el propio windows
CUUIDADO !!, ya que en este caso, puede depender de la version de la DLL
responsable de esa clave. Por ello, hay que tener cuidado al dar soluciones.
Lo que es solucion para una persona ante un determinado problema, puede no
serlo para otra, ya que por ejemplo puede tener una version superior de los
componentes. (por ejemplo: problemas con ODBC. Una modificacion para el ODBC
estandar que viene con w98, puede funcionar correcto a un usuario, y puede
destrozar, la misma clave, a otro que ha instalado por ejemplo VisualStudio,
ya que este ultimo componente, reinstala completamente otra capa ODBC).

BREVE RESUMEN DE LA CARGA DE DISPOSITIVOS Y USO DE WIN.INI Y SYSTEM.INI

78
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

-----------------------------------------------------------------------

Bien, analizando el bootlog.txt podemos observar la secuncia de carga de los


dispositivos de windows. Basicamente podemos resumirla:

1) Carga de los interface con un pocible sistema de red en modo real (las
antiguas redes basadas en MsDOS).

2) Carga de la maquina virtual Java, de los enumeradores de dispositivos y


del Mininucleo de NT que viene incorporado en windows 98 a lobjeto de poder
tratar ya los drivers del tipo WDM (Windows Driver Model), as cono el
control de los dispositivos USB.

3) Instalacion de los subcomponentes del sistema de archivos en modo


protegido (FAT 32, sistema de CDROM, soporte al fichero de intercambio,
soporte al subsistema Virtual 8086)

4) Carga e inicializacion del subsistema de RED.

5) Carga de "enumeradores" de dispositivos, estos son capaces de detectar y


"enumerar" los dispositivos de nuestra maquina.

6) Carga de los dispositivos *.386 que tengamos definidos en la seccion


[386enh] de nuestro system.ini (ninguno es necesario, si tenemos all
dispositivos definidos, es porque algun software, y sobre todo "viejo"
software de windows 3.1, nos lo ha instalado)

7) Carga de soporte al ratn.

8) Carga del resto de dispositivos virtales de windows.

Hasta este punto, unicamente se ha realizado la carga y no la inicializacion


completa de estos dispositivos.

9) Inicializacion de las secciones criticas de los dispositivos anteriores.

10) Los enumeradores, empiezan detectar los dispositivos. Primero los


dispositivos "legales" (no PnP)m y posteriormente los legales (PnP), y se
van inicalizando los drivers de dichos dispositivos. En este punto *no* se
cargan todavia los controladores minipuerto (.mpd).

11) Se cargan e inicializan todas las VXD existentes en el directorio


c:\windows\system\iosubsys. Es peligroso en este moemnto la inicializacion
de la maquina. Alguna de estas VXD puede ser la causante de pantallas azules
y "cuelgue" de windows en este momento. Debemos vigilar este directorio y
tener anotadas las que windows nos ha instalado. Posteriormente cuando
instalemos software de terceros, vigilar que VXD os puede poner all, por si
el sistema no arrancase, o a partir de ese momento, sacase pantallas azules.

Las VXD son muy "golosas", ya que se ejecutan en el anillo cero (en modo
kernel) de la maquina y por tanto tienen control absoluto sobre ella. Por
tanto un programa de aplicacion podra comunicarse con "su" VXD y tener
control de la maquina. Por estar en el anillo 0, son muy peligrosas. Una VXD
mal codificada, nos causar pantallas azules aleatorias, o incluso que
windows no llegue a arrancar.

12) Se inicializa el subsistema de entrad / salida y el subsistema de


paginacion. Iguallmente se inicializa en este punto el ACPI si existiese.

13) Se enumeran el resto de dispositivos ACPI y se cargan sus controladores.

79
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

14) Se cargan todos los dispositivos virtuales contenido en el kernel de


windows. Monitor, e inclusive el soporte multimonitor.

15) Se cargan los controladores de minipuerto. Esta carga realmente activar


ya todo el sistema controlador de un dispositivos de Mass Storage (es decir
de un dispositivo de almacenamiento en disco o minipuertos de las tarjetas
SCSI. Estos minipuertos, estan realizados y son responsabilidad del
fabricante del dispositivo).

En este punto se carga entre ellos el ESDI_56.PDR. Este es el controlador


especial (de Microsoft) para las controladoras IDE-ATAPI. Este controlador
es generico para todo el acceso a IDE, pero es totalmente dependiente a la
informacion de los dispositivos en el registro. Es decir, el controlador el
mismo, pero hace caso a los datos del registro que han sido cargados con el
.INF del dispositivo. Por tanto un -INF erroneo, ser el causnate de que el
sistema no nos arranque y se quede colgado en este punto.

Igualmente, puede suceder un "cuelgue" en este punto al cargar algun .mpd


(miniport) de algun fabricante de hardware. Si es as, debemos arrancar en
modo a prueba de fallos y eliminar el dispositivo. Si no nos dejase tamoco,
podemos buscar el mpd (normalmente en c:\windows\system\iosubsys), y
simplemente borrarlo a mano. Posteriormente ya podremos darlo de baja en el
Administrador de dispositivos.

16) Con estos drivers, ya se finaliza el reconocimiento de dispositivos y


todos sus enlaces. Por tanto se vuelven a inicializar ya todas las capas
correspondiente y todo el "circuito" queda cerrado.

17) Se termina ya la carga de los controladores de fabricante, de teclado y


raton (dispositivos de entrada).

18) Se prepara la inicializacion del GDI. Se carga primero el GDO de 16


bits, y los controladores de DIBENG. Posteriormente se carga GDI 32. Y se
cargan los fonts basicos de windows.

19) Se cargan los modulos USER y KERNEL (tanto de 16 bits como de 32).

20) Se inicializan ya los controladores de display y se cargan los fonts


correspondientes al display. En este momento, ya se "enciende" el fondo del
escritorio de windows.

21) Se enumeran los dispositivos en los puertos serie. Reconocimiento


entonces de los posibles modem PnP en dicho puerto.

22) Se enumeran los dispositvos de Floppy y el sistema de deteccion de


dipositivos de Cinta de Backup.

** En esta carga se ha tenido presente tanto la informacion del regstro as


como la informacion contenida en el system.ini (y parte del win.ini).

Siendo "puristas" tanto el win.ini copo el system.ini no deberan existir y


solamente por motivos de compatibilidad tendran sentido. Esto es la teoria.
Realmente no es as. Si los eliminamos, windows no nos arrancar. Y esto es
debido a todo el subsistema de 16 bits que posee windows y que basicamente
se centra en el modulo GDI. Todo el acceso a las funciones graficas (cuyo
responsable es el GDI), se realiza "siempre" a traves del GDI de 16 bits.
Aunque nuestra tarea sea de 32 bits, al fina e GDI 32, invova la de 16, y
este al resto de subsistemas graficos. Evidentemente esto implica que los

80
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

drivers de nuestra tarjeta grafica son de 16 bits (SIEMPRE).

** Es importante un par de secciones del SYSTEM.INI.

* [386enh] Es donde se pueden cargar mediante la linea device=, los


dispositivos virutales de windows. En general, lo utilizan antiguos
programas windows 3.1 para incorporar los .386. Estos eran los antecesores
de los nuevos archivos VXD. Realmente los .386 son tambien dispositivos
virtuales.

Debemos vigilar esta seccion en caso de problemas con el arranque de


windows. Si vemos algun dispositivo .386 en esta seccion, debemos saber que
*no* corresponde a windows, sino a algun software de terceros. Para ver si
este fuese el responsable de nuestro problemas, podemos deshabilitarlo
temporalmente, poniendo un ";" (punto y coma) por delante de la linea
correspondiente. El ";" transforma la linea en una linea de comentario, y
por tanto windows no lo cargar.

* [mci] Esta seccion hay que vigilarla tambien "con cario". Esta est
totalmente heredada de windows 3.1 y corresponde a los dispositivos de
captura de video y audio (y su manejo). Por tanto cualquier problema con
captura de imagen e incluso con tratamiento de imagen, puede tener su causa
en esta seccion. En particular, los problemas con el QuickTime anterior a la
version 3, son provocados por un controlador introducido en esta seccion. Es
otra seccion candidata a tener una copia y que la vigilemos despues de cada
instalacion.

* Por ultimo, debemos recordar que existe un par de lineas en el win.in con
la instruccion load= , o run=.
Estas instrucciones son totalmente heredadas de windows 3.1. All en windows
3.1 era donde se especificaba la carga de algun programa o servicio, que
ahora en windows 95 / 98 se especifica ya en el registro. Por tanto no debe
tener contenido dichas instrucciones. Si lo tuviesen, es que realmente s
que hemos intaldo algun "viejisimo" programa de windows 3.1, y por tanto,
casi, casi seguro que nos causr algun problema. Estas lineas son otros
candidatos a mirar en caso de problemas.

CARGA DE PROGRAMAS EN EL INICIO


------------------------------

* Este es un tema por el cual se pregunta muy a menudo, y tambien muy a


menudo las respuestas aunque sean verdad son incompletas.

Existen varios sitios, en los que un programa de instalacion, puede dejar


"orden" a windows para que arranque un programa al iniciarse windows. Estos
puntos son (algunos muy evidentes):

1) En el grupo: Programas->Inicio

2) En las lineas load= o run= de fichero win.ini que reside en el directorio


de windows. (las viejas aplicaciones 3.1, lo dejaban all).

3) En el registro. Podemos abrir con el programa "regedit" el registro, y


verificar la clave:

HKEY_LOCAL_MACHINE
Software
Microsoft
Windows
CurrentVersion

81
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

y dentro de esta ultima, podemos localizar las claves: Run y RunServices.

En cualquiera de ellas puede mandarse la ejecucion de un programa. La


diferencia teorica entre ellas es que en la primera (en Run), es para
ejecutar un programa como "tarea", y en la segunda es para ejecutarlo y
registrarlo como "servicio". Este concepto es importante en windows NT, en
win 95/98 tiene poco sentido ya que el propio programa es el que permanece o
no como servicio. Pero siendo puristas y por mantener una definicion
correcta de tarea y servicio, se debe hacer as.

4) Tambien en el registro, y esta suele ser la clave "desconocida", puede


hacerse en:

HKEY_CURRENT_USER
Sotfware
Microsoft
Windows
CurrentVersion

y all, pueden existir igualmente las claves Run y RunServices. Pero....

5) Realmente la clave anterior, "no existe". Sino que es una "vista" en ese
momento de una clave rea lque s que existe en el registro. Esta es:

HKEY_USERS
.DEFAULT
Software
Microsoft
Windows
CurrentVersion

Por tanto es en esta calve, si, existien las subclaves Run y RunServices,
donde deberemos tocar.

6) Debe tomarse nota, que en sistemas multiperfiles, podran exisitr claves


por usuario, colgando de la clave HKEY_USERS. Por tanto debern verificarse
tambien dichas claves si existiesen.

OTROS TRUCOS - OBTENER LA MAXIMA MEORIA MSDOS BAJO WINDOWS


----------------------------------------------------------

Recordando los capitulos anteriores, ya sabemos como conseguir memoria


"estendida" (HIMEM.SYS), "expandida" y marco de pagina (EMM386.EXE), y por
tando y con las directrices DOS=UMB,HIGH poder utilizar el maximo de memoria
en DOS.

Pero... curiosamente cuando entramos en windows y damos el comando mem /d/p


vemos que no tenemos memoria "alta" (UMBs) disponibles.

Recordemos un poco el mapa de memoria "fisica" del msdos. Hasta la direccion


'A000' de memoria son los primeros 640 Ks. Mejor graficamente:

0000
.....
9FFF 640 Ks
A000 Memoria grafica de video -64 Ks- marco de mapeo al video
B000 Memoria para pantallas de texto (monocromo) -32 Ks-
B800 Memoria para pantallas de texto (color) -32 Ks-

82
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

C000 ROM BIOS de la tarjeta de video -32 Ks-


C800 LIBRE ? -96 Ks- !!!!!!
E000 Marco de pagina memoria EMS (si tenemos activo ENN en EMM386)
F000 ROM BIOS de la placa madre
FFFF 64 Ks ms donde el dos carga parte de l (DOS=HIGH)

Bien lo anterior es una configuracion estandard con EMM386 y memoria EMS y


la instruccion DOS=HIGH,UMB

(sino se ha entendido hasta aqu, por favor repasar los capitulos


anteriores).

Matizo que es una configuracion "standard". Es decir, si no tenemos otras


tarjetas (SCSI, de red, etc...) que tengan ROM BIOS. Si tuviesemos esas
tarjetas, la direccion libre en vez de empezar en C800, empezaria mas tarde
y tendriamos menos espacio libre. Ya veremos como puede saberse esto.

Adems, en el EMM386, podemos incluirle la linea I=B000-B7FF para poder


utilizar la memoria de los antiguos adaptadores graficos monocromos (otros
32 Kbs). **** ATENCION: esto unicamente sino utilizamos "multimonitor". Si
lo utilizasemos, NO SE PUEDE recuperar dicha memoria.

Entonces en una configuracion normal, tendriamos: 96 Ks + 32 Ks = 128 Ks


libre por la zona alta.

Y ahora la pregunta como utilizarlos?

** Utilizacion de la memoria superior:

Bien, la primera parte sencilla. Si a continuacion de la linea del config


que carga el EMM386.EXE, ya colocamos las instruccions "devicehigh" (en vez
de device) y en el autoexec, cargamos los programas con "lh" (loadhigh) por
delante de ellos, entonces estos programas se cargarn en memoria UMB,
igualmente, el propio MSDOS, en cuanto puede, "mete" all su zona de
buffers, files, etc...... (por eso, realmente no "vemos" los 128 Ks libre
nunca, porque el propio MSDOS, aunque no hayamos cargado nada, en cuanto se
encuentre DOS=UMB, ya carga all lo que puede).

Pero.... muy bien, ahora ya hemos terminado de cargar el DOS y empieza


windows a cargarse.

Si arrancamos en "solo simbolo del sistema" veremos con un mem /d/p la


memoria superior que tenemos "antes" de entrar windows. Y ademas la memoria
libre que tenemos bajo MSDOS.

(recordad, que no hara falta nada ms que : en el config, las lineas


devicehigh= display.sys.... y el Country. Y en el autoexec, las dos lineas
mode *no hay que ponerlas "lh" a estas. Y la linea keybsp con "lh". Con esto
es suficiente para windows. El resto de cosas, como ya hablaremos mas
adelante: NO HACEN FALTA, se pueden quitar y ya veriamos como podemos
recargarlas si hiciesen falta a posteriori para entrar en modo MSDOS)

Retomando lo anterior, sabemos la memoria libre, pero cuando entramos en


windows y damos el mismo comando, vemos que en la zona alta de memoria no
nos queda nada....?

** Recuperacion de la memoria superior bajo windows

La memoria anterior se puede recuperar. Unicamente debemos aadir en la


seccion [386enh] del System.ini (que est en el directorio de windows), la

83
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

linea:

LocalLoadHigh=On

Y reiniciar. Puede..... que el sistema no nos arranque, enviando un mensaje


de "imposible, o error al cargar el DOSMRG. Programa detenido".

En este caso, podemos hacer dos cosas:

1) Eliminar la linea anterior y resignarnos a no tener memoria superior.

2) Mas elegante: buscar al culpable y reordenar la carga. El posible


culpable es que windows, necesita "al menos" 4 Kbs en cada region de memoria
superior (UMB). Pensemos que en la configuracion de memoria descrita
anteriormente, tenemos dos regiones (de B000-B7FF y C800-DFFF). Antes de
entrar a windows, debemos "ver" en MSDOS puro al menos 4 Ks libres en cada
una de ellas.

El punto 2) es muy sencillo en la configuracion que he descrito antes. Pero


en maquinas con varias ROM BIOS (scsi, red, etc...) puede ser un poquillo
mas complicado, y a veces, por ejemplo, no cargar el keyb en alta a
proposito, para dejar esos 4 Ks. O bien cargarlo (forzado) en otra region.

** Bien hasta ahora hemos estado hablando de drivers de disposivivos,


programas DLL's y diversos componentes de windows. Pero realmete, que son,
y que funciones y para que sirven las DLL's?

LIBRERIAS DINAMICAS EN TIEMPO DE EJECUCION: DLL's


--------------------------------------------------

** Mucho se comenta y se ha comentado sobre la DLLs. Pero n pocos sitios he


visto una definicion que el usuario final sea capaz de entender. O bien es
una definicion tecnica o bien se quedan tan panchos diciendo que es una
libreria dinamica.

Y el caballero de a pi, el de la calle se queda con cara de besugo sin


saber que le han respondido y la mayoria de la las veces sin atreverse a
repetir la pregunta.

Vamos a ver si yo soy capaz de explicarlo de una manera sencillita.

* Lo logico, en cualquier sistema operativo, o cualquier programa, es que


las cosas que haya que realizar muy repetitivamente, se haga desde un solo
sitio. Con ello, tendremos tres ventajas:

1) Ahorro de esfuerzos. Si ya esta hecho, se utiliza sin se hace


(pensandolo bien) y se utiliza desde cualquier sitio.

2) Lo haga bien o lo haga mal, al menos est en un solo sitio. Facil de


locaclizar para su arreglo si tenemos problemas.

3) Facil de mantener. Debido al punto 2) si necesitamos cambiar o ampliar su


funcionalidad, est en un solo sitio y solo debemos tocar en ese sitio.

Podemos poner un ejemplo: muchos programas, por ejemplo, nos dn el espacio


libre en disco. Entonces cada uno de ellos lo calcula de una manera?. no
es mas facil ponerlo en un sitio comun y que todos lo calculen igual?.

84
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Esto seria logicamente, una funcion de una libreria del sistema (de una
DLL). El propio sistema o cualquier otro programa, llamandola, sabra el
espacio libre.

** Como nota anecdotica, esta es la teoria. En la practica, ni el propio


windows 95/98 lo hace. Tenemos un ejemplo: al abrir My PC, nos d siempre
correctamente el espacio libre en disco y el espacio total. Pero pinchando
en la papelera de reciclaje (en propiedades), nos damos cuenta que en discos
mayores a 2 Gb, siempre nos indica que el disco es de 1,99 Gb. Por tanto ni
el propio Microsoft hace caso a sus especificaciones (mejor dicho, a la
logica de la programacion).

Bien, la teoria ya est. Es facil e intuitivo. Por ejemplo, imaginemos que


somos programadores y que necesitamos unas funciones basicas de manejo de
fechas en nuestra aplicacion. Deiferencia en dias entre dos fechas, sumar
dias a una fecha, ver si la fecha es logica o n,....etc. Y ademas somos
conscientes que se va a utilizar mucho estas funciones, tanto en nuestra
aplicacion, como en otrs que vayamos a desarrollar.

Lo logico en este caso, es preparar bien esas funciones, y generar con ellas
una libreria dinamica (DLL).

Decimos "dinamica", porquw es mas logico que el otro concepto: "estatica".


Una libreria estatica, tambien puede generarse, pero obliga a que los
programas estn "linkados" (montados) con esa libreria en sus tripas. Por
tanto si son "estaticas" tenemos 2 desventajas:

1) Los programas ejecutables, sern mas "gordos". Todos llevaran


incorporados dentro esas funciones.

2) Si modificamos algo de esas librerias, deberemos cogernos toda la


aplicacion y volverla a generar (volverla a "linkar") y distribuir toda la
aplicacion de nuevo.

En cambio, si las funciones las tenemos en una DLL, simplemente modificando


dicha DLL no tendremos que hacer nada mas con nuestra aplicacion.

** Pero no todo van a ser ventajas. Por desgracia, vemnos que en el mundo
real muchos problemas nos provienen de que "alguien" nos machaca una version
de una DLL y nos deja de funcionar cualquier otro producto (incluso el mismo
windows).

Pues es verdad. Voy a intentar explicarlo. Imaginemos que una DLL (antigua)
no sabe calcular bien alguna cosa (por ejemplo el tamao en disco, debido a
que es tan antigua que no "conocia" la FAT 32). Imaginemos tambien, que esa
DLL se arregla y se distribuye con una nueva version del sistema operativo.
Y vamos a imaginar tambien que un programa "viejo" de alguna aplicacion de
terceros, decidi en su dia distribuir esa DLL por si acaso alguien la tenia
daada. Y ademas su proceso instalador es "malo" y no verifica que exista
una nueva version, sino que copia directamente la DLL.

Pues el resultado est claro: nuestro windows dejar de funcionar


correctamente. Fijaros que es un caso, en que por sustituir una DLL de una
aplicacion, el sistema operativo se resiente.

** Este caso que parece anecdotico, no lo es tanto. Pensemos que los


productos que ahora mismo vienen con el sistema operativo, anteriormente
eran productos opcionales y de "libre" distribucion. Por ejemplo, el "motor"
de access para que nos funcionen las aplicaciones realizadas en Access,
nunca se habia distribuido con el sistema, pero se habia dado siempre

85
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

licencia a los desarrolladores de aplicacion para distribuirlo ellos.


Actualmente parte del motor de access se distribuye como DLLs comunes en
windows 98. Si algun programador de Access tiene un sistema de distribucion
propio (no utiliza el de windows), y "viejo", nos machacar ahora parte del
sistema.

Lo mismo podemos decir de otras capas de windows: ODBC, OLE, ASPI, TWAIN,
etc, etc,....

** Es por ello, por lo que en capitulos anteriores hemos insistido en la


necesidad de utilizar el SFC. Y debemos dar a esta pequea herramienta, mas
importancia de lo que parece: nos salvar la vida mas de una vez. Y ademas
nos sorprenderemos cuando despues de instalar unas cuantas cosas, ejecutemos
el SFC, y veamos que cualquier parecido de nuestro windows con el que
instalamos inicialmente es mera coincidencia. Incluso nos sorprenderemos que
funcione y sea capaz de arrancar.

*** Retomando el tema anterior, hemos visto que as DLLs son necesarias y
ademas nos pueden dar muchas ventajas (y algun inconveniente, pero no en si
mismas, sino en una mala distribucion).

Bien, las DLLs actuales traen decenas e incluso cientos de funciones, que
utilizan tanto el sistema operativo como cualquier aplicacion windows.

Hay un caso que nos sucede a veces, despues de alguna instalacion en el cual
de pronto recibimos el mensaje "Invalid DYNALINK" o "Simbolo DYNA no
definido".

Esto nos indica un "machaque" de DLL por una antigua. Realmente el mensaje
quiere decir que se est intentando utilizar una funcion de una DLL, y la
DLL s que existe, pero dentro de ella, no existe esa funcion.

Es normal que al ir aumentando el numero de version de la DLLs, por razones


de eficiencia, las nuevas funciones similares o que utilicen mucho las de
una DLL, se "introduzcan" en esa misma DLL. Por eso "aumenta" su numero de
version. A veces porque se corrigen problemas y a veces (las ms), porque se
aaden funcionalidades -funciones nuevas-)

Si un programa nos sustituye una DLL anterior, probablemente esta no tenga


alguna de las funciones que necesite una aplicacion. En este caso, al ir a
utilizarlas, nos mostrar el mensaje de error que he citado anteriormente.

OTROS TERMINOS COMUNES EN WINDOWS. DRIVERS Y VXD


------------------------------------------------
De: Jose Manuel Tella Llop <jmtella@csi.com>
Asunto: Desde que pulsamos el boton de encendido de nuestro PC hasta......
(parte 24)
Fecha: martes, 01 de junio de 1999 19:32

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA..... (Parte 24)


----------------------------------------------------

OTROS TERMINOS COMUNES EN WINDOWS. DRIVERS Y VXD


------------------------------------------------

** Muchas veces hemos oido la palabre "driver" o una "VxD". Y sobre todo
hemos oisdo hablar de ellos cuando tenemos problemas, o bien cuando nos sale

86
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

una pantalla azul (provocada por un "casque") en windows o bien cuando


queremos mejorar las "prestaciones" de nuestro PC, y alguien nos comenta:
"pues acaban de sacer los ultimos drivers de .....".

Bueno, y todo esto que s? para que sirve? puede realmente traerme
ventajas o ms bien problemas?...

Pues de todo hay. Vamos a intentarlo ver desde el punto de vista de un


sistema operativo. Mejor dicho desde el punto de vista de un "diseador" de
sistema operativo. (A este nivel, en diseo, todos los sistemas operativos
son iguales).

DIAGRAMA DE BLOQUES DE WINDOWS


------------------------------

La definicion de windows es (de arriba a abajo):

1) Aplicaciones
2) Interfaz de Usuario e Interfaz de ordenes. Base de Registro
3) Nucleo de Windows
4) Administrador de maquina Virtual. Administrador des sistema de archivos
instalable. Administrador de configuracion.
5) Controladores de dispositivo
6) ..... hardware ......

(bien, si ponemos "cajitas", incorporamos cada punto anterior en una de


ellas, y lo pintamos de arriba a abajo, tendremos justo el diagrma a grandes
"bloques" de windows).

Vamos a ceirnos a los "Controladores de dispositivos" es decir al punto 5).

Este a suvez, lo podemos descomponer de arriba a abajo en otras "cajitas".

1) Otros componentes del sistema operativo.


2) Controlador Universal
3) Mini Controlador. Mini Controlador. Mini Controlador
4) Dispositivo. Dispositivo. Dispositivo.

Es decir, en el punto 3) estn los minicontroladores cuyo desarrollo es


responsabilidad de los fabricantes. Windows trae soporte para muchos de
ellos, pero la mayoria no estan desarrollador por Microsoft, sino por los
fabricantes y son incorporados a la distribucion de Windows si "realmente"
superan las certificaciones impuestas por Microsoft. Del punto 2) hacia
arriba, es responsabilidad de Microsoft, tanto su desarrollo como su
mantenimiento.

** Un controlador de dispositivo virtual (VxD) es un programa en modo


protegido de 32 bits y que administra un recursos del sistema.

Se ejecuta en modo Kernel en el anillo 0 (ver capitulos anteriores) y por


tanto tiene todos los niveles de privilegio para efectuar cualquier
operacion. Por lo anterior, es tremendamente peligroso una VxD mal
realizada, ya que nos implicar un "culgue" del sistema.

Por otra parte, como programador, os puedo decir que es uno de los temas mas
complicados de realizar. No por la complicacion de hacer la VxD en s
(realmente con conocer el hardware del dispositivo y poco ms nos puede
servir), sino porque es muy dificil de probar (y muy engorroso). Normalmente
no se realizan suficientes pruebas de estas VxD.

87
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

La "X" de una VXD, muchas veces se sustituye por otra letra. As un


dispositivo virtual para un dispositivo de visulalizacion (Display) se
conoce como VDD. Para un dispositivo de Temporizacion se conoce como VTD,
para una impresora (Printer), como VPD, etc....

Como nota curiosa, los VxD en Win95 / 98, se pueden cargar dinamicamente (la
mayoria de ellos) y no es necesario hacerlo en la carga inicial de windows.
Igualmente, el sistema operativo, utiliza para ellos memoria "bloqueada". Es
decir marcada como no pagiunable, para que permanezcan siempre en memoria e
intentar optimizar as los accesos a estas VxD.

Son los equivalente a lo que en windows 3.1 eran los archivos .386

Veamos ahora un complento a lo anterior. Recordemos que en diagrama de capas


de windows, habiamos visto el Sistema de Archivos Instalable (IFS). Vamos a
ver ahora su "descomposicion"

SISTEMA DE ARCHIVOS INSTALABLE (IFS)


------------------------------------

Volviendo a nuestro sistema de "cajitas" (lo siento, pero no puedo pintarlas


en estos archivos de texto. Estaria bien, que en vuestra documentacion, las
pintaseis....)

1) Administrador del Sistema de Archivos Instalable


2) FAT de 32 bits (VFAT). Sistema de Archovs de CDROM (VCDFS). Redirector de
Red. Posibles componente de software de terceros.
3) Subsistema de E/S (Entrada / Salida) de bloqueo.
4) Supervisor de Entrada / Salida (IOS)
5) Otros niveles (no significativos).
6) Contorlador de Puerto. Nivel SCSI con controlador de MiniPuerto.

Bien, lo que los fabricantes de terceros nos suministran es el punto 6). Es


decir lo controladores de Puerto (*.PDR), o bien los controladores de
Minipuerto (*.MPD) Estos residen en c:\windows\system\iosubsys y son
cargados "explicitamente" (al contrario de las VxD que existan en dicho
directorio que windows las cargar "implicitamente").

La capa ASPI del punto 6) es suministrada por el propio Windows 95 / 98.

** El conjunto de VxD o PDR, MPR, etc, es configurado en el regstro por un


pequeo fichero de texto ("script"), que nos suminitra el fabricante. Son
los *.INF. En estos .INF vienen normalmente las cadenas de caracteres con
las que el dispositivo se ha reconocido (recordad el tema de PnP), y windows
lo unico que hace, es buscar la cadena del dispositivo en esos .INF. Una vez
encontrada, monta los drivers que all vienen especificados.

Igualmente para otros componetes de windows (y de otros sistemas


operativos), el resto de subcomponenetes est siempre claramente
diferenciado a nivel de "capas". Es lo ms logico. Si algo funciona mal,
unicamente tengo que tocar la "capa" correspondiente. Si quiero aadir una
nueva funcionalidad al sistema: lo mismo. Toco unicamente un minidriver y
todo debe funcionar.

Un capitulo interesante y que merece la pena detallar, es la arquitectura de


red. Esta arquitectura se inicializa siempre al arrancar windows. Tengamos o
no tengamos tarjeta fisica de red. Pensemos que de cara a los diagramas de
bloques ("cajitas") que hemos visto, si la arquitectura de red est pensada

88
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

igual, unicamente sustituyendo la ultima cajita del bloque, que ser el


driver de la tarjeta fisica de red, por otra cajita que sea la conexion
telefonica a redes, pero que de cara a los bloques superiores responda
igual, esta ser nuestra red en windows. (todo el mundo actualmente tiene
modem. El PC -y windows- est orientado a la conectividad)

ARQUITETURA DE RED EN WINDOWS 95 / 98


-------------------------------------

Aunque hablamos sobre win 95 / 98, la introduccion a las redes que vamos a
comentar aqu, es de ambito general. Puede aplicarse a cualquier sistema.
Unicamente matizaremos explicitamente alguna caracterisitica que posea el
win95 / 98 y que no posean otros sistemas.

* Las redes actuales estn basadas en un diagrama de capas (similar a las


"cajitas" que veiamos en el capitulo anterior.

En el panel de control->red, Unicamente vemos 3 componentes (Cliente,


Transportes y Servicios), que *no* tienen nada que ver (o muy poco) con las
capas de una red.

El modelo de capas mas extendido es el modelo OSI, que consta de 7 capas.

7) Aplicacion
6) Presentacion
5) Sesion
4) Transporte
3) Red
2) Enlace
1) Fisico

* La ventaja de tener un diagrama de capas, y cada componente de una capa,


perfectamente definida su entrada y salida, es decir su conectividad con la
capa superior y con la capa inferior, as como sus especificaciones, nos
permite el poder sustituir facilmente una de las capas por otra y que la red
nos siga funcionando correctamente. Vamos a ver cada capa:

* APLICACION: es el nivel al que pueden acceder las aplicaciones. Representa


los servicios que pueden utilizar las aplicaciones de windows. Unicamente
podrn acceder a este nivel.

* PRESENTACION: traduce los datos desde el nivel de aplicacion a un formato


intermedio. Es la encargada tambien de los niveles de seguridad y permite la
encriptacion y cifrado de datos, as como la compresion de ellos para
intentar transferir por la red el minimo numero de bytes.

* SESION: Es la encargada de iniciar, usar y finalizar una sesion de dialogo


entre dos programas de aplicacion en dos PC's conectados en red. Se encarga
de regular el dialogo, quien transmite, cuando, si se ha recibido correcto
un mensaje dar el OK, etc....

* TRANSPORTE: Se encarga de manejar los errores de reconocimiento y la


posible recuperacion. Empaqueta grandes mensajes cuando es necesario y se
encarga de trocearlos para transmitirlos. Quien reciba el paquete, en la
misma capa de transporte, ser el encargado de reconstruir el mensaje.

* RED: Es la capa encargada de traducir direcciones logicas y nombre, a


direcciones fisicas. Debe determinar ademas la "ruta" desde fuente a destino
y es el encargado de conmutar, encaminar y controlar la congestion de datos.

89
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

* ENLACE: empaqueta los bits de la capa fisica en tramas. Es la responsable


de transferir una trama de un PC a otro. Despues de enviar una trama, espera
siempre el OK del receptor.

* FISICO: Transmite bits de un PC a otro y regula la transmision de cadenas


de bits sobre el medio fisico. Esta capa, por ejemplo, define el como se une
el cable al Adaptador de Red y la tecnica de transmision empleada para
enviarlos por el cable.

Esta es la defincion y funcionalidad de las capas de red. La unica


matizacion sobre lo anterior es el TCP/IP. Este protocolo no es asimilable a
las capas anteriore. Por decirlo de alguna manera, el TCP/IP se queda entre
las cpas 3 y 4. TCP sera asimilabla al transporte y el IP, seria asimilable
a la cpa de RED. (he dicho "asimilable", no que sea lo mismo. La
arquitectura TCP es diferente al OSI).

Windows 95, nos suministra varios tranportes de red. Por ejemplo, los mas
conocidos on NETBEUI (protocolo propietario de Microsoft). IPX (desarrollado
por Novell) y TCP/IP (desarrollado por el departamento de defensa de EEUU).
Otros transporte que nos suministra es por ejemplo el DLC (para dialogo con
arquintecturas SNA -grandes mainframes de IBM-).

Igualmente pueden montarse en windows, transportes de red de "terceros",


como por ejemplo Banyan VINES, DEC Pathworks, PC-NFS de SUN, etc. Incluso
soporta protocolos en modo real (MsDOS) y sus capas de red son cpaces de
dialogar con una (solo UNA) red en modo real.

CLIENTE PARA REDES MICROSOFT


----------------------------

Windows nos suministr un cliente propio, que realmente es un controlador del


sistema de archivos en modo protegido (32 bits). El protocolo de
comparticion de archivos, permite conectarse a redes LM (Lan Manager).

Este cliente permite la conexion sobre cualquier protocolo NDIS que admita
interfaz NetBIOS. Cuidado!!, porque esto es lo importante.

Recordemos que el Netbeui est diseado sobre NetBIOS. El IPX, puede ir o n


sobre NetBIOS, y el TCP lo mismo.

Esto implica que el cliente para redes Microsoft (y la posibilidad de


compartir archivos e impresoras) solo fincionar si est presente el
NetBIOS. Esto ultimo que indica?; pues que si los PCs pueden unirse
mediante NetBIOS se podran utilizar sus discos y vermos dichos PCs en el
Entorno de Red. Sino es as, no los veremos.

Pero.... todo tiene ventajas e inconvenientes. Veamos:

* Si utilizamos NetBEUI sabemos que "seguro" que tenemos NetBIOS. Pero este
transporte no es "routeable" (no se puede "redirigir"). Por tanto si entre
nuestros PCs existe un "router" (o un "proxy" que haga de router), el
trafico NetBEUI no podr pasar. S este es el unico transporte de red, ambos
PCs no se "veran".

* Si utilizamos IPX, podemos decirle que vaya sobre NetBIOS (en la ficha
propiedades, al pinchar el transporte en Panel de Control->Red). Por o tanto
si lo tenemos as, s que se veran ambos PCs a traves de este transporte.

* El TCP/IP instalado sobre win95 / 98, va sobre NetBIOS... si puede. Es


decir no hay garantia que vaya sobre NetBIOS, y ademas, si tenemos u router,

90
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

no ir sobre NetBIOS. Esto quiere decir, que no siempre hay garantias de que
si tenemos TCP, funcione el cliente para redes Microsoft.

** Evidentemente mi consejo es instalar los 3. No consumen recursos y de


esta manera, que los propios PC's al dialogar utilicen el transporte que
puedan.

Esto carece de sentido en Internet. En Internet el unico transporte que nos


va a funcionar es el TCP/IP (y ademas no ir sobre NetBIOS, por lo que no se
podr utilizar en Internet el CLiente para Redes Microsoft). Por tanto,
aunque tengamos definidos los tres transporte (lo cual es comodo, por si el
da de maana queremos unir dos PCs via cable, tarjeta de red, o incluso en
llamada telefonica en directo), en el ficha de propiedades de la
comunicacion telefonica, deberemos quitar la marca al NetBEUI y al IPX. No
es obligatorio porque no van a funcionar, pero agilizaremos la conexion con
el servidor de nuestro ISP.

Vamos a intentar ahora aplicar esta teoria a la conectividad de dos PC's.

COMO CONECTAR DOS PCs en RED


----------------------------

Bien, lo que voy a describir aqu, en principio sirve para dos PCs
conectados de cualquier manera, es decir conectados en una de las siguiente
posibilidades:

1) Con una tarjeta de Red


2) Con un cable serie o paralelo
3) Via modem (con una llamada en directo al otro PC)

Vamos a repasar un poco las redes y el soporte que viene incorporado en


w95/w98.

En una red, a nivel logico debemos tener 3 componentes:

1) Cliente
2) Transporte
3) Servicios

Pueden existir varios de cada tipo, es decir varios Clientes, o transportes


o servicios. Si pulsamos en Panel de Control->Red, vereis la que instala por
defecto w98.

El defecto es muy sencillita. Instala un cliente de windows, y un


transporte, el TCP/IP.

Realmente el TCP/IP no tiene "cliente", o si queremos decirlo de otra


manera, el "cliente" es el Navegador, o el Correo o las News, o bien ciertos
productos de terceros, como clientes NFS los cuales nos permiten mapear
unidades de red (ms adelante veremos que es esto). Igualmente en el TCP/IP
hay servicios, pero w98 no nos d ningun servidor de los servicios TCP (FTP,
telnet, etc...).
(a veces, el Cliente para redes Microsoft, puede "encapsular" Netbios sobre
TCP/IP -si nadie hace routing, es decir en una conexion directa- y por tanto
podramos utilizar dicho liente directamente. Pero como esto es lo extrao,
vamos a olvidarnos de ello).

** Veamos nuestras necesidades: supongamos que lo que queremos es conectar


dos PCs y asignarnos un disco sobre el otro PC, para que podamos leer y

91
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

escribir en el como si fuese otro disco de nuestra maquina (mas lento, pero
bueno...), o bien asignarnos su impresora e imprimir el ella.

Para realizar lo anterior, necesitamos una red con las tres capas "Cliente",
"Transporte(s)" y "Servicio". Aunque existen muchas rtedes y transportes,
vamos a ceirnos a unas cuantas que nos da gratuitamente w98. (el resto son
de pago y son de terceros). Para ello vamos a instalarnos una sencillita red
"microsoft".

En panel de control->red, le pinchamos el boton de aadir y aadimos el


"Cliente para redes Microsot" (eliminamos el cliente de windows).

Igualmente debemos aadir un transporte compatible con dicho cliente. Digo


"compatible", ya que el TCP/IP no sirve. Para ello aadimos el NETBEUI.

Igualmente ahora debemos aadir ademas, el "servicio" de compartir archivos


e impresoras.

Salvamos la configuracion y nos mandar re-iniciar el PC.

Una vez re-arrancada la maquina, ya la tenemos en disposicion de poder


conectarnos. Tenemos completa la red. Antes de intentar una conexion,
debemos "ofrecer" que es lo que queremos que otro(s) PCs hagan con nuestros
discos e impresoras. Para ello con el boton derecho en un disco (o en una
carpeta), le damos a "compartir". Nos sacar un cuadro de dialogo donde nos
dejar configurar si dejamos ese servicio en lectura o en escritura, con
password o sin password. Una vez que lo hayamos compartido, lo veremos con
una "mano" por debajo, como si lo estamos ofreciendo.
Igualmente con el boton derecho en la impresora, realizamos la misma
operacion (si nos interesase que escriban en nuestra impresora).

Se supone, que el "otro" PC, tiene la misma configuracion (al menos el mismo
tranporte de red, en este caso el NETBEUI), y tambien "ofrece" servicios.

** Llega la hora de la conexin.

Vamos a suponer que uno de los PCs es el encargado de "descolgar el


telefono", este PC debe estar en "escucha". Para ello en Mi PC->Acceso
Telefonico a Redes->Conexion->Servidor de Acceso, pinchamos el "permitir el
acceso". Debemos poner una password. Esta ser la password que debe teclear
quien quiera conectarse a nuestro PC. Es decir quien vaya a conectarse,
debera crearse un conexion, y teclear cualquier usuario, pero la password
debe ser la que nosotros hayamos puesto.

Una vez conectados los PCs, pinchamos en icono "Entorno de Red" en el


escritorio, y all nos aparecera, el PC remoto. Pinchando en l, veremos sus
"servicios" y podremos utilizarlos directamente como si estuviesen en
nuestro PC. Ademas, con el boton derecho sobre ellos, les podemos asignar
una letra como si fuesen un disco.

NOTA: Si ademas ambos PCs arrancan el programa "winpopup", podran enviarse


mensajes entre ellos.

RESOLVER PROBLEMAS DE CONECTIVIDAD EN REDES


-------------------------------------------

Basicamente debemos comprobar:

92
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

1) Se debe entrar a windows con contrasea SIEMPRE.


2) Instalar en la RED, al menos:
a) Cliente para redes Microsoft y eliminar Microsoft Family Logon
b) Transportes: TCP/IP y NEtBeui
c) Servicio para compartir ficheros e impresoras.

3) Dentro del servicio para ficheros e impresoras, aunque no es


imprescincible, podemos entrar y marcar como "Activo" las caracterisiticas
de "Examinador Principal" (estn en Auto, pero conviene activarlas).

4) Si queremos ver directamente en el "Entorno de Red" los PCs, debemos


pertenecer la mismo "grupo de trabajo"

5) En cada PC, con el boton derecho del raton sobre el disco, carpeta o
impresora que deseamos "servir" a la red, le tenemos que dar "compartir" y
el nombre y derechos con el que queremos compartirlo.

*** Y ahora conectamos. Sino viesemos el otro PC en entorno de red, las


pruebas a realizar seran las siguientes.

VERIFICACIONES EN CASO DE APARENTE FALTA DE CONECTIVIDAD


-----------------------------------------------------------

** Si estamos en comunicacion telefonica, podemos pinchar el icono de la


conexion en la barra inferior de tareas y pinchar detalles a ver como nos ha
establecido la conexion. Debemos ver que ha establecido ambos protocolos
(TCP y NetBeui). Sino fuese as, revisar la configuracion en "ambos" PCs.

IMPORTANTE: Igualmente debemos recordar que en comunicacion telefonica (via


el "Servidor de Acceso Telefonico", debemos conectarnos son usuario /
password al otro PC. Si no nos conectasemos as, o bien hemos entrado en
windows sin contrasea, no estaremos "autentificados" en la red. Sin
autentificacion no se pueden compartir archivos e impresoras.

Posteriormente pasamos a verificar el TCP.


En cada PC, arrancamos el programa winipcfg y vemos la direccion IP en el
"adaptador PPP" (podemos ver 2 adaptadores PPP, pero uno de ellos debe
tener direccion), o bien en el adaptador en el que hemos realizado la
conexion, si esta no fuese telefonica.

Una vez que sabemos la direccion IP del PC contrario, abrimos en nuestro PC


una ventana MsDOS y tecleamos:

ping xxx.xxx.xxx.xxx

siendo xxx.xxx.xxx.xxx la direccion del "otro" PC. Verificamos que lleguen


los mensajes.

Si llegan, verificamos que el otro PC es alcanzable por "nombre", tecleando:

ping nombre_del_otro_PC

Si llegamos tambien, se ha establecido correctamente conectividad IP (y


ademas se puede resolver el NetBios sobre TCP/IP, que es lo normal sino
existe "routers" o "proxys" por el medio de la comunicacion).

Bien, si todo lo anterior funciona, aunque no lo veamos en el entorno de


red, vamos a Inicio->Programas y all tecleamos:

93
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

\\nombre_del_otro_PC

\\xxx.xxx.xxx.xxx

Se nos tiene que abrir una ventana con los "servicios" que el otro comparte.

Ademas con el boton derecho sobre el servicio podremos "mapearnos" una


unidad de red sobre l.

INTRODUCCION AL TCP. DIRECCION IP


---------------------------------

Antes de entrar en algunos de los terminos utilizados, vamos a ver un


poquito de la identificacion de una maquina. Un PC bajo TCP/IP debe tener
una direccion UNICA en la red. Si est conectado a Internet, su direccion IP
tiene que ser unica en el mundo.

Una direccion IP est compuesta por 4 bytes. Recordemos que un byte puede
tener un valor decimal entre 0 y 255. Por tanto una manera de represntar una
direccion IP es:

xxx.xxx.xxx.xxx (cada grupo de xxx representa un numero entre cero y 255).

Este numero tiene que ser unico en el mundo en ese instante. Como se
consigue?. Bien, relativamente facil. Existe una organizacion que d las
direcciones IP en el mundo.

Si es por ejemplo para un solo ordenador, le daran un solo numero. Por


ejemplo: 147.25.34.10

Pero no es operativo, que una organizacion se dedique a dar TODOS los


posibles numero a todos los posibles ordenadores. Esta solucion no sera
operativa, por lo que dicho organismo, lo que concede son "rangos" de
direcciones y responsabiliza luego a quien se lo d para el reparto de
dichas direcciones.

Entonces, se concenden a los grandes organismos que vayan a gestionar mas de


65535 ordenadores, una direccion clase A. Se llama direccion clase A a
aquellas que tienen prefijado el primer numero de la direccion IP y luego el
resto de numeros puede ser cualquiera. Por tanto unicamente puede haber 255
clases A en el mundo. Y ademas las hay reservadas. Es decir la clase A del
tipo:

10.xxx.xxx.xxx est reservada. Y es la que normalmente se utiliza en las


intranets.

Como existen tan "poquitas" clases A, evidentemente no se conceden.

Luego est la clase B. Es del tipo (por ejemplo):

123.112.xxx.xxx (es decir dos numeros prefijados y el resto libres. Una


clase de estas puede manejar 65535 ordenadores. Normalmente se los dan a los
grandes mayoristas de internet.

Y por fin una modesta clase C, tiene 3 numero prefijados y el ultimo puede
ser cualquiera. Es decir una clase C abarca 255 maquinas.

** Lo normal es que nuestro ISP tenga un rango de direcciones para dar. Y lo

94
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

que hace, en el moment en que un PC solicita una direccion, le d una de las


libres que tiene en ese momento. El software encargado de esto suele ser un
servidor DHCP (existen otros metodos, pero esoty nombrando lo mas
corriente).

Mas adelante, veremos como podemos "explotar" la informacion de la direccion


IP y veremos igualmente algunas utilizades que nos permiten, por ejemplo,
saber nuestra direccion IP.

** Es importante recordar en esta parte, que por CADA tarjeta de red o por
cada modem activo, tendremos una direccion IP diferente en cada adaptador.

(esto es importante: el TCP/IP de win 95 / 98, no soporta "routing". Es


decir un mensaje que entre en nuestra maquina por el modem por ejemplo, NO
puede salir por nuestra tarjeta de red. Para poder hacer esto, hace falta
software de terceros, o bien tener instalado Windows 98 Second Edition, el
cual es capaz de hacer routing en una conexion a Internet. Es un "routing"
parcial, pero totalmente operativo para las conexiones via Navegador, Mail,
o FTP.)

UNOS CUANTOS TERMINOS UTILIZADOS EN TCP/IP


------------------------------------------
Muchas veces hemos oido hablar de TCP, IP, UDP, FTP... Pero realmente que
significan estos terminos?

Vamos a intentar definirlos un "poco" los terminos anteriores.

IP = Internet Protocol. (el resto, es decir TCP y UDP, son protocolos por
encima del IP). Este es el transporte basico. Un mensje que sale de nuestor
PC es un "datagrama IP". Los datagramas IP iguen la filosofia de la "patata
caliente". Es decir, si a t te dan una patata caliente que haces con
ella?. Una de dos, o se la "pasas" a otro o la tiras al suelo. Pues
exactamente lo mismo hace cualquier maquina en internet. Para que nuestro
"datagrama IP" llegue al destino, debe pasar por muchas maquinas. El
servidor de nuestro ISP, los routers en internet, etc, etc,. Todos tienen la
filosofia de la "patata caliente". Cuando reciben un datagrama IP, lo
sueltan inmediatamente a la red.... o se olvidan de l. Ademas, puede
incluso pasar, que dos "datagramas IP" que salgan de nuestro PC, lleguen
"desordenados" al destino. Si cada datagrama, es una patata cliente, un
router en internet puede recibir y enviar al datgarama por una tarjeta suya
de red. Por cualquier motivo se le acumulan las peticiones sobre esa
tarjeta, por ejmplo, y el siguiente datagrama lo saca a la red por otra de
sus tarjetas.... Ademas, puede que reciba un datgrama IP, y como no le viene
"bien" el tamao recibido, decide partirlo en DOS y enviar dos datagramas a
la salida.

Entoces como es que fucnionan las cosas?. Pues bien, para esto est el
software que est por encima. Puede ser de dos tipos: TCP y UDP.

TCP = Transport Control Protocol. Esta "capa" de software "garantiza" a


quien la utilice que el paquete est completo. Es el encargado de recibir
los datagramas IP, ver si estan completos, si les falta algo, ordenarlos,
etc. Si falta alguno en el paquete, lo solicita de nuevo. Por tanto, los
programas de aplicacion que utiliza TCP, tienen garantia de recibir los
datos completos y ordenados.

UDP = Universal Data Packet. Este transporte, est orientado a datagrama.


Por tanto, el software de aplicacion que lo reciba, debe "el mismo"
solucionar los problemas. Pedir un paquete si le falta, ordenar los que va

95
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

recibiendo, etc.... Es responsabilidad entonces del programa de aplicacion


que lo est recibiendo.

** Existen otros protocolos por encima del TCP/IP. Los mas conocidos son FTP
(utilizado para el tranporte de ficheros) HTTP (para paginas web).... y
decenas de ellos ms, que se salen un poco del alcance de estos capitulos.

CLIENTES SOBRE TCP/IP


---------------------

En el capitulo anterior hemos introducido un poco sobre los transportes de


red.

Recordando un poco, comentamos que el TCP/IP se queda a un equivalente del


nivel 3-4 de la cap OSI (equivalente, no igual).

Ademas hemos comentado sobre los "clientes" de red. Es decir sobre la capa
de red que nos permite "ver" o "compartir" recursos con otras maquinas. Y
hemos comentado, que esto no es posible si tuilizamos unicamente TCP/IP
puro. Como windows 95 / 98, si puede, instala NetBIOS sobre TCP/IP,
entonces, cuando est funcionando NetBIOS, s que funcionar el Cliente para
Redes Microsoft. En otro caso, deberemos "ademas" instalar un transporte de
red que pueda utilizar dicho cliente.

Existen capas de red (similar a los Clientes), de terceros que nos dan esta
posibilidad. Por ejemplo el Cliente NFS. El cliente NFS (Network File
System), es un cliente que es capaz de utilizar discos (mapearse discos)
sobre TCP/IP puro. Para que esto sea posible, evidentemente tiene que haber
tambien un "servidor" NFS.

Ambas utilizades son utilidades de terceros. Unicamente WIndows NT, cuando


se le instala el paquete de Microsoft SFU (Sytem For Unix), suministra un
cliente y un servidor NFS. Pero unicamente para windows NT Server y no para
win 95 / 98.

La pregunta, entonces, es para que nos sirve el tcp/ip?. Pues si est


"solito", para nada. Hacen falta programas de aplicacion por encima.

Por decirlo de alguna manera, este es el "cliente" por excelencia qe estamos


acostumbrados a utilizar.

Estamos acostumbrados a utilizar un navegador. Bien este es el programa por


excelencia que utilizamos a diario, pero existen varias utilizades
incorporadas en win 95 / 98 que es conveniente conocer. Vamos a intentar
darlas un repaso.

UTILIDADES TCP/IP INCORPORADAS EN WIN 95/98


-------------------------------------------

Bueno, vamos empezar la casa por el tejado. Aunque en principio parecera


mas logico comentar un poco como se estable una comunicacion IP. que son los
puertos, que es un socket, etc..... vamos a ver primero una serie de
"comandos" o utilidades que incorpora win 98. La mayoria son utilidades
"estandard" que estn en cualquier otro sistema operativo, sea o n de
Microsoft. Recordar que la mayoria de estos comandos, mientras no diga lo
contrario son comandos para dar en una ventana MsDOS. Es decir con comandos
de "consola". Estos comandos podemos ejecutarlos con /? para que nos
muestren una pequea ayuda.

96
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

PING : Este comando nos permite enviar un "paquete" de prueba a otro


ordenador. S el otro ordenador est vivo, nos responder. Aunque tenemos
practicamente la garantia de que el PING nos funcione contra cualquier
ordenador, esto puede limitarse. Me explico: el comando PING no utiliza IP,
utiliza ICMP. El trafico ICMP puede cortarse. Algunos servidores que quieren
permanecer ocultos en la red, pueden filtrar este trafico y nunca responder
ese servidor a un PING.

WINIPCFG (este es un comando windows). Nos dar la direccion IP sobre


cualquier adaptador de red. Igualmente nos informar del gateway y del DNS
que tenemos en ese momento.
Esto puede tener una utilidad que se me ocurre ahora mismo. Imaginemos que
tenemos camara de video y queremos establecer videoconferencia "privada" con
NetMeeting (sin pasar por ningun servidor de internet), directamente con
otra persona. Para ello, podemos querdar a una hora determinada, y mediante
ICQ o mail, por ejemplo, informarnos del IP de la otra persona e igualmente
enviarle nuestro IP. Con esto, ahora podemos configurar MetMeeting en
directo a ese PC para establecer entre nostros una videocinferencia. Esto es
en directo, no pasa por ningun servidor ni lista de directorio en servidores
y por tanto la comunicacion es mucho mas rapida.

IPCONFIG : nos muetra una informacion detallada de datos sobre todos


nuestros adaptadores de red. Lo mejor es ejecutar un IPCONFIG /ALL y como la
salida de datos es muy grande deberemos o bien redirigirla a un fichero o
simplemente teclear: IPCONFIG /ALL | MORE

NETSTAT : sirve para ver el estado de los puertos (mas adelante veremos este
concepto), en nuestro PC. En principio utilizarlo con el parametro -a. Es
decir NETSTAT -a
Esto nos mostrar los puertos que est utilizando. Como introduccion,
debemos comentar que existen 65535 puertos disponivbles. Del 0 al 1024 son
reservados para el TCP, y del 1024 en adelante para aplicaciones de usuario.
En particular una posible "aplicacion" de usuario es el famoso BO (Back
Orifice). Este "pilla" un puerto 3x.xxx (treinta y tantos mil). Tiene un
valor por defecto, pero cuidado: se puede "configurar".

FTP : nos permite de una manera un poco "rupestre" (entrar en l y darle


HELP, el transferir datos entre ordenadores en TCP/IP. Es el cliente FTP que
trae windows. Tambien en la actualidad, el propio navegador de internet
(IE), es capaz de realizar una transferencia FPT, siendo en este caso mas
comodo. Pero tambien mas lento. Igualmente recuerd que podemos utilizar
programas FTP de libre distribucin de terceros. Y alguno realmente buenos
que merece la pena tener en cualquier instalacion.
(el FTP utiliza por defecto el puerto 21 del TCP/IP)

TELNET : nos permite entrar en un ordenadro remoto con emulacion de


terminal. Es decir si el ordenador remoto tiene activo el servicio de telnet
y tenemos usuario / password en l, nos permitir manejarlo como si
estuviesemos fisicamente en su pantalla y teclado.
(el TELNET utiliza por defecto el puerto 23 del TCP/IP)

NET : Admite muchos subparametros. Nos permite por ejemplo mapearnos una
unidad de red, desonectarla, y en general utilizar directamente todos los
comandos para actuar sobre una red. Es el "antiguo" comando LM (Lan
Manager).

COMUNICACION TCP/IP
-------------------

97
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

En TCP/IP, todo se basa en la filosofa cliente/servidor. Un "host" (no es


nada mas que un ordenador cualquiera, un PC, o uno gigantesco), puede
ofrecer servicios a la red. Este es un servidor. Y otro puede solicitar esos
servicios (cliente). Lo "normal" (en un PC) es ser siempre cliente, es decir
solicitamos servicios de FTP, HTML, news,....

Como se solicitan los servicios o como hablan dos maquinas bajo TCP?. Muy
sencillo, se establece un "socket" -un canal de comunicacion- y como? pues
un socket no es nada mas que una conexion entre una maquina y un puerto con
otra maquina y otro puerto. Es decir intervienen 2 maquinas y 2 puertos.

En el IP, se definen 65535 puertos y desde el 0 al 1023 estan reservados


para los servicios estandard del TCP (html=80, ftp=21,...etc) y desde el
1024 en adelante estan reservados para programas de usuario.

Para abrir un socket (canal de comunicacion), una maquina debe solicitar una
direccion ajena y un puerto. Si en ese puerto, en la otra maquina, hay un
programa escuchando (LISTENING), este programa atender a nuestras
peticiones.

Cuando abrimos el "navegador" y tecleamos una pagina, el funcionamiento


sera el siguiente:

1) Nuestro PC para abrir el socket necesita conocer la direccion del destino


(el puerto ya lo sabe, ya que por defecto en html es el 80). Esta direccion
debe estar en formato xxx.xxx.xxx.xxx (4 numeros separados por
puntos -direccion IP-)

2) Nuestro PC, investiga si conoce el ordenador destino (es decir investiga


un nombre, por ejemplo www.microsoft.com). Si no lo conoce debe investigar.

3) Aunque para esta investigacion intervienen varios pasos (fichero host,


mascaras de subred, etc), vamos a simplificarlo. Nuestro PC se lo pregunta
al DNS de nuestro servidor (recordad que ponemos DNS al definir una
conexion telefonica, o bien nuestro proveedor nos lo da automaticamente al
establecerlo.

4) DNS = Domain Name Solver. Es decir nos va a resolver por nombre de


dominio su direccion. Por tanto nos devuelve su direccion IP.

5) Con esto el navegador ya puede abrir un socket desde nuestra direccion, y


un puerto "cualquiera" !!! libre de nuestro PC y la direccion del destino y
el puerto 80.

6) Es decir lo que hace en ese momento es pedirle a nuestro propio PC un


puerto libre, imaginemos que le d el 2122, y entonces establece un canal de
comunicacion entre ambas maquinas desde el puerto 2122 en el cual "escuhar"
nuestro navegador para esa conexion y el 80 en el destino, que ser el que
nos pase la informacion (la pagina web).

Bien, esto es extensible para todos los servicios IP (FTP en el 21,TELENT en


el 23,..etc). Y para cualquier cosa que queramos hacer.

Fijaros que en el ejemplo anterior, en la otra maquina, no hay un navegador,


sino que hay un programa, que lo que hace es escuchar "peticiones" en el
puerto 80, cuando las recibe, analiza lo que le piden, busca la pagina y nos
la envia. Este es un servidor de paginas web.

** Y una vez con esta introduccion, vamos a "mezclar" todos los conceptos y
darlos un pequeo "repaso".

98
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

APRENDIENDO UN POCO DEL TCP/IP


------------------------------
Bueno, este articulillo va a ser un poco mas complicado. Mas complicado para
m ya que precisamente no me explico todo lo bien que quisiera.

El objetivo que pretendo, es clarificar un poco sobre el TCP y aprender


basicamente como con el TCP puedo convivir en un ordenador que est
conectado con dos adaltadores de red. Es decir por una parte a una red
interna (intranet), mediante tarjeta de red, y a la vez est conectado a
internet via modem. Y ser posible referenciar y utilizar simultaneamente la
intranet y el internet.

Este tema que parece una tontera no lo es tanto. Y el dia de maana, cuando
tengamos ms de un PC en casa unidos mediante red, y a la vez uno de ellos
por modem a internet, el evitarnos quebraderos de cabeza. Igualmente en esta
situacion estar mucha gente en su trabajo. Intranet para la red corporativa
e internet via modem.

Antes de entrar en detalles, es necesario entender unos pocos terminos.

INTRODUCCION
------------

1) DIRECCION IP
---------------
Bajo TCP/IP cada ordenador, debe tener una direccion unica en el mundo. Esta
direccion viene especificada por 4 numeros, separados por puntos. Y cada uno
de estos numeros puede ser de 0 a 255. Es decir, la direccion mas pequea
ser:

0.0.0.0

y la maxima:

255.255.255.255

Un direccion normal, por ejemplo, es: 128.10.34.234 e identifica a un unico


PC en el mundo.

Hay direcciones que por definicion, se consideran reservadas. Es decir te


garantizan que no existen en internet y por tanto pueden utilizarse para una
Intranet. Un ejemplo de estas direccion es la red "10". Es decir la
10.x.x.x. (por eso, infovia, que no es mas que una gigantesta intranet, lo
utiliza). Otras reservadas son la: 169.x.x.x.

Esa direccion IP, debe existir para cada tarjeta de red (y la conexion
telefonica es "otra" tarjeta de red) que existan en nuestro PC. Por tanto,
si nuestro PC tiene una tarjeta de red interna y ademas una conexion
telefonica, cuando estemos conectados a internet, tendremos DOS direcciones
IP. Una para nuestra tarjeta interna de red y otra para la conexion
telefonica.

Siempre mediante el comando WINIPCFG podemos ver la direccion que tenemos en


CADA una de las tarjetas adaptadoras de red de nuestro PC.

Igualmente el comando:

ipconfig /all

99
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

nos d una informacion mayor que el anterior. Este comando ocupa mas de una
pantalla, por lo que lo mejor es darlo con:

ipconfig /all | more

2) MASCARA DE SUBRED
--------------------
Aunque este concepto no es tan basico, voy a intentar definirlo (pero de una
manera MUY simplificada, y con terminologia de uso corriente, es decir, es
ms potente de lo que vamos a ver aqu). Se define como MASCARA, aquella
direccion que enmascarando nuestra direccion IP, nos indica si otra
direccion IP, pertenece a nuestra SUBRED o no.

Es decir, imaginemos que nuestra direccion IP es la 10.2.3.4 con mascara


255.255.0.0. Esto le indica al sistema, que todas las maquina 10.2.x.x
pertenecen a nuestra subred y por tanto cualquier mensaje enviado a nuestra
subred es "soltado" inmediatamente a la red, ya lo recoger quien
corresponda. Si est fuera de nuestra subred, el circuito de envio del
mensaje es totalmente diferente.... y fuera del ambito de este articulo (por
ahora).

3) SERVIDORES DE DIRECCIONES
----------------------------
Bueno, y la pregunta del millon como obtenemos o asignamos una direccion
IP?
Existe evidentemente un problema: dos maquinas en el mundo en la misma red,
no pueden tener la misma direccion IP (todo Internet es una UNICA red.
INFOVIA es otra unica red entendida como intranet gigantesca).

Olvidemonos por ahora de Internet. Imaginemos que yo estoy en una Empresa


con 100 PCs. Evidentemente como "administrador", yo tendra que asignar a
cada PC una direccion unica y llevarlas apuntadas y tener cuidado que no
haya dos duplicadas. Evidentemente muy engorroso y puedo cometer fallos.

Otra posibilidad, que tenga un "servidor de direcciones" DHCP es el sistema


mas corriente. Es decir nuestro ordenador no tiene direccion IP, pero lo
hemos configurado para que obtenga una mediante DHCP (todo esto se puede
configurar en Panel de Control->Red). Entonces nuestro ordenador al
encenderlo, busca un servidor DHCP en la red, y le pide un numero de
direccion IP. El servidor se lo d, y ya est. El propio servidor se encarga
de que no haya IPs duplicadas. (Windows NT puede actuar como servidor DHCP,
y linux, y Unix.....).

Ultima posibilidad -la ms elegante-, pero solo aplicable a windows 98. Ento
no es aplicable a win95. Windows 98 incorpora un mecanismo llamado "Autonet
Configuration". Consiste en que sino tenemos direccion IP, y no existe
servidor DHCP, el solo se "inventa" una direccion en ese momento.
Evidentemente primero "busca" en nuestra intranet una direccion que no este
ocupada. En este caso siempre busca una direccion del tipo 169.254.x.x (con
mascara de tipo 255.255.0.0). Esta direccion como vimos al principio es una
de las reservadas y de las que se garantiza que no existan en internet.

4) SERVIDORES DE NOMBRES (DNS)


------------------------------
Esto supongo que ya "sonar" ms. El famoso DNS.

DNS = Domain Name Solver

Es decir el "resoluctor" de nombres. Cuando estamos en internet, nosotros

100
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

tecleamos simplemente www.microsoft.com y nos conectamos al ordenador de


microsoft. como es posible, si en un mensaje TCP, tiene que ir la
direccion, es decir los 4 numeritos de direccion?

Pues alguien lo tiene que resolver.

El TCP/IP sigue el siguiente orden:

a) Primero busca a ver si existe un fichero llamado HOSTS en nuestro


directorio de windows. (ver un ejemplo que viene siempre en el fichero
hosts.sam). En este fichero, tenemos asociadas direcciones a nombres (o
podemos tener....)

b) Si el fichero HOSTS no existe o bien no contiene el nombre que buscamos,


entonces se lo preguntar al DNS. El DNS resuelve el nombre y nos devuelve
direccion y ahora ya nuestro TCP, sabe a que direccion debe ir.

4) GATEWAY
----------
Es la direccion de la maquina que nos va a dar salida a la red. (suponiendo
que exista tal maquina). Evidentemente si tal maquina no existe, somos
"nosotros" mismos, o sea nuestra propia maquina.

TABLAS DE RUTAS
---------------
Bien creo que con estos conceptos, ya podemos empezar un poco. Vamos a
analizar primero como est nuestra maquina. Supongamos que tenemos una
tarjeta de red y un modem. Supongamos tambien que *no* estamos conectados a
internet.

Tal y como hemos visto antes, nuestra tarjeta de red, tendr una direccion.
Bien porque se la hemoss dado a mano, bien porque nos la ha dado un servidor
DHCP. o bien porque windows 98 se la ha "inventado".

Tenemos el comando "winipcfg" para mirar la direccion. Igualmente (y yo lo


utilizo mucho), el comando

route print

nos sacar una informacion similar a esta:

Network Address Netmask Gateway Address Interface Metric


127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
169.254.0.0 255.255.0.0 169.254.1.15 169.254.1.15 1
169.254.1.15 255.255.255.255 127.0.0.1 127.0.0.1 1
169.254.255.255 255.255.255.255 169.254.1.15 169.254.1.15 1
224.0.0.0 224.0.0.0 169.254.1.15 169.254.1.15 1
255.255.255.255 255.255.255.255 169.254.1.15 0.0.0.0 1

Fijemonos que muestor PC en este cao tiene la direccion 169.254.1.15


(inventada por win98), y tambien debemos saber, que la direccion 127.0.0.1
tambien es siempre nuestro PC (es la llamada "localhost")

Esta tabla de rutas (que puede ser modificada y puede ser mucho mas
complicada si tenemos varios adaptadores de red o bien tenemos abierta
ademas una conexion telefonica), se lee de abajo a arriba. (y las
direcciones que empiezen por 255 y 224 son reservadas y por tanto las
ignoramos y las direcciones que terminene en 255 tambien estan reservadas).

101
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Leyendola de abajo a arriba quiere decir:

a) Ignoramos la ultima, penultima y anterior. Ahora nos encontramos con


169.254.1.15 su mascara es 255.255.255.255 (es decir se refiere a esa SOLA
direccion), y si gateway es el 127.0.0.1 es decir el "localhost" por tanto
es la direccion de la propia maquina. Mejor dicho, la direccion de la
tarjeta de red de nuestro PC. ESTO ES IMPORTANTISIMO.

b) Para las direcciones 169.254.0.0 mascara 255.255.0.0 es decir entonces


para cualquier dirteccion del tipo 169.254.x.x el gateway es 169.254.1.15,
es decir nuestra propia tarjeta de red. Por tanto, todo lo que enviemos a
cualquiera de esas direcciones, saldr por la tarjeta de red.

c) 127.0.0.0 es igual a "localhost".

d) No hay mas, por tanto cualquier otra direccion, nos dar inmediatamente
un error de direccion o direccion no encontrada. Pero inmediatamente, sin
llegar a salir de a la red.

** Veamos ahora un caso mass complicado. La misma maquina y ademas de la


tarjeta de red, abrimos una comunicacion telefonica.

Network Address Netmask Gateway Address Interface Metric


0.0.0.0 0.0.0.0 195.232.3.129 195.232.3.129 1
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
169.254.0.0 255.255.0.0 169.254.1.15 169.254.1.15 2
169.254.1.15 255.255.255.255 127.0.0.1 127.0.0.1 1
169.254.255.255 255.255.255.255 169.254.1.15 169.254.1.15 1
195.232.3.0 255.255.255.0 195.232.3.129 195.232.3.129 1
195.232.3.129 255.255.255.255 127.0.0.1 127.0.0.1 1
195.232.3.255 255.255.255.255 195.232.3.129 195.232.3.129 1
224.0.0.0 224.0.0.0 195.232.3.129 195.232.3.129 1
224.0.0.0 224.0.0.0 169.254.1.15 169.254.1.15 1
255.255.255.255 255.255.255.255 195.232.3.129 195.232.3.129 1

Leamosla de abajo a arriba:

a) Ignoramos las 4 ultimas por el razonamiento anterior.

b) La primera significativa es la 195.232.3.129. Con mascara 255.255.255.255


apunta al localhost. Por tanto esta es la direccion que me acaba de asignar
mi proveedor de internet a mi tarjeta de red (en este caso el modem).
Tambien vemos que para los 255 PCs de la submascara de red permitidad, estn
disponibles directamente en mi subred (resto de PCs de mi subred que el
proveedor me dejaria acceder inmediatamente sin salir a internet).

c) Luego, ascendiendo en la tabla de rutas nos encontramos con lo visto


anteriormente. Pero con un detalle curioso. La metrica de los PCs de mi
subred a traves de la tarjeta adaptadora es la "2". Por tanto, se acaban de
"enumerar" los adaptadores de red. Primero el modem, y luego mi tarjeta de
red. Esto es importante.

d) Y por fin vemos arriba del todo que para cualquier direccion (0.0.0.0)
que no hayamos encontrado antes en la tabla de rutas e investigando primero
por orden de las metricas correspondientes, mi gateway es mi direccion IP a
traves del modem y por tanto saldr a la red a traves del modem.

** Y con esto, creo que podemos ya tener una pequea idea sobre el TCP/IP.

102
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

UN ADAPTADOR "ESPECIAL" DE RED: EL MODEM


----------------------------------------
Bueno, tal y como habiamos visto anteriormente, toda la filosofica de una
red est basada en un esquema de "capas" o "cajitas" cada una con sus
funcionalidades perdectamente definidas.

Una de las capas, es precisamente el Adaptador de Red. Nada nos impide que
el Adaptador de Red sea un modem (o un cable sere o paralelo), en lugar de
la "clasica" tarjeta de red.

* Pero en el momento en que nos ponemos a trabajar con modem, tambien a


veces, empiezan a surgir problemas (sobre todo en este pas de
pandereta -Espaa- y su monopolio telefonico. Recordemos unicamente que en
Espaa, existen mas ISP que en toda Europa y USA juntos).

Vamos a introducir un poco lo que son los modem y los problemas que nos
podemos encontrar.

Modem, no es nada ms que un sencillo modulador-demodulador para poder


utilizar el cableado telefonico. Sobre el protocolo modem, se encapsula un
trasporte de red el TCP y ya est. (realmente sobre PPP: Point to Point
Protocol).

En un principio, los modem funcionaba a velocidad "pequeas". 1200, 2400 e


incluso los rapidos a 9600. Bien a estas velocidades no suele haber
problemas.

Pensar que un cable telefonico, tiene ademas "ruido" (por muy "limpio" que
sea). Existe una ley fisica que a partir de la maxima relacion posible
seal/ruido, deduce que la maxima velocidad teoria es de 33600 bps (bits por
segundo o baudios).

* Vamos a quedarnos aqu antes de pasar a los modem y a la tecnologia digita


de 56 Ks y su norma aprobada: V90. Vamos a dar un repaso primero a la
"clasica" comunicacion "analogica" hasta 33600 maximo.

ELEMENTOS QUE INFLUYEN EN LA COMUNICACION


-----------------------------------------

* Veamos unicamente los que conocemos en nuestro PC y que realmente influyen


en la comunicacion. Pensemos que el modem, (aunque sea interno), realmente
es "solo" un aparato que se conecta a un perto serie del modem (empiezan a
surgir modelos USB, pero vamos a ignorarlos de momento).

Por tanto, el primer elemento que nos surge es el "puerto serie".


Actualmente ya no hay problemas con etos puertos y todos ya son capaces de
alcanzar los 115200 baudios. Por tanto, en principio una velocidad "mayor"
que la que teoricamente alcanza el modem. Pero cuidado.... he dicho "en
principio". Ya veremos mas adelante que esto puede ser un cuello de botella.

Posteriormente tenemos un cable al modem. (muy "cortito" en los modem


internos, pero ese "cable" o contactos en un circuito impreso, existe. Por
tanto es similar a uno externo). Y por fin el modem.

* Bien los modem actuales al concectarse (y empezar a "pegar" pitidos entre


ellos), lo que estn es dialogando el como van a transmitir. Se interrogan
sobre sus velocidades, y realizan una prueba de velocidad tanto en
transmision como en recepcion. La mayoria de los modem, pueden llevar

103
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

velocidades diferentes de recepcion y de transmision. Igualmente interrogan


al modem "contrario" sobre el protocolo a utilizar para detectar y corregir
los posibles errores y otra cosa importante: si se puede utilizar algun
protocolo conocido para "comprimir" los datos. Si esto ultimo es posible,
realmente se puede enviar la informacion comprimida y por tanto a pesar de
la "lentitid" de los modem, se puede conseguir tasas efectivas de
transferencia altas.

Como ejemplo, imaginemos que los modem han dialogado perfectamente un


protocolo de compresion. Bien, no todos los archivos se pueden "comprimir".
Por ejemplo los archivos ZIP, ya lo estn. Pero las paginas HTML, etc...
realmente son "documentos de texto". Por tanto se pueden (y deben)
comprimirse perfectamente. Como curiosidad, la compresion depende de los
datos en s. Hay ficheros que pueden comprimirse 2 a 1, otros 1 a 1 (los ZIP
que no pueden comprimirse), y otros, por ejemplo los de texto, pueden
comprimirse hasta un maravillosos 16 a 1.

Bueno, pues pensemos ahora, que ha dialogado compresion. Que vamos a enviar
un fichero de texto y que en ese fichero se consigue la maxima compresion:
16 a 1. Y que tenemos una conexion perfecta a 33600.

Entonces el modem recibe a 33600. Como habian "negociado" compresion


hardware, el propio modem "descomprime los datos", y al descomprimir por un
factor de 16 queda: 33600 * 16 = 537.600.

Imposible!!. Por el "cable" del modem hemos visto que solo pueden ir 112500.
Luego entonces, el modem, al ver que no puede "alimentar" al cable de
salida, empieza a "renegociar" su velocidad con el modem contrario. Como la
compresio es de 16 a 1 y lo maximo que puede recibir es 112500, realiza el
calculo de 112500 / 16 = 7031. Y entonces "baja" (o lo intenta) su velocidad
por debajo de 7000 baudios. Suena ridiculo no?.

Como esto "pasa" con todos los archivos, y en cada uno de ellos su posible
factor de compresion es diferente, pues al modem lo estamos volviendo loco.
Cada 2 por tres est intentando renegociar velocidad. Pensemos que al
bajarnos una pagina web, hau varios archivos y muchas imagenes, cada uno de
ellos tendr (admitir) un factor de ocmpresion diferente.... esto es un
"cisco".

* La pega es el famoso "cablecito". (o el puerto para ser max exactos). La


limitacion de velocidad del puerto. Actualmente en las placas madre de
ultima generacion, ya hay puertos que admiten hasta los 921.600. La pega es
que por ahora, no hay modem que sean capaces de comunicarse con el puerto a
esa velocidad.

** Bueno: y como podemos solucionar esa "pega"?. La respuesta es inmediata.


Como actualmente nos "sobra" CPU, que tal si los datos los comprimimos a
priori por "software". Es decir lo comprime nuestra CPU, y ya lo envia
comprimido al modem. Como est comprimido. el modem no utilizar para esos
datos la compresion "hardware", o si la utiliza, d igual, no va a poder.
Bien, si el ordenador contrario hace lo mismo, estamos utilizando al maximo
todo nuestro "circuito" de comunicaciones.

Ahora solo falta saber si esto es verdad: como nos informa windows?.
Tenemos varias maneras de saberlo:

1) As en principio, si vemos que el icono de conexion telefonico, nos dice


unas velocidades "raritas" y que no son posibles: por ejemplo 112500 o
57600: malo. Nuestra comunicacion es "mala", windows nos est informando de
la maxima velocidad en el cable del puerto al modem. No nos est informando

104
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

de la velocidad "real" del modem. En este caso, no se ha podido negociar


compresion, lo cual es o bien por ruido en la linea, o porque los modem no
se entienden (improbable a estas alturas), o porque "explicitamente" en la
conexion, le hemos quitado la marca de "dialogar compresion". La mayoria de
los ISP chapuzas actuales, nos aconsejan quitar este marca. De esta manera
se curan en salud: por una parte, inocentes de nosotros, como el modem nos
dice 115200 nos creemos que estamos a velocidades altisimas, y por otra
parte, el propio ISP que suele tener problemas en sus baterias de modem con
las compresiones, pues se curan en salud y no invierten ns dinero en
hardware.

2) Otra manera de saber la velocidad, es en windows 98, mirar un archivo que


tiene el nombre de nuestro modem y la extension .LOG en el directorio de
windows. All conserve una historia de nuestra ultima conexion. En esa
historia podremos ver si se ha negociado o n la compresion, correccion de
erores y la velocidad "inicial" de conexion. Recordad que windows "no
refresca" la velocidad y esta se est renegociando constantemente. po
cierto, la culpa de que windows no nos muestre nada mas que la velocidad
inicial, no es de windows. Es por diseo de los modem. Los modem, unicamente
informa la primera vez. Luego no vielven a informar durante la conexion.

3) Una manera de ver la velocidad "real" del modem, es si nuestro proveedor


nos deja conectarnos via hyperterminal. (La mayoria de los IPS lo permiten).
Esta manera vamos a describirla a continuacion:

VELOCIDAD REAL DEL MODEM


-----------------------

Ha surgido varias veces como tema de discusin la velocidad real del modem.
Habia gente que comentaba que aunque su modem es un 28,8 vea velocidades
bajo windows de 56000 o incluso velocidades de 112500.

Bien vamos a distinguir, todo lo que interviene en la transmision y ademas


como podemos "preguntarle" al modem su velocidad real.

En una comunicacion via modem intervienen varios componentes fisicos.


Repasemos un poco lo que hemos introducido en el capitulo previo.

1) El puerto de comunicaciones
2) El modem
3) El dialogo entre nuestro modem y el de nuestro ISP.

La comunicacion desde el puerto a nuestro modem es de un maximo de 115200


(con los actuales puertos. Ver las excepciones que hemos citado antes).

La comunicacion entre los dos modem es el minimo de la velocidad indicada en


nuestro modem y el modem del proveedor (por ejemplo 33600).

Surgen dos preguntas comantadas anteriormente. Repasemoslo un poco:

1) por que es superior la velocidad de puerto/modem que la de modem/modem?.


Bien, es sencillo, los modem, ademas de "dialogar" la velocidad (en la cual
influyen ruidos de la linea, etc), dialoga la "compresion" de los datos.
Siempre intentan compresion. Evidentemente si nos estamos bajando un fichero
.ZIP, ya no puede comprimirlo. Pero si nos estamos bajando "texto", puede
llegar a factores de compresion de 16 a uno. En este caso, nuestro modem
"descomprime", por tanto incluso puede saturar la linea de 115200 con el
puerto de comunicaciones, por lo que debe volver a dialogar con el otro
modem para "bajar" su velocidad. En caso de datos insuficiente, intentar

105
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

por el mismo motivo "subir" la velocidad.

2) que nos indica la velocidad que vemos en el icono de windows?. Bien,


pues depende. Primero, siempre nos indica la misma. Es siempre la misma
independientemente que baje o suba. Y es la velocidad "en el momento" de la
conexion inicial. Pero otra pregunta: que velocidad, la de la linea
puerto/modem o la de modem/modem es la que nos muestra windows?. Pues
depende de nuestro modem y del protocolo negociado. Algunas veces incluso
tiene la desfachated de decirnos 115200, cuando esto es imposible!!. La
culpa no es de windows, es de la informacion que le pasa el modem a windows,
que insisto, depende del protocolo negociado y normalmente en V90 y con
ciertos modem, nos dice siempre 115200. Y nuestro modem es de 56K!!.

COMO PODEMOS SABER LA VERDAD?

Bueno, para ello, lo que debemos hacer es realizar una conexion con la
herramiente Hyperterminal de windows. Marcamos a nuestro proveedor. Una vez
establecida la comunicacion, le damos a INTRO y luego tecleamos despacito
"+++" (3 simbolos "+"). Nos debe salir "OK". En este momento hemos entrado
en dialogo con el modem. Ahora le tecleamos (en minusculas o en mayusculas,
pero NO debemos mezclar ambos):

ate1 (no veremos ninguna letra por pantalla, pero lo est recibiendo el
modem. de esta manera le ponemos "eco" al modem, para que a partir de ahora,
veamos lo que tecleamos).

Posteriormente tecleamos:

atw2
ato

Y nos mostrara por pantalla la velocidad REAL de portadora entre ambos modem
as como la compresion negociada entre ellos.

ULTIMAS TECNOLOGIAS: 56 Ks, V90, RDSI, ADSL y "CABLE".


------------------------------------------------------

* Posteriormente a los modem "analogicos" han surgido los digitales.

En el tramo de cable telefonico desde nuestro PC hasta nuestro ISP (y por


tanto hasta internet), intervienen una serie de tramos analogicos y
digitales. La comunicacion desde nuestra casa a la centralita telefonica, no
es nada mas que un hilo de cobre por donde siempre va informacion analogica.
Es decir, pensando en el sonido que emitimos en el microfono de nuestro
telefono, esta va "tal cual" lo hemos emitido por el cable de cobre hasta la
primera centralita telefonica.

Lo normal, es que actualmente las centralitas telefonicas sean ya todas


digitales. En este caso, el sonido, segun llega a la centralita, se
digitaliza. Se convierte en seales digitales de ceros y unos. Para
"digitalizarlo" lo que se hace es un "muestreo" de la seal, unos pocos de
miles de veces por segundo y esa informacin es la que ya viaja codificada
en binario.

* Evidentemente esto mismo se puede hacer "de partida". Pero hay que hacerlo
con mucho "cuidado". Si la informacion de partida ya est digitalizada,
podemos correr el riesgo de perdida de informacion al intentar digitalizarse
otra vez en la centralita.

Dejandonos de detalles tecnicos, la comunicacion digital es posible si se

106
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

cumplen las siguientes premisas:

1) Solo hay un tramo "analogico" en todo el circuito. Al menos hay uno


siempre: desde nuestra casa a la centralita telefonica. Por tanto, no debe
haber nada mas que ese.

2) Solo se puede hacer la comunicacion digital en un solo sentido. Por tanto


ser en el sentido de descarga, es decir en el sentido "hacia" nuestro PC.
Las seales de control y las peticiones e incluso los envios "desde" nuestro
PC, se harn en analogico a un maximo de 33600.

3) La maxima distancia de comunicacion analogica (desde nuestro PC a la


centralita telefonica) es de 4 millas (segun las normas internacionales.
Consultados tecnicos de telefona en Espaa, dudan que se pueda conseguir
correctamente si la distancia es superior a 2 Km).

4) Todo el cableado de todo el circuito debe estar en excelentes


condiciones.

** Bien, a la vista de lo anterior, resulta que tenemos mas pegas de las que
parece. Debido al punto 3) y 4), pocos en nuestro pais, estarn en
condiciones optimas de poder utilizar correctamente esta norma.

Y con respecto a la limitacion del punto 1), debemos observar que si


realizamos una comunicacion telefonica en directo PC a PC, nunca podremos
comunicarnos en digital (por encima de los 33600). Esto es debido a que
tanto nuestro PC como el PC que va a recibir, tienen cada uno de ellos un
tramo analogico (al contrario que los ISP que estn unidos en directo con
las centrales telefonicas). Por tanto en nuestro circuito existiran 2 tramos
analogicos y ya no es posible la comunicacion digital.

* En la historia de esta comuncacion "digital" surgieron dos normas (dos


grandes casas de la comunicacion enfrentadas). USR (3Com) con la norma X2 y
Rockwell (diamond, Supra, etc) con la norma K2FLEX.

Las normas son incompatibles. Es decir para comunicar con la norma X2, ambos
modem (el nuestro y el del ISP) deben soportar dicha norma. Igual con la
norma K2FLEX. Cada una de ellas tenia sus pequeas ventajas e
inconvenientes. Y lo que es peor, no eran normas "oficiales".

Posteriormente el comit ITU para la industria, se ha definido. Solucion


salominica: ninguna de las dos tiene el visto bueno. Se define entonces una
tercera norma: la V90.

Inmediatamente, los fabricantes han sacado ya actualizaciones de las bios de


los modem (casi todos los modem, tienen bios flash y por tanto
actualizables), para soportar dicha norma. Incluso algunos modem, soportan
su antigua norma (por ejemplo K2FLEX) y ademas la V90.

Rcordad que tanto el modem del nuestro ISP como el nuestro deben dialogar en
la "misma" norma.

** Pero tenemos una pega ms: estas seales son muy sensibles al "ruido" y a
las condiciones del cableado. Por tanto, aunque consigamos comunicacion
"digital", esto no quiere siempre decir que sea mejor que la analogica. A
veces es necesario "forzar" al modem e inhabilitar en l la comunicacion
digital. Esto es debido a que si las condiciones no son optimas, los modem,
pasarn mas tiempo dialogando el ajuste de velocidades y la correccion de
errores que realmente transportando los datos, y esto ultimo incluso provoca
cortes inexplicables. Por desgracia esto es as de duro.

107
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Existe un comando AT, que funciona en casi todos los modem del mercado que
es:

at+ms=11

Poniendo esta cadena de caracteres en las cadenas "extra" de definicion del


modem, podemos forzar la comunicacion a que siempre sea en analogico. Al
menos de esta manera podremos funcionar.

Como detalle curioso, en mi caso particular, con el mismo modem y "contra"


el mismo ISP, desde mi casa, debo forzar la comunicacion "analogica" ya que
en otro caso, tengo cortes continuados y una velocidad realmente mala. En
combio, con el mismo modem, mismo ISP, desde mi trabajo, por ejemplo (con
instalaciones de telefona nuevas y ademas perfectas ya que es desde un
centro de calculo), la comunicacion se realiza sin problemas.

** Otro problema aadido, al menos en Espaa, es que telefonica ha


"decidido" cortar la comunicacion digital en una serie de centralitas (que
realmente son digitales) con viejas tecnologias, o reconvertidas y que les
estn causando problemas. En estos casos "nunca" conseguiremos comunicacion
digital (lo cual es "casi" mejor). Igualmente, no todas las baterias de
modem de nuestros ISP son perfectas y su "firmware" ha sido adaptado a las
ultimas tecnologias. Por ello, cirtas marcas de modem, dialogan con un
determinado ISP mejor que otras (y siendo los dos modem V90).

RDSI: Es una tecnologia ya vieja, que nos permite hasta 64 Kbs por canal.
Para poder tener RDSI necesitamos una tarjeta especial en nuestro PC, e
igualmente una o dos lineas especiales (cada canal es una linea) contratadas
con telefonica. Esta tecnologia era bastante mas cara que la tecnoclogia de
modem. Actualmente al precio que se est poniendo en Espaa las llamadas
telefonicas locales esta opcion de comunicar mediante RDSI ya es
competitiva.... sin fuese por la introduccion casi inmediata de otras
tecnologias que estan empezando a surgir. Excepto el driver de la tarjeta
que es necesario el del fabricante, tanto w95 como w98 soportan esta
tecnologia.

ADSL: Es una comunicacion "asimetrica" que en principio no puede permitir


velocidades de 256 Kbs en la descarga. Totalmente asimetrica ya que la la
velocidad de "subida" ser sensiblemente inferior. Implica al igual que la
anterior a que debemos tener un "adaptador" (tarjeta) especial, cuyo precio,
segun primeras estimaciones de salida, es realmente caro. Igualmente es
necesario contratar una tarifa especial con nuestro ISP. Windows 98 SE
(Second Edition) ya trae soporte para estas tarjetas: es el "IP sobre ATM".
Unicamente es necesario el driver fisico del fabricante de la tarjeta. El
resto de las capas de software ya est implementado en la "Second Edition".

CABLE: Todavia no se ha implementado en Espaa (excepto experimentalmente en


algunas ciudades) y realmente es una tecnologia "antigua". Existen dos
variantes, una "asimetrica" como el ADSL y otra bidireccional para tener la
misma velocidad de subida y bajada. La "asimetrica" consta de una tarjeta
especial y un modem. Es decir de 2 adaptadores de red (cada uno con su
direccion IP). El cable es para "bajar" y el modem se utiliza para "subir",
as como para las peticioens y las seales de control. Necesita ademas de un
software especial. No est directamnete soportado por windows.
Las velocidades llegan a los 2 megabits por segundo. Realmente "bestiales".

* Independientemente de lo anterior, actualmente empieza una "nueva"


tecnologia. No s realmente el nombre con el cual saldr al mercado. Esta

108
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

tecnologia a la que he llamado nueva (con comillas) realmente era posible


desde hace unos aos y consigue velocidades realmente astronomicas sobre un
hilo de cobre normalito, es decir sobre "nuestra" propia instalacion
telefonica sin necesidad de nada nuevo. El chip que es capaz de realizar
esto ya ha sido diseado. Por tanto, teniamos toda la infraestructura y la
base tecnologica para hacerlo. La pregunta es por qu no se hizo antes?. La
repuesta, intuyo que es muy simple: por motivos comerciales, por condiciones
de mercado. Era necesario primero "amortizar" las tecnoligas previas. Y
quienes sufrimos esto... curiosamente... somos siempre los mismos.

** Hemos estado viendo entonces, una serie de capas que van recubriendo al
nucleo de windows. Quiz hemos hecho mas incapi en las capas de red, debido
a que actualmente (y en el futuro) dependemos de internet. Nuestro PC ya no
es una maquina unica. Se est integrando en la red. Pero evidentemente
existen otras "capas" que rodean al nucleo de windows y que se van
inicializando segun windows est arrancando. Todo esto, "Desde que pulsamos
el boton de encendido de nuestro PC...". Vamos a citarlas a continuacion
describiendo unicamente un poco sus funcionalidades.

OTRAS CAPAS DE SOFTWARE EN WINDOWS


----------------------------------

* Otras capas (e incluso "Tecnologas") de las que hemos oido hablar en


windows, son: OLE, ODBC, ASPI, TWAIN, DIRECTX, REDES, por poner solo un
ejemplo de ellas.

Es decir, windows, al igual que otros sistemas operativos, consta de un


nucleo (normalmente reducido en comparacion con el resto), que es el
encargado del manejo de las tareas (multitarea), el manejo de la maquina
virtual y las capas de controladores de dispositivos, tanto genericas como
los propios miniports incorporados en windows.

Y ahora empezamos a crecer hacia arriba. Hay dos motivos fundamentales para
esto:

1) Se debe intentar que el software de aplicacion no sea dependiente del


hardware. (nos debe dar igual que tarjeta de video se utiliza para un juego.
Ser mas o menos rapida, pero "nuestro" programa debe ser capaz de
ejecutarse siempre sin necesidad de "saber" que hardware tenemos montado en
nuestra maquina).

2) Dar la misma interface unica y estandar a los programas de aplicacion.

3) Evitar funciones "redundantes". Es decir, realizar las "cosas" en un solo


sitio y que no sean los programas de aplicacion los que tengan que realizar
las mismas tareas que las que ya suminstra (o debe suministrar) el sistema
operativo.

* Es ilogico, por ejemplo, que un "navegador" se defina todo el TCP/IP y la


comunicacion telefonica. Estas dos ultimas deben "pertenecer" al sistema
operativo. Un "navegador" solo tiene que utilizarlo. Como? pues mediante
una serie de funciones "estandard" y totalmente documentadas (llamadas
siempre API de programacion). Cualquiera que tenga que utilizar "ese"
subsistema, lo deber hacer entonces mediante el API de programacion de
redes (o de telefona). De esta manera "abstraemos" la capa fisica.

** Como podemos conseguir los tres puntos anteriores?. Pues a base de


"capas" que nos den unas funciones especificas y siempre las mismas. Estas
funciones se las ha denominado API (Aplication Program Interface).

109
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Evidentemente existen API's para mucas cosas: para video, sonido, manejo de
cualquier dispositivos SCSI, acceso a bases de datos (cualquiera).... etc.

Estas series de capas que realmente "abstraen" a los programas de aplicacion


del resto de hardware, o incluso de la logica de una base de datos por
ejemplo. Son las que realmente hacen potente un sistema operativo. Son
ademas las que hacen "crecer" ese sistema operativo.

Por suerte o por desgracia, Microsoft se "di" cuenta de estas


caracteristicas en su da. Y se dedic a hacer unos estandares, que al
principio eran de libre distribucion y normalmente venian con los paquetes
que instalabamos y que actualmente vienen ya incorporadas en el propio
sistema.

* Por desgracia, si nos fijamos en el parrafo anterior.. que indica?. Pues


que como "antes", para windows 3.1, e incluso para el original w95, no
existian esas capas incorporadas en el sistema operativo, a pesar de ser de
gratuitas y de libre distribucion, pues los fabricantes de software se veian
obligados a distribuirlas con sus paquetes. Esta costumbre sigue existiendo
y por desgracia la mayoria de los fabricantes de software, *no* verifican si
esta capa ya est instalada y ademas su numero de version. Por tanto, muchas
veces "machacan" DLLs y capas enteras del actual sistema operativo, con lo
cual mucas otras funcionalidades nos pueden dejar de funcionar. Este es un
tema realmente peligroso. Al menos windows 98, nos d una herramienta: SFC,
que veremos mas adelante, y que nos puede proteger (o avisar) de estas
situaciones.

Existen multitud de estas capas en windows. Podemos citar:

OLE: permite el uso e itercambio de mensajes (y objetos) entre aplicaciones.


El futuro del OLE es el DCOM, es decir objets distribuido en la red y que
pueden usarse desde aplicaciones de red.

ODBC: (Open DataBase Connectivity) Para conectividad abierta de bases de


datos, es decir nuestra aplicacion es capaz mediante este API de acceder a
cualquier base de datos. No importa que tipo ni donde resida fisicamente (en
local o en red). Es el mismo programa de aplicacion para aceeder a una base
de datos Access por ejemplo, o bien a una base DB2 que reside en un
mainframe.

ASPI: Es una capa de abstraccion del hardware que nos permite acceder a
caulquier dispositivo SCSI. (es necesario recordar tambien que el
controlador ESDI_506.PDR para acceso a discos duros IDE, nos permite tambien
una interfaz SCSI con el CD-ROM o grabadores de CD que sean IDE ATAPI). Por
tanto, los programas "grabadores" de CDROM, al utilizar la interface ASPI,
les d igual que el grabador sea IDE ATAPI o SCSI o incluso de puerto
paralelo. El programa grabador, "d" ordenes a la capa ASPI.

TWAIN: Similar al ASPI pero para dispositivos de imagen (Scanners, Camaras,


etc).

REDES: Este es el ejemplo de mayor abstraccion. Una vez fijada la red, nos
d igual que es lo que hay en el otro extremo. Incluso que sistema operatvio
tiene. Nosotros "vemos" perfectamente su disco compartido. Como ejemplo: un
disco particionado con el sistema nativo de NT, tiene particion NTFS que
windows 95 / 98 no puede ver. No sabe ver otras particiones que no sean FAT.
Pero si ese disco est compartido en una red, podemos verlo perfectamente
desde un ordenador con win 95 / 98 como si fuese un disco local. Es
exactamente igual a efectos de la aplicacion, e incluso del propio windows.

110
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

DIRECTX: Es una capa de abstraccion del hardware para video, sonido y


dispositivos de entrada -joysticks, raton, teclado, gamepad-. De esta
manera, los "juegos" actuales (son los que mas uso hacen de esta capa), no
tienen porqu conocer el hardware. Simplemente hablan directamente con la
capa directX y por tanto funcionarn con cualquier tarjeta de video.
Condicionantes: los drivers del fabricante de la tarjeta de video,
evidentemente tambien tiene que saber hablar hacia arriba, con la capa
DirectX.

** Todas estas capas se deben inicializar correctamente al arrancar windows,


y estar a disposicion de cualquier programa de aplicacion.

PUNTO FINAL DEL "ARRANQUE"


--------------------------

Como punto final a todo esto, est el "shell" de windows. Actualmente dicho
shell es el propio explorer.

La inicializacion correcta de una red (y windows es un sistema operativo


orientado a red), termina cuando nos identificamos a ella. Justo cuando
arranca el shell (es decir el explorer). Por ello es "obligado" entrar a
windows con usuario / password. No hacerlo as nos causar malfuncionamiento
de algunas de las caracterisiticas de windows como:

1) No guardar contraseas de conexion correctamente.


2) No estar autentificado a una posible red (por ejemplo, una conexion
telefonica PC a PC o una conexion via cable). Por supuesto no podremos
establecer una "red".

* Por tanto, como punto final de estos capitulos y justo antes de


inicializarse correctamente el explorer, debemos "autentificarnos".

** Creo que como una pequea vision general del sistema, estos
"capitulillos" han podido servir para perder el miedo a ese gran desconocido
que es windows. La vision que he intentado dar, por poner un simil con la
medicina, es la vision desde el punto de vista de un "enfermero", saber o
intuir por donde van las cosas. Ni tan siquiera he querido complicar las
cosas para intentar verlas desde el punto de vista de un medico de medicina
general. Y pensar que ademas, todava, existen los especialistas. Nos
quedamos simplemente en la sala de "curas". En la "enfermera".

************ Y POR FN ARRANC *****************

** Como colofn, voy a incorporar unos cuantos ANEXOS sobre alguna pequea
utilidad y unos pequeos cuidados que debemos tener en windows.

ANEXO I: SFC (SYSTEM FILE CHECKER)


----------------------------------

Es el programa SFC.EXE Dicho programa reside en el directorio


windows/system. No existe un icono en windows para ejecutarlo, por lo que o
bien, nos creamos un acceso directo al programa en ese directorio, o bien
podemos ejecutarlo desde Inicio->Ejecutar.

La primera vez que lo ejecutamos (Y DEBERIA SER NADA MAS INSTALAR W98), crea

111
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

una base de datos con las versiones de todos los programas y Dlls de tu PC
(realmente, si nos fijamos, con los que residen en las carpetas mas
importantes. Pero esto lo podemos personalizar tambien dentro de las
opciones de configuracion del propio programa)

Una vez ejecutado, debemos entrar en configuracion y marcar las DOS ultimas
casillas de esa pantalla, es decir: de verificar ficheros borrados y
verificar numero de version e los programas.

Posteriormente, cada vez que lo ejecutemos comparar su base de datos con


las versiones actuales. Si difieren nos permite, bien actualizar sus datos,
o RECUPERAR desde los ficheros de instalacion de W98.

Es quiz la herramienta mas potente de control de w98. Nos sorprenderemos


cuando al instalar software de terceros, vemos las "guarradas" que hace con
las DLLs de windows. Despues de unas cuantas instalaciones, nos asombraremos
de como es que windows sigue funcionando.

** Es necesario tener varias precauciones:

1) S alguna vez, el SFC se "queja" diciendo que tenmos daado USER.EXE o


KERNL32.EXE, *no* debemos recuperarlos. A veces SFC los considra daados
cuando realmente no lo estn y es debido a que ciertos controladores "tocan"
para establecer algun "gancho" de software, la cabecera de dichos archivos.
Si los recuperasemos, SFC no sabe hacerlo correctamente ya que la version
que recupera del CD de instalacion de windows, es una version "reducida" de
ambos archivos, que unicamente es la que se utiliza al instalar windows. No
posteriormente durante su ejecucion real.

2) El criterio basico para recuperar o no una DLL o programa, *no* debe ser
nunca la fecha de creacion del archivo. Guiarnos *siempre* por el numero de
version de la DLL o programa. Un numero de version *superior* siempre es el
correcto. En el caso de numeros de version *igual* pero tamaos diferente de
archivos, no debemos recuperar. Darlo por bueno. Existen utilidades del
propio microsoft, que son capaces de "alinear" el codigo de una DLL para que
su ejecucion sea mas rapida. Por eso es por lo que a veces, vemos el mismo
numero de version y tamaos diferentes.

3) SFC, siempre deja un LOG (fuchero de historia) en el directorio de


windows llamado SFCLOG.TXT. Es bueno el tenerlo y usarlo como "historia".
Para que nos puede servir: facil. maginemos una DLL que trae windows y es
la version 1002. Instalamos por ejemplo Office, el cual nos "sube" la
version de esa DLL a la 1034. Y por desgracia, imaginemos que ahora un
software de terceros nos machaca es version colocando la 1010. En este caso,
SFC sequejar diciendo que tenia la 1034 y ahora est la 1010. Pero si
recuperamos la de windows, nos recuperar la 1002. Todavia ms *inferior* a
la actual.

En estos casos es necesario "mirar" el log y por tanto podremos saber que
nos lo instalo Office. Sobre todo si tenemos la precaucion de escribir (con
el notepad por ejemplo) en ese archivo, una linea de coment6arios cada vez
que instalamos un producto. Despues de ejecutar SFC, nos escribir a
continuacion de esa linea las DLL y su numero de version que el producto ha
actualizado. Con esta precauciones, sabremos que nos lo instal Office, y
por tanto podremos recuperar desde Office.

** Realmente hacia falta una herramienta as desde hace mucho tiempo.

ANEXO II RESUMEN DE NOTAS Y PROBLEMAS COMUNES

112
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

---------------------------------------------

Paso a resumir aqu unos pequeos truquillos para configurar e instalar


win98 y evitar el tener los problemas ms comunes.

* ANTES DE INSTALAR
-------------------
1) Entrar en la BIOS y poner en la pantalla de PnP, a la pregunta PnP OS
(PnP Operating System), un *NO* o *disabled*. (casi todas las bios nos hacen
esta pregunta pero puede que la nuestra en particular no la tenga).

2) Configurar el puerto paralelo como ECP+EPP con DMA=3. Si posteriormente


tuviesemos problemas con la impresora, se deber cambiar a EPP.

3) En la pantalla de PnP, deberemos asignar la IRQs que sepamos que son de


dispositivos ISA no PnP a la opcion "ISA" o "Legacy ISA". Incluso algunos
dispositivos ISA que se "autodenominan" PnP, no lo son tales y debemos
configruar entonces de esta manera la BIOS (ejemplos clasicos, son los modem
internos, las tarjetas SCSI ISA, y algunas tarjetas SoundBlaster PCI).

4) Si nuestra tarjeta de video es PCI, recordad que debe estar en el SLOT 1


o 2. (estos son los mas alejados del bus ISA, es decir los mas cercanos a la
fuente de alimentacion). Ciertas BIOS no inicalizan correctamente la tarjeta
de video, si esta no est en alguno de esos SLOTs. (a ser posible en el 1).

5) Instalar windows desde el directorio win98 del CD con el parametro /p j


(un espacio en blanco entre la "p" y la "j") telecando:

instalar /p j

Esto nos reconocer nuestra BIOS como ACPI si lo fuese (unicamente las
placas madre de ultima generacion y BIOS de ultima generacion, poseen la
facilidad ACPI. Merece la pena que windows se monte como ACPI).

* DURANTE LA INSTALACION
------------------------
Si al instalar, durante el segundo boot de la instalacion, el sistema se nos
"cuelga" y es incapaz de finalizar la instalacion por mucho que reiniciemos
el PC, deberemos entrar en el modo a prueba de fallos y teclear en
Inicio->Ejecutar el comando regedit.

All buscaremos la clave: IDEDMADrive0


Deberemos cambiar el valor 01 por el valor 00 e intentar continuar con la
instalacion.

(esto ocurre normalmente con las versiones OEM (para equipos nuevos sin
windows preinstalado, y en combinacion con ciertos controladores de placas
madre. Fundamentalmente placas madre de baja calidad.).

* DESPUES DE LA INSTALACION. MANTENIMIENTO GENERAL


--------------------------------------------------
* Nada mas instalar windows, debemos ejecutar el programa SFC (que reside en
c:\windows\system), y despues de finalizar su ejecucion, y antes de
salirnos, deberemos entrar en las opciones de "Avanzado" y dejar marcados
los dos ultimos casilleros ("Verificar programas borrados" y "Verificar
numero de version"). De esta manera hemos creado una base de datos con los
programas y numero de version de las DLLs que windows nos acaba de grabar.

* Cada vez que realicemos una instalacion de cualquier producto, ejecutar


otra vez SFC. Si el programa nos ha sustituido alguna DLL de windows o

113
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

borrado alguna, nos permite recuperar la de windows. En caso de que nos haya
sustituido alguna, nos d el numero de versin actual y el numero de versin
previo que tenia almacenado. Si el numero de versin actual
(independientemente de la fecha) es menor que el que teniamos deberemos
recuperar con el propio SFC la versin original. Si es igual o mayor el
numero de versin, podemos darlo por bueno.

** NOTA: Si alguna vez SFC se "queja" que el user.exe o el krnl32.exe estan


daados y nos d la opcion de recuperarlos: NO RECUPERAR nunca. El SFC se
"equivoca" en este caso al recuperar debido a que existe dos versiones de
esos ficheros. Una "minima" para la instalacion, y otra la del
funcionamiento normal de windows. Si dejamos que SFC recupere, recuperar la
primera que se encuentra y esta el la "minima" para instalar windows. Por
tanto, windows no nos arrancar. Si por desgracia la hemos recuperado y
windows no arranca, todavia podemos tener solucion. Para ello, arrancamos
con el disco de inico de win98 y ponemos en nuestra unidad de CD el disco de
instalacion de win98. Cuando hayamos arrancado, tecleamos:

c:
cd \windows\system
extract /a /e e:\win98\base5.cab user.exe

(he supuesto que el CD es la letra e: -que es lo normal bajo el disco de


inicio-, sino fuese esta, sustituir por la correcta).

* POSIBLES PROBLEMAS AL INSTALAR ALGUN DRIVER DE DISPOSITIVO


------------------------------------------------------------

** AL INSTALAR LOS DRIVERS DE UN MODEM


--------------------------------------
** Ciertos modem's instalan un dispositivo "Wave Device for voice modem" en
el sistema, que puede verse en el Administrador de dispositivos colgando de
"Controladores de Sonido y Juegos". Ciertos .INF de instalacion de modem's
(fundamentalmente los antiguos para win 95), son incompatibles en este
dispositivo para win98. Si despues de instalar este dispositivo, tenemos
"cuelgues" estraos de la maquina, y fundamentalmente al cerrar windows (no
termina de cerrar), debemos pinchar dicho dispositivo en el Administrador
del sistema y marcar la casilla de "No cargar en este perfil de software".
No sirve darlo de baja, ya que lo volver a instalar al arrancar.

** EN EL ARRANQUE
-----------------
** Al arrancar windows, nos d una pantalla negra (estilo MsDOS) con un par
de lineas en la parte superior que nos advierte: Imposible arrancar windows.
Error en IFSMGR o bien Error en DOSMGR. Probablemente algun dispositivo de
puertos de comunicaciones COM1, COM2, paralelo o de raton es el causante del
problema. Si acabamos de instalar algun dispositivo de puerto paralelo,
entrar en modo a prueba de fallos y eliminarlo. Si es por culpa de los
drivers del mouse, igualmente sustituir el driver de raton por un raton
standard de windows.

** Acabamos de montar una segunda placa de video para tener la posibilidad


de multimonitor y la maquina no nos arranca. Solucion: Revisar primero el
config.sys y ver si tenemos la linea de EMM386.EXE. Si la tuviesemos n
principio comentarla y probar. Si el sistema arranca, alguno de los
parametros del EMM386 es invalido para multimonitor. Revisar los Include y
Exclude, ya que la BIOS de ambas placas de video ocupan mas epsacion, y
ademas ahora ya no se puede utilizar el parametro I=B000-B7FF en el EMM386
en el caso de multimonitor. Si el tema no fusese el EMM386, revisar que las

114
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

placas de video sean AGP+PCI (en slot 1) o PCI+PCI (en slots 1 y 2), No
puede utilizarse placas ISA para multimonitor.

** Acabamos de instalar una nueva placa de hardware y el sistema no arranca.


Verificar primero que realmente es la nueva placa y no otra anterior que por
culpa de incompatibilidades sea la causante. Para ello, arrancamos con CTRL
pulsada y cuando nos salga un men de opciones, tecleamos MAY+F8 y le damos
Intro. Nos ir preguntando si carga los drivers uno por uno. Le damos a todo
que *SI*. El sistema se colgar igualmente, pero nos habr dejado un fichero
oculto en el raiz de C: con el nombre bootlog.txt. Para evitar perder ese
fichero, lo mejor en ese momento, es arrancar con un disco de inicio, y
posteriormente teclear:

c:
cd \
type bootlog.txt > boot.txt

de esta manera, ya podemos analizar el fichero "boot.txt" y ver la ultima (o


ultimas) lineas de l. All nos dir el controlador causante del problema.
A veces la solucion pasa sencillamente por cambiar la placa fisicamente de
slot. Si fuese una solucion ms complicada, se deber analizar el contenido
del fichero anterior.

** EN EL CIERRE
---------------
** Al cerrar windows, nos d un error en el programa MSGSRV32. Este error
suele estar causado por utilizar algun chip de sonido de la marca CMEDIA
(cmxxx) y es bastante corriente en las placs madre que tiene la tarjeta de
sonido on-board. Es un problema reconocido por el fabricante, que se corrige
sustituyendo los drivers de sonido por los ultimos de cmedia. Puede buscarse
en su web en www.cmedia.com.tw

** Windows no se cierra correctamente, o se queda en la pantalla del logo de


cierre pero sin finalizar. Solucion: ejecutar el programa MsConfig desde
Inicio->Ejecutar, dar al boton de "avanzado" y marcar la opcion de
"Deshabilitar apagado rapido". El causante suele ser algun driver de
dispositivo instalado que nos impide el apagado rapido (o algun programa que
se carga en el inicio).

** Para e problema anterior, ver tambien el comentario que he realizado al


instalr un modem sobre el dispositivo "Wave device for voice modem".

* RECONOCIMIENTO DE DISPOSITIVOS
--------------------------------
** Nada ms finalizar la instalacin (o incluso re-instalacin) de windows
sobre todo s durante la instalacin hemos tenido alguna pantalla azul
(BSOD), es conveniente ejecutar el programa ASD. Este programa nos dir si
ha habido algun dispositivo que ha causado un error crtico al instalar y
nos permitir en ese momento, el intentar cargarlo.

** Win98 no nos reconoce nuestra unidad de CD-ROM, o nos la reconoce


unicamente si iniciamos windows con un CD insertado en la unidad. Problema
bastante comun. Win98 es "exigente" con las unidades de CD-ROM y los
fabricantes se toman las normas a la torera o bien sufren incompatibilidades
con ciertas bios de ciertas placas madre. Una causa comun de estos
problemas, es tener la unidad de CD-ROM como "master". Recordad que los
controladores IDE, normalmente son dos. IDE Primario y secundario. Y
recordad que en cada canal IDE, pueden montarse dos dispositivos, uno como

115
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

"master" (maestro) y otro como "slave" (esclavo). Pues bien hay ciertas
unidades que no pueden estar como "master" en win98 y ademas no pueden
tampoco estar "solas" en un canal IDE. Por tanto reconfigurar el hardware de
vuestra maquina para que no se d la situacion anterior.

* DURANTE EL FUNCIONAMIENTO
---------------------------
** La asociacion de ciertos iconos de windows, as como la vista previa de
dichos iconos, por ejemplo los GIF, se ha perdido y no podemos recuperarala
(nos sucede al instalar algun programa de graficos). Solucion: Ir a
inicio->Ejecutar y teclear:

regsvr32.exe /i shdocvw.dll

** Como precaucion, no instalar *ninguna* actualizacion (directx, etc..)


sobre el propio sistema, que no est en la pagina de WindowsUpdate. Muchas
(todas) las actualizaciones de MS en sus paginas, **NO** son para win98. Son
para win95 y por tanto no se deben instalar en win98 a no ser que
"explicitamente" nos lo diga. No fiarse del software distribuido en los CD
de las revistas. *ponga lo que ponga*

** En caso de problemas con alguna instalacion, debemos recordar que windows


conserva una copia del registro, de los ultimos 5 dias en que hemos entrado
a l. Realiza esta copia la primera vez que "entramos" en el sistema en el
dia. Si quisiesemos recuperar la situacion del registro al inicio del dia, o
bien de algun dia previo, arrancamos con la tecla CTRL pulsada, y cuando nos
salga un men, seleccionamos "Solo simbolo del sistema". Una vez en l,
tecleamos:

scanreg /restore

Nos mostrar una lista con la fecha de las copias de seguridad del registro
y nos permitir recuperarlas.

* AL AADIR NUEVO HARDWARE


--------------------------
** Posibles problemas al aadir un ZIP puerto paralelo: windows nos muestra
una pantalla estilo MsDOS indicando un error y no arranca. Si lo
reintentamos windows entra correctamente. Es un problema clasico de
conflicto con el puerto paralelo. Montar el ultimo driver de iomega (buscar
en www.iomega.com) y muy importante: configurar el puerto de la bios como
ECP+EPP. Quiz esto no soluciones del todo el problema, pero lo minimizar
lo ms posible.

** Posibles problemas al instalar un LS-120 (disco Imation o SuperDrive) en


el puerto paralelo. Instalar el ultimo driver sd125.exe disponible en el web
de imation: www.imation.com Esto no nos solucionar el problema de que la
inicializacion de dicho driver es de cerca de un minuto que perdemos en el
arranque de windows, pero nos eliminar problemas de arranque y
fundamentalmente de compatibilidad con otros dispositivos en el puerto
paralelo, fundamentalmente algunos modelos de impresoras.

** Si aadimos una tarjeta SCSI PCI, a ser posible instalarla en el SLOT 4


de la placa madre. Verificar posteriormente el que no comprtat su IRQ con
otro dispositivo de acceso a disco. Y a ser posible que no lo comparta con
ningun dispositivo. Esto puede lograrse cambiando fisicamente en los slots
las tarjetas PCI que tengamos (excepto la de video, que debe estar en el
slot numero 1).

** Con ciertas tarjetas SoundBlaster PCI (por poner un ejemplo de una

116
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

tarjeta de sonido PCI), existen problemas con la asignacion de IRQs tipo ISA
al slot PCI. Desde luego, la norma PCI no permite esto, pero el fabricante,
parece saltarselo a la torera. Existen dos posibilidades: una hardware que
pasa por conectar mediante un conector especial la tarjeta PCI a un conector
tambiuen especial en la placa madre para "robar" al bus ISA la IRQ
correspondiente. No todas las placas madre soportan esto. La otra solucion
es configurar la BIOS, en la pantalla PnP, para asignar la IRQ que quiere
pillar la tarjeta de sonido, a ISA o Legacy ISA. De esta manera tambien nos
funcionar. Los ultimos modelos de BIOS, ya tienen normalmente presente esta
casuistica con lo que no tendremos que hacer nada.

** Los modem internos, son causas de multiples problemas. Recordad que la


mayoria de ellos son configurables mediante "pins" o "switches". Deberemos
configurarlos para una IRQ superior a la 9 (es vlida la 9 si el modem es
autenticamente PnP). Y si nos lo permite para COM3 o COM4 (este ultimo no
aconsejado si tenemos una placa de video con un chip S3). Igualmente la IRQ
asignada al modem, debemos configurarla en la BIOS como ISA o Legacy ISA.
Las IRQs de modem internos *NO* pueden compartirse con otro dispositivo (y
puede que sucedan estos errores en los modem PCI). Por tanto hay que vigilar
que la BIOS no haya cometido errores y haya compartido dicha IRQ.
Si es as y el modem es PCI, cambiar de SLOT el modem.
Si el modem es ISA, deber configurarse por "switches" en alguna IRQ
diferente a la 3 y 4 (y yo aconsejo que tampoco sea la 5 y la 7, por tanto
debe ser la 10, 11 o 12. Y si seguinos teniendo problemas deberemos entrar
en la BIOS de la maquina, y la IRQ que pille, o quiera pillar el modem,
marcarla en la pantalla PnP de la BIOS, como ISA o LEGACY ISA.

* AL REINSTALAR WINDOWS 98
--------------------------
** Ciertas grabadoras de CD (por ejemplo HP 8100), tienen incompatibilidad
con una VxD estandard de windows: la SCSI1HLP.VXD (que reside en
C:\windows\system\iosbusys). Al instalarse lo que hacen es renombran dicha
VXD por otra extension, con lo que windows ya no la carga. Pero si
reinstalamos windows por encima, el instalador nos volver a dejar dicha VXD
en cuyo caso windows ya no arrancar. Es necesario entrar en "solo simbolo
del sistema" y borrarla.
Particularmente me parece una "chapuza" por parte de HP. Y ademas al
eliminar dicha VXD, todos los posibles dispostivos SCSI 1 que tengamos en
nuestro hardware, dejarn de funcionar (menos mal que el SCSI 1 es una vieja
norma y ya quedan pocos dispositivos..... pero quedan!!).

* AL AADIR NUEVO SOFTWARE


--------------------------

** Se deber verificar siempre, despues de aadir nuevo software, mediante


el programa SFC, que no se han "machacado" ninguna de las DLL's de windows
(es muy normal que los fabricantes de software hagan lo que les d la gana y
nos "machaquen" medio sistema).

** Si empiezan a ocurrir cuelques y situaciones anomalas, recuperar


inmediatamente el registro con scanreg /restore al arrancar en "Solo simbolo
del sistema". Por situaciones anomalas, entiendo por ejemplo ciertos
"cuelgues" del equipo al navegar. Esto es lo ms sintomatico. Hay software
comercial y de instalacion muy corriente (por ejemplo "GetRight") que en
muchos equipos causa cuelques inexplicables por ejemplo al dar el boton de
"retorceder" pagina en el navegador. No hay solucion excepto desistalar el
software y por si acaso, recuperar la base de registro.

ANEXO III: SCANREG (COPIAS DE SEGURIDAD DEL REGISTRO)

117
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

----------------------------------------------------

Windows 98 al arrancar cada da (una vez al da), realiza una copia de


seguridad de la base de datos de registro (el famoso "registro" de windows).

Independientemente de esto, siempre al arrancar nos realiza una comprobacin


sobre el registro: si est daado o no al menos en su informacin mnima
necesaria para el arranque.

Debido a los dos puntos anteriores, el arranque de win 98 es mas lento que
el de win 95. Pero como contraprestacin, es mucho ms seguro.

Cuantas copias se guarda?. Es decir cuantos das se guarda?: Por defecto 5


das. Se puede modificar en el fichero scanreg.ini. Igualmente en este
fichero se puede deshabilitar la opcin de copia y verificacin del
registro, con lo cual nos arrancar mas rpidamente, pero perderemos una
seguridad que antes o despus nos har falta.

Y ahora la pregunta del milln: como podemos beneficiarnos de esto? y como


podemos recuperar la situacin a un da determinado?.

Bien, supongamos que nuestro registro se ha daado, o algn programa lo ha


"roto", del todo (extensiones de archivo perdidas, redefinidas, etc....)

Nos queda la solucin de recuperar el registro a la fecha que queramos, para


ello:

* Arrancar en modo "Solo smbolo del sistema" (si tenemos pulsada la tecla
CTRL al arrancar, nos mostrar un men, antes de entrar en windows, y all
podremos seleccionar).

* teclear:

scanreg /RESTORE

esto nos mostrar una lista de las copias de seguridad del registro y sus
fechas. Con esto podemos recuperar.

Si en algn momento, bajo windows (dentro de windows) queremos que nos


realice una copia nueva, independiente de las que ya se ha guardado en el
inicio del da, podemos ejecutar el programa: SCANREGW (cuidado: termina
en W)

Este programa primero nos analiza el registro (podis ejecutarlo en


cualquier momento), y por ultimo nos da la opcin de realizar la copia de
seguridad.

****** Espero que esto SI QUE SEA UTIL ***** y se utilice (se puede hacer en
cualquier momento ANTES de una instalacin. Posteriormente mediante SFC y
mediante la recuperacin de la base de registro, volvemos JUSTO a la
situacin inicial de antes de la posible instalacin del producto
problemtico. Solo una cosa ms. Por si acaso: vigilar lo que hay en
windows\system\iosubsys. Listar los ficheros y fechas y guardarlo. Esto lo
digo, porque cualquier VXD en ese directorio, windows la carga SIEMPRE. Si
una instalacin, nos guarda una VXD all, por mucho que recuperemos con
"scanreg /RESTORE", y SFC, por desgracia la VXD nueva, est all, con lo
cual se cargar. Y esa puede ser problemtica.

ANEXO IV: WALIGN (OPTIMIZACION DE CARGA DE OFFICE)

118
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

--------------------------------------------------

Tcnicamente este programa lo que hace es "barajar" el ejecutable al objeto


de dejar los cdigos de segmento alineados realmente, tal y como se van a
ejecutar en la maquina.

Por poner una similitud con el antiguo MS-DOS, los deja como eran los
ficheros COM, es decir se cargan y directamente se ejecutan, sin necesidad
de que el loader (cargador), realice nada en especial. Realmente el smil es
un poco basto, pero para nuestro caso, sirve de momento. Es decir,
simplifica la vida al cargador y los programas por tanto se cargan en
maquina "bastante" mas rpido.

Podamos alegar, que esto era lo mas lgico desde el diseo del primer
Windows. Efectivamente, pero por los motivos que sea, esto no estaba as.
Es decir el "linker" (montador) de programas standard, no deja correctamente
alineados los segmento de cdigo y datos de un programa o dll. La funcin de
WALIGN, es arreglar esto. Para ello, se apoya en un fichero INI que reside
en el directorio system (curioso no?). El cdigo de w98, ya viene
"alineado", es decir no hace falta optimizarlo (cuidado con las aplicaciones
que nos substituyen dll's aunque tengan el mismo numero de versin. Se debe
vigilar tambin la fecha. Este es el motivo por el que nos podemos encontrar
dos programas o dlls con el mismo numero de versin y diferente tamao).

El cdigo de otras aplicaciones, no est "alineado". W98 solo trae el


fichero INI anterior, con los datos del Office, supongo que porque Microsoft
considera que es un programa muy pesado y merece la pena optimizarlo.

Por ello, al instalar W98, si es actualizacin y se encuentra el Office,


AUTOMATICAMENTE y sin pedirnos permiso (craso error), ejecuta el WALIGN.
En nueva instalacin o sino tenemos el Office, deja una tarea pendiente de
ejecucin el el planificador de tareas. El comentario de antes de "craso
error", lo justifico: porque si tenemos Office y no hemos instalado el SR1
de Office, ya no podremos instalarlo. El SR1, no sabe modificar los ficheros
de Office si los tenemos "alineados", pero lo que es peor, no dice nada y
termina como si lo ha realizado correctamente. Se puede ver que no ha echo
nada, ya que al entrar en los "acerca de" de los programas de Office, no se
ve el texto SR1 que debiera verse. Con esto he explicado que hace.

Ahora, la pregunta es que opinion personal me merece?. Esto ultimo es mas


difcil de matizar. Nos deberamos hacer otras preguntas:

1) porque esto no esta corregido desde el principio? Es decir porque el


propio linker no optimiza correctamente los ejecutable?
2) porque no se nos informa, y da opcin a escoger sobre el alineamiento en
ese momento de Office?
3) porque no se permite (no existe el INI), optimizar otros paquetes,
cuando los betatester sabemos que en los W98 beta que probamos, estaba esta
opcin? Todava no se lo que opino. Digamos que lo tengo en "cuarentena",
pero por otros motivos, no por sus funcionalidades.

ANEXO V: VARIOS SISTEMAS OPERATIVOS EN LA MISMA MAQUINA


-------------------------------------------------------
Vamos a intentar ver como instalar mas de un sistema operativo de Microsoft
en la misma maquina y como podemos tener por ejemplo dos win98 en ella, o
cualquier combinacion de varios (n) sistemas de operativos de Microsoft.

Esto, aunque solo queramos tener un sistema, por ejemplo win98, bajo mi
punto de vista es aconsejable tener al menos 2 win98. Hay motivos

119
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

importantes:

1) Tener ms de un win98, nos permitir utilizar uno de ellos para trabajo


"real", y otro para pruebas. De esta manera, una vez que el software que
estemos probando haya pasado "nuestros" controles de calidad en pruebas y
"nuestro" test de compatibilidad con "nuestra" maquina y el "resto" de
software de terceros que tengamos instalado, una vez pasados esos controles,
podremos incorporarlo a "real".

2) Evidentemente, esto implica "ms" disco (o mas espacio en disco, o varios


discos). Pero el precio de hardware ha caido en los ultimos aos, y el
tamao de los discos ha aumentado ademas en la misma proporcion. Por tanto
esto no debe ser un problema.

INTRODUCCION
------------
Antes de pasar al detalle de la ejecucin, conviene entender como "arranca"
un sistema operativo. Voy a referirme unicamente a los sistemas operativos
de Microsoft. Una vez entendido esto perfectamente, seremos capaces de
realizar los cambios "a mano". Y si somos capaces de hacerlo "a mano",
evidentemente se puede encontrar una solucion "mecanizada".

Al arrancar un PC, busca siempre la particion "activa" del disco C: (nos


olvidamos por ahora de las bios que permiten arranques desde distintas
unidades). Recordemos que para que una particion sea "activa", debe ser una
particion "primaria".

El proceso real es:

1) Se carga el primer sector fisico (512 bytes) del disco duro en memoria.
Este sector es el llamado MBR (Master Boot Record). Realmente este sector
contiene un mini-programa y es grabado por el FDISK cuando se encuentra un
disco "virgen" o cuando hacemos FDISK /MBR.

2) Este programa empieza su ejecucion, y su unica misin, es buscar la


particion "activa" del disco duro, y cargar a su vez, el primer sector
fisico de esa particion en memoria y cederle control. Ese sector es llamado
el sector de "boot" de la particion, y es creado en la particion, cuando
hacemos un "format" de la particion.

3) El programa del registro de "boot", empieza su ejecucion y busca


realmente el sistema operativo dentro de la particion y lo carga en
ejecucion.

4) Los sistemas operativos (MSDOS 6.2, Win95 y Win98) realmente constan de


dos partes. El nucleo del sistema formado por los archivos MSDOS.SYS, IO.SYS
(obligatorios) CONFIG.SYS (opcional) y un interprete de comandos que por
defecto es el COMMAND.COM y el AUTOEXEC.BAT (opcional). Los anteriores,
obligatoriamente deben residir en C: (hay alguna matizacion que obviamos
aqu, sobre la parte del interprete de comandos que podra realmente residir
en otro disco). Esto plantea ya un problema: los tres sistemas operatios,
utilizan los mismos "nombres" de los archivos de "arrancada".

5) El sistema operativo NT, consta de otra serie de archivos en el disco C:,


pero en principio, con otros nombres que no colisionan con los anteriores.
Simplemente hay que hacer notar en este nivel, que existe tambien uno de
parametros llamado BOOT.INI.

NOTA: Muchos de estos archivos estn ocultos (attributo "Hidden") y tiene


atributos ademas de solo-lectura ("Read Only") y del sistema ("System"). Si

120
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

estn con estos atributos, dando un DIR normalito no los veremos, y en


windows tampoco, a no ser que tengamos activa la opcion de "ver todo tipo de
archivos". Bajo MS-DOS la unica manera de saber si existen es dar el comando
attrib. Por ejemplo attrib c:\msdos.sys nos mostrar el archivo y sus
atributos en pantalla. Ademas incluso dicho comando nos permitir cambiar
el(los) atributo(s) que queramos, con solo darlo igual que antes y con un
signo "-" y la primera letra del atributo que queremos quitar. Igualmente
con un signo "+" podemos ponerle los atributos. Por ejemplo:

attrib c:\msdos.sys -s -h -r

quitar los tres atributos al archivo msdos.sys y por tanto ya es "visible"


con un DIR, o bien manipulable con un editor como pudiera ser el propio
"edit" del MSDOS o el "notepad" de windows. Y por supuesto, el comando
inverso:

attrib c:\msdos.sys +s +h +r

nos volver a colocar los atributos que debe tener dicho archivo.

DESCRIPCION DE CARGA DE CADA SISTEMA OPERATIVO


----------------------------------------------
Pasemos a describir cada sistema operativo:

1) Antiguo MSDOS (6.2): Utiliza para su arranque:

MSDOS.SYS (ejecutable o programa)


IO.SYS (ejecutable o programa)
CONFIG.SYS (parametros de configuracion)
COMMAND.COM (ejecutable o programa)
AUTOEXEC.BAT (parametros de configuracion)

ademas si tenemos la opcion de discos "comprimidos", utiliza los DBL*.* o


DRV*.* que existan en el directorio raiz del C: (hay que notar que estos
existiran igualmente ne win95 / 98 y los tendremos presentes para crear
posteriormente las baterias de inicio, pero por ahora vamos a obviar el tema
de discos comprimidos).

** Evidentemente los archivos de parametros de configuracion podremos


siempre tocarlos con un editor.

2) Windows 95: (normal y OSR2) Utiliza para el arranque:

MSDOS.SYS (pero ahora es un archivo de "parametros" que podemos ver por


ejemplo con el notepad. En MSDOS 6.2, era un archivo ejecutable, es decir un
progama).
IO.SYS
CONFIG.SYS
COMMAND.COM
AUTOEXEC.BAT
LOGO.SYS (aparece nuevo en win95).

3) Windows 98:

MSDOS.SYS (parametros)
IO.SYS
CONFIG.SYS

121
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

COMMAND.COM
AUTOEXEC.BAT
LOGO.SYS (**opcional**. Si existe puede tener personalizado el logo de
arranque de windows, pero sino existe, nos mostrar el logo por defecto de
windows 98).

NOTA: Tanto win95 como win98, si se encontrasen un WINBOOT.SYS en el disco


C:\, utilizarn este en lugar del IO.SYS, y ademas al finalizar su
ejecucion, lo renombrarn como IO.SYS. (esto es importante. Se ver mas
adelante como una posible "trampa" para compartir Win95 OSR2 y un posible
DOS 6.22)

4) Por ahora el NT, no nos molesta con sus nombres de archivos, por lo que
ya abordaremos su problematica real en la instalacion.

NOTA: Debemos tener presente, que aunque los archivos mencionados


anteriormente deben estar en C:\, el resto del sistema operativo, puede
estar en cualquier unidad de disco o particion.

SISTEMA DE ARCHIVOS QUE PUEDEN UTILIZARSE


------------------------------------------

1) MSDOS 6.2 : solo entiende FAT 16


2) Win95 : solo entiende FAT-16
3) Win95 - OSR2 : FAT16 o FAT 32
4) Win98 : FAT 16 o FAT 32
5) NT 4 : FAT 16 o NTFS (particion exclusiva de NT)
6) NT 2000 : FAT 16 o FAT 32 o NTFS

** A la vista de lo anterior, si queremos mezclar varios sistemas, ya


podemos saber como "debe" ser al menos nuestra "particion" correspondiente
al C:. Si por ejemplo, queremos instalar NT 4, obligatoriamente el C: debe
ser de FAT 16, y ademas, la particion o disco donde posteriormente resida el
sistema operativo NT, tambien debe ser FAT 16.

** Recordemos, que para crear una particion FAT 16 o FAT 32, es durante el
FDISK que damos inicialmente al disco. Si al entrar en FDISK tecleamos "S" a
la pregunta de soporte para grandes particiones, entonces la particion
creada ser de FAT 32. Si teclemos "N", la particion creada ser de FAT 16.
Y ademas MUY IMPORTANTE, es que cada vez que nos salgamos de FDISK, no
podemos volver a entrar en l, sino reiniciamos la maquina. Si no cumplimos
estrictamente esto, las particiones pueden quedar creadas de cualquier
forma, o incluso inutilizables.

INSTALACION DE LOS DIVERSOS SISTEMAS OPERATIVOS


-----------------------------------------------
Vamos a ver los distintos casos.

1) Instalar MS-DOS 6.22 en un disco limpio. Facil. Todos (o casi) lo hemos


realizado alguna vez. Se ponen los disquetes y ellos hacen todo.

2) Instalar w95, w95 OSR2 o w98, lo mismo. Unicamente, veremos en los


siguientes puntos que es lo que ocurre si "ademas" ya teniamos el antiguo
MS-DOS 6.22

3) Instalar w95 (normal, *no* OSR2) o w98 sobre una maquina que ya tenia el

122
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

antiguo MSDOS 6.22.

En este caso, el instalador lo primero que hace es renombrar los archivos de


arranque del MSDOS (los citados anteriormente), poniendolos como extension:
.DOS. Ademas en el MSDOS.SYS de w95 / w98 que montar posteriormente, le
incorpora una linea que dice:

BootMulti=1

Esta linea lo que hace es darnos una nueva opcion en el men de arranque de
windows (accesible con F8 en w98 al iniciarse o con CTRL en w98), que nos
permitir "ir a la antigua version de MS-DOS".

Seleccionando dicha opcion, el proceso que sigue windows es sencillo.


Renombra sus archivos de arranque con la extension .W40. Posteriormente
renombra los archivos .DOS por sus extensiones correspondientes, y ahora
arranca los archivos que acaba de renombrar. Por tanto recordad que cuando
estemos en "la antigua version de MSDOS", veremos los archivos "reales" de
windows, con las extensiones .W40.

4) Instalar w95 OSR2 sobre una maquina que ya tenia el antiguo MSDOS 6.22.

Esto es un poco mas delicado. Y es delicado debido a que MS consider que el


OSR2 era para "equipos nuevos" y por tanto no debian tener montado ningun
otro sistema operativo y para ello, se protegi de dos maneras:

a) Si encuentra un win.com en la maquina, no se instala. Evidentemente


debemos renombrar todos los win.com de nuestra maquina para instalarlo, y
una vez instalado, podemos volver a dejarlo igual).

b) El montaje y el renombrar archivos es similar al descrito en el punto 3).


Pero si "vamos al antiguo MSDOS", lo siento, ya no podremos volver a
utilizar el windows. El sistema se quedar colgado en el MSDOS 6.22 y no es
posible volver debido a que no restaura el archivo IO.W40 por su nombre
IO.SYS al salir. Pero..... para todo hay solucion. Recordad que antes he
hablado sobre el tema de que si existe un fichero llamado WINBOOT.SYS en el
raiz, lo ejecutar siempre. Por tanto, si copiamos el contenido del IO.SYS
de win95
OSR2 sobre un fichero llamado WINBOOT.SYS, y este lo dejamos en el raiz,
siempre se nos inicar el sistema con win95.

5) Instalar MS-DOS 6.22 sobre un sistema que ya tenga w95, OSR2 o w98.

Si hemos entendido lo anterior, es sencillo. Pero necesitamos otra maquina


en donde lo hayamos instalado previamente.

a) Entonces podemos coger el MSDOS.SYS, IO.SYS, CONFIG.SYS, COMMAND.COM y


AUTOEXEC.BAT de la maquina donde tengamos MSDOS 6.2, les quitamos los
atributos y los ponemos en un disquete, PERO todos con extension .DOS. Ahora
los copiamos a la maquina don w95/w98, y volvemos a poner los atributos que
tenian.

b) Editamos el MSDOS.SYS de w95 / w98, y le aadimos la linea BootMulti=1

c) Copiamos (via disquete) el resto de programas del antiguo DOS a nuestra


maquina.

123
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

6) Mas de un win98 o win98 / win95. Relativamente facil. Nos guardamos los


fichero de inicio de uno de los windows, e instalamos el "nuevo" windows.
Unicamente tener presente lo siguiente:

a) Windows puede instalarse en cualquier disco y con cualquier nombre del


directorio de windows. Pero reordad que ademas windows utiliza otra carpeta
llamada "Archivos de Programa" (version en Espaol) o "Program Files"
(version USA).

b) Si instalamos en discos diferente, no hay problema.

c) Si instalamos en el mismo disco, obligatoriamente deberemos instalar los


windows en directorios diferentes y "ademas", los windows deben estar en
distinto idioma para que la carpeta "Archivos de Programa" no sea compartida
por ambos windows.

Una vez instalado el nuevo windows, nos podemos "guardar" en otor sitio sus
archivos de arranque. Entonces con poner unos u otros arrancaremos con cada
windows. Esto se debe hacer por ejemplo, "antes" de salirnos de uno de los
windows, para reinicar con el otro. O bien si arrancmos en "Solo simbolo del
sistema", colocamos el que nos interese y reiniciamos otra vez. Esta es la
solucion "manual". Al final del articulo, vermeos la "mecanizada". Pero por
ahora es importante unicamente, el entenderlo.

7) Instalar NT 4 o NT 2000. Si queremos que no est "solo" en nuestro PC,


deberemos tener instalado "cualquiera" de los sistemas anteriores. Con eso
el NT, "es listo", y el solito, montar un men de multiconfiguracion. No es
posible al contrario. Por lo que si vamos a intalar NT y queremos el dia de
maana instalar cualquier otro sistema, lo mas sencillo, es instalar primero
un MS-DOS 6.2, por ejemplo y posteriormente el NT. (ya instalaremos luego
w95 / w98 cuando nos interese).

** Bueno, ahora vamos a lo interesante. Pero para ello, debemos haber


"comprendido" perfectamente la parte anterior de este anexo. Es importante
entender que es lo que hacemos, por si hubiese un error de los
procedimientos automaticos que voy a dejar conjuntamente con este articulo y
debemos efectuar los cambios a mano.

** Como creo que toso nos conocemos y ademas algunos (entre los que me
incluyo) somos instaladores compulsivos, por favor no instalar todavia las
baterias y programas que envio conjuntamente a este documento. Ademas, es
necesario que modifiqueis algunas cosillas de ellos.

** Los programas que envio adjuntos en este documento, GUARDA, SISTEMA,


etc.. deben estar en una carpeta accesible siempre en el PATH. Mi consejo es
instalarlo por ejemplo en C:\

INSTALACION INICIAL IDEAL:


--------------------------
Bien, esto es siempre discutible, pero voy a intentar definir lo que
considero una instalacion ideal. Voy a suponer que tengo varios discos o al
menos varias particiones, y veamos como debemos crear nuestras particiones.

Recordad que tanto el MSDOS 6.22 como el NT 4, no entienden de FAT 32. Por
tanto esto ya nos obliga a que el disco C: sea FAT 16.

Y ahora pensemos: para que hacerlo muy grande?. Realmente en C: solo voy a
tener muy pocos archivos, y de paso puedo aprovecharlo para tener por
ejemplo un 6.22 y un windows 3.1 y esto ocupa muy poquito. Entonces pensemos
en una cifra pequea: 500 megas (y nos sobrar).

124
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

Entonces: (suponiendo que instalamos desde cero)

1) Creamos las particiones, sabiendo que la del C: debe ser FAT 16 y ademas,
no debe ser muy grande.

2) Instalamos MS-DOS 6.22.

3) Instalamos Win98 y seleccionamos durante el proceso de instalacion ,que


nos lo instale en otro disco (por ejemplo D:) y este disco puede
perfectamente ser FAT 32 o bien podremos convertirlo posteriormente.

4) Instalamos NT 4 en otro disco. A la hora de instalar NT 4 nos pedir que


si convierte la particion en NTFS. A nuestro gusto. Pero pensar que el NTFS
no se "v" desde MSDOS ni desde Win95 / 98. A su vez, recordad que desde NT
4 tampoco se "ven" las particiones FAT 32 (pero para esto ultimo, si que
existe una trampa. Ir a www.sysinternals.com y all hay un driver para NT 4
gratuito que nos permite ver FAT 32. Solo ver. Existe igualmente otro que
permite lectura/escritura, pero este ultimo ya es de pago de unos pocos
dolares.)

5) Editamos el archivo oculto de NT llamado BOOT.INI que est en el disco


C:, y le ponemos en la linea "Default" que arranque por defecto de C:\, si
este fuese nuestro gusto.

6) IMPORTANTISIMO: Miramos a ver si en nuestro disco C: en el raiz, tenemos


un fichero llamado BOOTSECT.DOS. Lo tendremos. POR FAVOR en ese momento,
ponerlo como atributo de oculto para que por error no lo borremos:

attrib bootsect.dos +h

si por desgracia borramos dicho archivo, NUNCA podremos iniciar ya en modo


win95 / win98 o MSDOS.

7) Modificamos el MSDOS.SYS de nuestro disco C:, al objeto de ponerle las


lineas (al final):

BootMenu=1
BootMenuDelay=10
BootMulti=1 (esta ultima, solo en el caso de que no estuviese).

SITUACION EN ESTE MOMENTO


--------------------------
En esta situacion, nuestro ordenador, al arrancar, veremos:

1) Pantalla de inicio de NT donde nos permite seleccionar entre NT y Win98


(activa durante 30 segundos, pero modificable en BOOT.INI).

2) Pantalla del menu de win98 (activa durante 10 segundos). Nos permite


seleccionar entre las opciones ya conocidas del menu (las mismas que cuando
arrancamos con la tecla CTRL pulsada), y entre ellas, el "Ir al antiguo
MSDOS" con lo cual arrancaremos el 6.22

AADIR OTRO WIN98 / WIN95


--------------------------
Bueno, lo primero que hacemos ahora, ser guardarnos los ficheros
necesarios, para que una vez que los pongamos otra vez en el directorio raiz
de C:, seamos capaz de arrancar. Para ello, nos guardamos en otra carpeta

125
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

los siguientes archivos de C:

MSDOS.SYS
IO.SYS
CONFIG.SYS
AUTOEXEC.BAT
COMMAND.COM
LOGO.SYS (si existiese).

Reordad que alguno de estos archivos, tiene "atributos" de oculto, sistema,


etc. Para ver los atributos, podemos ejecutar en una vntana msdos, el
commando:

attrib c:\msdos.sys

y veremos sus atributos. Para poner o quitar atributos, unicamente debemos


poner el atributo o los atributos que queremos aadir o quitar con el signo
+ o - por delante. Es decir para quitar atributos al msdos.sys, deberemos
hacer:

attrib c:\msdos.sys -s -h -r

y para ponerles, simplemente igual pero con signo +.

Evidentemente, este proceso de "copia" y "quitar / poner" atributos, lo


podemos hacer de una manera automatica mediante una bateria. Igualmente para
volver a situarlos en C:, se puede utilizar otra bateria.

* La idea, es que una vez guardados dichos archivos, instalemos otro windows
en otra particion. Una vez instalado, nos guardamos en otro sitio, los
mismos archivos.

CAMBIAR ENTRE LOS DOS WIN98 ANTERIORES


---------------------------------------
En principio, la idea, es que ANTES de salir de uno de los windows, dejemos
los archivos correspondiente para que al inicar otra vez, nos arranque del
"otro" windows. Bien, para ello, simplemente "a mano" o con una bateria que
nos hagamos a tal efecto, seremos capaces de arrancar en el windows que nos
interese (dejo la creacion de estas baterias, como un pequeo ejercicio
facil de realizar).

PREGUNTAS Y DUDAS SOBRE LO ANTERIOR


-----------------------------------
P. Tengo instalado ya windos98 y quiero instalar msdos 6.22 para instalar
luego win3.1 o WFW como lo hago?

R. La secuencia normal es al reves. Primero tener 6.22 y luego instalar


win98. Pero en este caso, tambien hay solucion. Para ello, se debe tener
otro equipo en el cual est instalado un MSDOS 6.22. En ese equipo,
formateamos un disquete con el sistema, dando los siguientes comandos:

format a: /s
a:
attrib *.* -s -h -r
ren msdos.sys msdos.dos
ren io.sys io.dos
ren command.com command.dos

126
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ...........
Jos manuel Tella Llop

y ahora el contenido de ese disquete lo copiamos en nuestro PC con win98,


dando los comandos:

c:
cd \
copy a:\*.*
attrib io.dos +s +h +r
attrib msdos.dos +s +h +r

Debemos igualmente crear un config.dos y autoexec.dos que contengan las


instrucciones del config.sys y autoexec.bat que queramos que existan bajo
MSDOS 6.22. Se debe recordar que al entrar en el "Anterior sistema
operativo", los archivos .DOS se renombraran con las extensiones correctas.

Ademas debemos copiar todo el directorio DOS del PC que tiene MSDOS 6.22 a
un directorio DOS en nuestro PC. Es conveniente utilizar en este caso el
pkzip con la opcion -& para crear una copia multivolumen en disquetes y
hacernos mas facil la transferencia.

S al entrar en el men de win98 (tecla CTRL pulsada al arrancar), no


aparece la linea de ir al "Antiguo sistema operativo", debemos editar el
archibvo MSDOS.SYS de nuestro PC con win98, e incorporar la linea:

BootMulti=1

La manera de hacerlo, es, entrando en "Solo simbolo del sistema" y teclear:

attrib msdos.sys -s -h -r
edit msdos.sys

y ahora podremos buscar esa linea y si no existe incorporarla.


Posteriormente nos salimos y tecleamos:

attrib msdos.sys +s +h +r

****

P. Tengo instalado win98, y deseo instalar win95 OSR2. O bien tengo


instalado un win98, y deseo instalar otro win98 OEM (solo para equipos
nuevos).

R. En ambos casos debemos saber que los productos para equipos nuevos,
analizan en nuestro disco duro a ver si encuentran un archivo win.com. Si lo
encuentran no se instalan. Por tanto debemos "renombrar" todos los archivos
win.com que existen en nuestro disco, instalar el nuevo windows y
posteriormente volver a dejar esos archivos con su nombre.

****

P. Quiero instalar NT 4 en mi maquina y no me deja. Avisa sobre el sistema


de ficheros FAT 32.

R. NT 4 necesita que el disco C: sea de FAT 16. Igualmente la particion en


donde se instale debe ser FAT 16 o bien NTFS (particion propietaria y
exclusiva de NT, no visible desde otros sistemas). Por tanto, esto nos
obliga a reconfigurar todo nuestro sistema al objeto de hacer el disco C:
con FAT 16. Vease las notas sobre el tema en los articulos anteriores.

****

127

Vous aimerez peut-être aussi