desde que pulsamos el botón de nuestra pc hasta

127
DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA ........... José manuel Tella Llop 1 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 técnicos. Por ello, ruego a los "técnicos" que me concedan la licencia de intentar expresarlo de la manera mas sencilla, y con ejemplos que no "son" del todo verdad técnicamente, 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 atlético 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 extrañas. Debemos perderlo el miedo. Conocer todo sobre él. No hace falta ser un técnico (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 botón 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 posición 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 vacía 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 posición FIJA de memoria en cualquier PC. Siempre la misma. BIOS Antes lo hemos descrito como un programa. Realmente es un programa y además 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 versión 4.51 PG de Award) y lo que hacen, bajo pedido del fabricante de la placa madre, es adaptar "su" estándar de bios, a "esa" placa madre. Por tanto, fijémonos que la versión 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 versión superior. Pero, para ello, debemos buscar la "versión" 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

Upload: kenny-ronald-jimenez-ruiz

Post on 18-Feb-2015

100 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Desde que pulsamos el Botón de nuestra PC Hasta

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

1

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 técnicos. Por ello, ruego a los "técnicos" que me concedan

la licencia de intentar expresarlo de la manera mas sencilla, y con ejemplos que no "son" del todo

verdad técnicamente, 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 atlético 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 extrañas. Debemos perderlo el miedo. Conocer todo sobre él. No hace falta ser un

técnico (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 botón 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 posición 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 vacía 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 posición FIJA de memoria en cualquier PC. Siempre la misma.

BIOS

Antes lo hemos descrito como un programa. Realmente es un programa y además 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 versión 4.51 PG de Award) y lo que hacen,

bajo pedido del fabricante de la placa madre, es adaptar "su" estándar de bios, a "esa" placa madre.

Por tanto, fijémonos que la versión 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 versión superior. Pero, para ello, debemos buscar la "versión" 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

Page 2: Desde que pulsamos el Botón de nuestra PC Hasta

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

2

a Award revisiones y mejoras de sus bios. Si es una marcar "cutre", pues probablemente la placa

madre "muera" con la misma revisión de la bios que teníamos 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 ¿cómo 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 además 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 podrán existir virus que

sean capaces de borrarla?.... Pues por desgracia: si. Y tiene muy malas soluciones el tema.

Pensemos que si nuestra bios está dañada, 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 actualización que no es para nuestro "exacto" modelo de placa

madre... en ese caso, nuestro ordenador no volverá a la vida. Es más, 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 parámetros 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 combinación 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 definición. En ciertas maquinas (y además, con ciertas impresoras), la

tecla "Imprimir Pantalla" funciona. Pero no suele ser lo habitual, por lo que nos tendremos que

armar de paciencia, bolígrafo y papel, y a escribir....

Esto puede que nos saque de algún 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 parámetros que podemos tocar (sin apenas riesgo) y además 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

Page 3: Desde que pulsamos el Botón de nuestra PC Hasta

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

3

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 también les sucede lo mismo. Es solo

cuestión 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 opción:

PnP OS (Operating System) : YES | NO

Pues aunque parezca mentira, mi consejo es poner NO. (al menos con win98 en Español. Con

Win98 en Inglés da igual lo que pongamos, pero el Español, 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 característica de control "avanzado" del sistema. Mi consejo, si vuestra lo bios lo pregunta es

que pongáis activo "siempre" el modo ACPI. Mas adelante hablaremos también de él, en la

instalación 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 función todavía) 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 mayoría están "embebidos" en algún chip multifuncion de la placa madre. Pero existir: existen.

Enumeremos un poco:

Page 4: Desde que pulsamos el Botón de nuestra PC Hasta

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

4

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 oído 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

básicamente el mismo que surgió en el año 82. Su arquitectura es la misma y lo único que ha ido

evolucionando han sido los "periféricos" 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 evolución 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 básico de

instrucciones es el del antiguo 8086.

Vemos a empezar por la CPU y memoria y luego veremos con detalle el resto de "periféricos".

Recordemos que no nos queda más remedio que ceñirnos a la historia. Al año 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 años), fue el 8086 de Intel.

Su triunfo, al igual que el del Windows actual, fue una decisión de un gigante del hardware: IBM, y

un montón 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 diseño

(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 características básicas de las placas madre: el bus PC que rápidamente

evolucionó al bus AT, y que por desgracia todavía seguimos sufriendo.

Page 5: Desde que pulsamos el Botón de nuestra PC Hasta

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

5

Con respecto al software, en aquellos años existían 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

característica la hace única en el mundo del software), y una vez implementado un producto de

ingeniería, 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 (versión 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 decisión acertada?. Personalmente creo que no. Pensemos que el incipiente CCPM ya era

capaz de soportar multitarea (hasta 4 tareas) en modo consola (no existía todavía interfaz gráfica) -

Por cierto, todavía lo tengo y funciona!!!-.

Fue una triple decisión 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 básicamente se sigue conservando en nuestros actuales PCs y condiciona un montón de

cosas que iremos viendo en estos capítulos)

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 todavía frase hecha: "ordenador COMPATIBLE". Pero ¿compatible con que?

pues compatible IBM. Con los años 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 montón de "patitas", estás

se agrupan lógicamente en las siguientes funcionalidades:

a. "patitas" de DATOS

Page 6: Desde que pulsamos el Botón de nuestra PC Hasta

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

6

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 "además" enviar su

dirección. Y el bus de "control", es para comunicarse con el resto "del mundo", con los periféricos,

con la circuiteria externa, etc....

Esta primera CPU, tenia únicamente 20 "patitas" de direcciones. Y además 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 podían direccionar 2 elevado a la 16 direcciones. Es decir

64 Kbs de memoria.

Intel, introdujo en esa CPU, el concepto de "segmentación" (concepto por el que todavía seguimos

pagando "muy caro", muchas, demasiadas "malas herencias").

El concepto de "segmentación, consiste en utilizar 2 registros generales para formar una dirección

física. 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 continuación. Agrupémoslos

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

Page 7: Desde que pulsamos el Botón de nuestra PC Hasta

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

7

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 continuación. Esta es la representación hexadecimal (base 16).

Recordemos que hay 4 grupos de 4 bits, es decir, puesto entonces en representación 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 España, utilizamos la palabra "octeto" en lugar de byte por una mala traducción del francés que

fue quien implementó esta palabra. Al igual, la palabra "ordenador" proviene de "ordinateur"

(francés). Y la palabra "cuarteto" como la mitad de un "octeto" (byte).

** Continuemos un poco más.......

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") añadiendolo 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 podría 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.

Page 8: Desde que pulsamos el Botón de nuestra PC Hasta

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

8

Y ademas por definicion, cualquier "compatible" (y los actuales lo són), 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 más 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 transición 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, tenía (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 pequeña 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 engaño: 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 "más". una sola: el

"cpmexchg" es decir: compara dos registros y en funcion de la comparación, 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.

Page 9: Desde que pulsamos el Botón de nuestra PC Hasta

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

9

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), tenía 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 millón: ¿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 más. Variantes:

Page 10: Desde que pulsamos el Botón de nuestra PC Hasta

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

10

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 más 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

Page 11: Desde que pulsamos el Botón de nuestra PC Hasta

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

11

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 más 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, sería 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 más sofisticado. Alguien inventó las IRQ (Interrupt Request). Es más 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 "parón".

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 habría 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:

Page 12: Desde que pulsamos el Botón de nuestra PC Hasta

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

12

** 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 señal 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, están 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

Page 13: Desde que pulsamos el Botón de nuestra PC Hasta

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

13

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 ratón, 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.

Tenía 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?.

Page 14: Desde que pulsamos el Botón de nuestra PC Hasta

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

14

Bien, existían 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 Kb´s nos dá la increible capacidad de 640 Kbs ¿os suena

esta cifra, no?.

Digo "increible capacidad", porque en el año 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.

Page 15: Desde que pulsamos el Botón de nuestra PC Hasta

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

15

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 ciñendonos a nuestro caso del BUS ISA. ¿como se asignaban las IRQs, los ports, etc, en

aquel entonces?. Recordad que no existía 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 podía. Cada fabricante escogia al azar un conjunto de puerto y/o

IRQs de funcionamiento de su tarjeta y tú lo instalabas. Pero claro, si querías añadir 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 podía 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

Page 16: Desde que pulsamos el Botón de nuestra PC Hasta

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

16

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 más, 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 más 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 matíz:

*) 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 más 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

Bién, 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 más 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.

Page 17: Desde que pulsamos el Botón de nuestra PC Hasta

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

17

Hasta ahora, las tarjetas que hemos visto, había 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 ratón en puerto de ratón-)

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é diseñado para

poder "pillar" las IRQs de dos modos "level" y "edge". En principio entonces, el bus PCI (y AGP),

ha sido diseñado para poder compartir interrupciones. Ahora solo queda el definir el como

compartirlas.

Igualmente debemos recordar que "por diseño" 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 además tenemos raton en puerto de ratón, o nuestra bios se lo asigna SIEMPRE a

un posible puerto de ratón, la IRQ 12 *tampoco* podrá compartirse.

Igulamente quiero resaltar que en las IRQs "fijas" hay alguna matización:

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 necesaría. 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 ratón. 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.

Page 18: Desde que pulsamos el Botón de nuestra PC Hasta

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

18

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 "gustaría" 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

Page 19: Desde que pulsamos el Botón de nuestra PC Hasta

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

19

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 añadir 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 más 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 años mas tarde) los alcanzan. Hagamonos una idea: los discos a

7200 revoluciones, eran normales hace 2 años en SCSI.

Ahora se están introduciendo en los discos IDE de ultima generacion.

Page 20: Desde que pulsamos el Botón de nuestra PC Hasta

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

20

Actualmente el SCSI tiene ya discos de 10.000 revoluciones y con caché interna de 4 megas. Los

IDe todavia ni sueñan 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"). Estás 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 más), 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

- - -

Page 21: Desde que pulsamos el Botón de nuestra PC Hasta

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

21

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 más. 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 terminación?: 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.

Page 22: Desde que pulsamos el Botón de nuestra PC Hasta

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

22

¿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 pequeño 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).

Page 23: Desde que pulsamos el Botón de nuestra PC Hasta

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

23

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.

Page 24: Desde que pulsamos el Botón de nuestra PC Hasta

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

24

** 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 rotación 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.

Page 25: Desde que pulsamos el Botón de nuestra PC Hasta

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

25

Y estadisticamente la media de los sectores que queremos leer, estarán 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 más),

ya que a circuiteria y la logica del propio disco, lo mas normal, cuando le solicitamos un sector, es

que "lea" más 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 tamaño, por tanto siempre se le solicitará al disco más 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

Page 26: Desde que pulsamos el Botón de nuestra PC Hasta

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

26

La CPU podría 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

Más 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 aún se le

podría perdonar), sino sobre todo lento. Tan lento, que aún el acceso según 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.

Page 27: Desde que pulsamos el Botón de nuestra PC Hasta

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

27

NO LLEVARSE A ENGAÑO

No hay que llevarse a engaño 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 colofón de esto, voy a hacer unos pequeños comentarios de diseño 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 excepción:

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

Page 28: Desde que pulsamos el Botón de nuestra PC Hasta

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

28

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 generación 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 cariño, 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.

Page 29: Desde que pulsamos el Botón de nuestra PC Hasta

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

29

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 ratón, 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

Page 30: Desde que pulsamos el Botón de nuestra PC Hasta

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

30

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 pequeña 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 atención, 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.

Page 31: Desde que pulsamos el Botón de nuestra PC Hasta

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

31

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 habría

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 más y la explicacion,

proviene del diseño 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 diseño 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 tamaño de un sector es unicamente 512 bytes.

La estructura de dicho sector, es un mini-programa y una pequeña 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.

Page 32: Desde que pulsamos el Botón de nuestra PC Hasta

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

32

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.

Page 33: Desde que pulsamos el Botón de nuestra PC Hasta

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

33

+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

Page 34: Desde que pulsamos el Botón de nuestra PC Hasta

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

34

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 "diseñar" un sistema de archivos... El diseño, quizá no sea el mejor (seguro que no),

pero funciona y por suerte o por desgracia lo hemos heredado. Pensemos un poco.... ¿como lo

diseñaron? 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 sería tener numerados todos los "pedacitos" del disco. Sabemos "por diseño" 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 pequeños 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 tamaño mejor.

6) Ahora bien, si tenemos "cluster". ¿no sería 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.

Page 35: Desde que pulsamos el Botón de nuestra PC Hasta

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

35

7) Bueno ya tenemos un indice para tener los archivos. Vamos a llamarle "Directorio principal".

Tambien tenemos unos pequeños 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 tamaño 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 podría 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

más?. 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, tamaño, 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 tamaño 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 tamaño 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)

Page 36: Desde que pulsamos el Botón de nuestra PC Hasta

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

36

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 tamaño 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 tamaño del cluster era 5 Kbs, esto no

es verdad. ¿como calcula el sistema operativo cual va a ser el tamaño del cluster?.

Bien, tal y como definimos antes, sabemos que solo podemos tener hasta 65536 pedacitos. Ademas

sabemos el tamaño total de la particion. Pues el sistema divide el tamaño 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 tamaño del cluster.

Se consideró que para no perder mucho espacio, se debria limitar el tamaño maximo del cluster. Y

se definió así que el tamaño 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 tamaño 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 tamaño maximo de cluster se define aquí en: 16 Kbs, entonces el tamaño maximo del disco sería:

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.

Page 37: Desde que pulsamos el Botón de nuestra PC Hasta

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

37

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 podría ser, ya que por los razonamientos anteriores,

se recorre primero todas las particiones primarias. Por tanto a la del primer disco, le daría la C:,

ahora va al segundo disco. Como tiene una primaria, le daría 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

Page 38: Desde que pulsamos el Botón de nuestra PC Hasta

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

38

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 sería 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

atrás.

* 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

diseño, 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 sería 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"

debería 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:

Page 39: Desde que pulsamos el Botón de nuestra PC Hasta

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

39

1) La FAT es importantisima. Se utiliza para todo. Es el "indice" de cómo están 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 daña 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 tamaño 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 tamaño maximo de 128 Kbs. Como existen 2 FAT por seguridad, es un tamaño

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 tamaño 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.

Page 40: Desde que pulsamos el Botón de nuestra PC Hasta

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

40

NOTA: Existe una manera de "ver" cuanto espacio tenemos "perdido" en el disco por culpa de los

"cluster" de gran tamaño. 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 tamaño 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 había

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 más sencillo. Un ejemplo que realmente sorprendió a todo el mundo

de la programación, fué en los primeros años 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 tontería que ahora no nos llama en absoluto la atención, 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.

Page 41: Desde que pulsamos el Botón de nuestra PC Hasta

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

41

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. Más 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 diseño 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 diseño, 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 están ocupadas. No son necesarias tantas.

Por tanto, las no ocupadas apuntan a una instrucción 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....

Bién, 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).

Page 42: Desde que pulsamos el Botón de nuestra PC Hasta

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

42

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, deberán 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 más 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 estén 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

Page 43: Desde que pulsamos el Botón de nuestra PC Hasta

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

43

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 cargaría sería 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.

Page 44: Desde que pulsamos el Botón de nuestra PC Hasta

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

44

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

parámetro 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 España 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 sería 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 dañar 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.

Page 45: Desde que pulsamos el Botón de nuestra PC Hasta

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

45

* 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.

Page 46: Desde que pulsamos el Botón de nuestra PC Hasta

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

46

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

Page 47: Desde que pulsamos el Botón de nuestra PC Hasta

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

47

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 añadida 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:

Page 48: Desde que pulsamos el Botón de nuestra PC Hasta

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

48

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

Teóricamente, debemos recordar que el config.sys no es necesario. No debería 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 España, deberían 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 más en el config.

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

Page 49: Desde que pulsamos el Botón de nuestra PC Hasta

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

49

** 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 categoría 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 configuración 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 diseño, 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

diseño de donde se encuentra el adaptador de video. Por tanto esta es la maxima memoria real

Page 50: Desde que pulsamos el Botón de nuestra PC Hasta

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

50

"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 pequeños

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 pequeños

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.

Page 51: Desde que pulsamos el Botón de nuestra PC Hasta

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

51

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, sería 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) añadiendo 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 habría "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 habría desbordamiento. Pero para esto, el software debería 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.

Page 52: Desde que pulsamos el Botón de nuestra PC Hasta

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

52

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

aplicación.

Como el "primer" programa que podia hacer uso correcto de ella, era el propio MsDOS, se

procedio a modificar su nucleo (al objeto de enseñarle 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 estañra disponible para programas que

"sepan" utilizarla. En particular si queremos que el propio MsDOS pueda

Page 53: Desde que pulsamos el Botón de nuestra PC Hasta

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

53

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 tendrán 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]

Page 54: Desde que pulsamos el Botón de nuestra PC Hasta

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

54

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.

Page 55: Desde que pulsamos el Botón de nuestra PC Hasta

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

55

Existen especificos (sobre todo los de acceso a las antiguas tarjetas SCSI,

y alguno de red en modo real), que no funcionaran o provocarán 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,

podríamos 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 año 82). Este MsDOS

abría 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

años). Pero por cuestiones de compatibilidad con los posibles programas

MsDOS del año 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

Page 56: Desde que pulsamos el Botón de nuestra PC Hasta

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

56

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 ejecutarán

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

Page 57: Desde que pulsamos el Botón de nuestra PC Hasta

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

57

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 tamaño 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

tenía 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

Page 58: Desde que pulsamos el Botón de nuestra PC Hasta

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

58

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 "España" y teclado Español. Para

configuraciones en Latino America, estas lineas variarán ligeramente)

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

la 850, el país España como 034, y el teclado como español "sp".

** NOTA: Es importante, sobre todo si vamos a tener más 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 veríamos correctamente los nombre de archivos acentuados, pero

internamente el nombre estaría 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, serán 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 más 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, deberían 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:

Page 59: Desde que pulsamos el Botón de nuestra PC Hasta

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

59

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 "añadir" al PATH que

tuviesemos en un momento determinado, la carpeta C:\KK. Bien, lo mas

sencillo sería 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

añadir.

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 millón: ¿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

Page 60: Desde que pulsamos el Botón de nuestra PC Hasta

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

60

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 Inglés.

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 accedía 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 podría 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.

Page 61: Desde que pulsamos el Botón de nuestra PC Hasta

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

61

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, tendríamos 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 sería

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

Page 62: Desde que pulsamos el Botón de nuestra PC Hasta

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

62

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 más es el MsDOS, pero debemos verlo de esta manera: como un "paso" más.

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 más, 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 más 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

Page 63: Desde que pulsamos el Botón de nuestra PC Hasta

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

63

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.

Page 64: Desde que pulsamos el Botón de nuestra PC Hasta

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

64

El modo "0" es el modo más 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 están totalmente protegidas, por lo

que un programa de usuario, nunca podría "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

Page 65: Desde que pulsamos el Botón de nuestra PC Hasta

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

65

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

están 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

Page 66: Desde que pulsamos el Botón de nuestra PC Hasta

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

66

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 podrían 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, implicaría que esa "A" saldría

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 pequeñas, 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.

Page 67: Desde que pulsamos el Botón de nuestra PC Hasta

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

67

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 debería 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

Page 68: Desde que pulsamos el Botón de nuestra PC Hasta

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

68

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 sucedería 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, tenía un ahorro de 64 Kbs en las

ventanas MsDOS. Curioso ¿no?.

Seguro que alguien con imaginacion, podría buscar alguna utilizadad real a

este tipo de funcionamiento en nuestro mundo "casero" del PC. Por si acaso,

es bueno saber que existe....

Page 69: Desde que pulsamos el Botón de nuestra PC Hasta

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

69

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, tamaño, 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

Page 70: Desde que pulsamos el Botón de nuestra PC Hasta

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

70

* 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 tendría

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 tamaño de

la "pila" ("heap", monton), maximo que puede utilizar una tarea de 16 bites

es 64 Kbs. Pues bien a ese "pequeño" espacio de memoria y que ademas es

INDEPENDIENTE del numero de megas de nuestro PC (por diseño), 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 pequeña 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 diseñado), o que

termina anormalmente, nos dejará recursos "gastados" en la pila, que no se

recuperarán 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

Page 71: Desde que pulsamos el Botón de nuestra PC Hasta

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

71

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 diseñadores 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

diseño 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 diseño "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 más (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 más de como, cuando y porqué

windows puede sufrir una "catastrofe". Vamos a pasar ahora a ver ya la carga

Page 72: Desde que pulsamos el Botón de nuestra PC Hasta

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

72

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.

Page 73: Desde que pulsamos el Botón de nuestra PC Hasta

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

73

** 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 sería 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.

Page 74: Desde que pulsamos el Botón de nuestra PC Hasta

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

74

** 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.

Page 75: Desde que pulsamos el Botón de nuestra PC Hasta

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

75

** 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

"cariñosos" 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 añaden 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

===================

Page 76: Desde que pulsamos el Botón de nuestra PC Hasta

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

76

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, más 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 más 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.

Page 77: Desde que pulsamos el Botón de nuestra PC Hasta

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

77

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 añade cada nueva aplicacion al

instalarse.

Durante la instalacion, las aplicaciones graban con el siguiente formato:

HKEY_LOCAL_MACHIME\SOFTWARE\Nombre_de_compañia\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 están 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

Page 78: Desde que pulsamos el Botón de nuestra PC Hasta

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

78

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 dañado,

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 más... 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

Page 79: Desde que pulsamos el Botón de nuestra PC Hasta

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

79

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

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 ratón.

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 podría 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.

Page 80: Desde que pulsamos el Botón de nuestra PC Hasta

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

80

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 deberían existir y

solamente por motivos de compatibilidad tendrían 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

Page 81: Desde que pulsamos el Botón de nuestra PC Hasta

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

81

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 cariño". 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

Page 82: Desde que pulsamos el Botón de nuestra PC Hasta

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

82

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, podrían exisitr claves

por usuario, colgando de la clave HKEY_USERS. Por tanto deberán 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-

Page 83: Desde que pulsamos el Botón de nuestra PC Hasta

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

83

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 más donde el dos carga parte de él (DOS=HIGH)

Bien lo anterior es una configuracion estandard con EMM386 y memoria EMS y

la instruccion DOS=HIGH,UMB

(sino se ha entendido hasta aquí, por favor repasar los 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.

Además, 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 cargarán en memoria UMB,

igualmente, el propio MSDOS, en cuanto puede, "mete" allí su zona de

buffers, files, etc...... (por eso, realmente no "vemos" los 128 Ks libre

nunca, porque el propio MSDOS, aunque no hayamos cargado nada, en cuanto se

encuentre DOS=UMB, ya carga allí lo que puede).

Pero.... muy bien, ahora ya hemos terminado de cargar el DOS y empieza

windows a cargarse.

Si arrancamos en "solo 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 haría falta nada más que : en el config, las lineas

devicehigh= display.sys.... y el Country. Y en el autoexec, las dos lineas

mode *no hay que ponerlas "lh" a estas. Y la linea keybsp con "lh". Con esto

es suficiente para windows. El resto de cosas, como ya hablaremos mas

adelante: NO HACEN FALTA, se pueden quitar y ya veriamos como podemos

recargarlas si hiciesen falta a posteriori para entrar en modo MSDOS)

Retomando lo anterior, sabemos la memoria libre, pero cuando entramos en

windows y damos el mismo comando, vemos que en la zona alta de memoria no

nos queda nada....¿?

** Recuperacion de la memoria superior bajo windows

La memoria anterior se puede recuperar. Unicamente debemos añadir en la

seccion [386enh] del System.ini (que está en el directorio de windows), la

Page 84: Desde que pulsamos el Botón de nuestra PC Hasta

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

84

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 dán 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?.

Page 85: Desde que pulsamos el Botón de nuestra PC Hasta

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

85

Esto seria logicamente, una funcion de una libreria del sistema (de una

DLL). El propio sistema o cualquier otro programa, llamandola, sabría 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 estén "linkados" (montados) con esa libreria en sus tripas. Por

tanto si son "estaticas" tenemos 2 desventajas:

1) Los programas ejecutables, serán 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 tamaño 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

dañada. 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

Page 86: Desde que pulsamos el Botón de nuestra PC Hasta

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

86

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 pequeña 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 más), porque se

añaden 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 <[email protected]>

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

Page 87: Desde que pulsamos el Botón de nuestra PC Hasta

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

87

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 más 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 "diseñador" de

sistema operativo. (A este nivel, en diseño, 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 ceñirnos 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) están 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 más nos puede

servir), sino porque es muy dificil de probar (y muy engorroso). Normalmente

no se realizan suficientes pruebas de estas VxD.

Page 88: Desde que pulsamos el Botón de nuestra PC Hasta

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

88

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

pequeño 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 más logico. Si algo funciona mal,

unicamente tengo que tocar la "capa" correspondiente. Si quiero añadir 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

Page 89: Desde que pulsamos el Botón de nuestra PC Hasta

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

89

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 están 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

podrán 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.

Page 90: Desde que pulsamos el Botón de nuestra PC Hasta

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

90

* 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 sería 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á diseñado 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,

Page 91: Desde que pulsamos el Botón de nuestra PC Hasta

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

91

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

día de mañana 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 (más 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

podríamos utilizar dicho liente directamente. Pero como esto es lo extraño,

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

Page 92: Desde que pulsamos el Botón de nuestra PC Hasta

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

92

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 ceñirnos 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 añadir y añadimos el

"Cliente para redes Microsot" (eliminamos el cliente de windows).

Igualmente debemos añadir un transporte compatible con dicho cliente. Digo

"compatible", ya que el TCP/IP no sirve. Para ello añadimos el NETBEUI.

Igualmente ahora debemos añadir 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 conexión.

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:

Page 93: Desde que pulsamos el Botón de nuestra PC Hasta

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

93

1) Se debe entrar a windows con contraseña 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" (están 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 serían 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 contraseña, 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:

Page 94: Desde que pulsamos el Botón de nuestra PC Hasta

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

94

\\nombre_del_otro_PC

o

\\xxx.xxx.xxx.xxx

Se nos tiene que abrir una ventana con los "servicios" que el otro comparte.

Ademas con el boton derecho sobre el servicio podremos "mapearnos" una

unidad de red sobre él.

INTRODUCCION AL TCP. DIRECCION IP

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

Antes de entrar en algunos de los terminos utilizados, vamos a ver un

poquito de la identificacion de una maquina. Un PC bajo TCP/IP debe tener

una direccion UNICA en la red. Si está conectado a Internet, su direccion IP

tiene que ser unica en el mundo.

Una direccion IP está compuesta por 4 bytes. Recordemos que un byte puede

tener un valor decimal entre 0 y 255. Por tanto una manera de represntar una

direccion IP es:

xxx.xxx.xxx.xxx (cada grupo de xxx representa un numero entre cero y 255).

Este numero tiene que ser unico en el mundo en ese instante. ¿Como se

consigue?. Bien, relativamente facil. Existe una organizacion que dá las

direcciones IP en el mundo.

Si es por ejemplo para un solo ordenador, le darían 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 sería

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

Page 95: Desde que pulsamos el Botón de nuestra PC Hasta

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

95

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 tamaño 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

Page 96: Desde que pulsamos el Botón de nuestra PC Hasta

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

96

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 más, 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 parecería

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 están 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 pequeña ayuda.

Page 97: Desde que pulsamos el Botón de nuestra PC Hasta

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

97

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

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

Page 98: Desde que pulsamos el Botón de nuestra PC Hasta

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

98

En TCP/IP, todo se basa en la filosofía 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

sería 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 pequeño "repaso".

Page 99: Desde que pulsamos el Botón de nuestra PC Hasta

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

99

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 tontería no lo es tanto. Y el dia de mañana, cuando

tengamos más 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 pequeña

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

Page 100: Desde que pulsamos el Botón de nuestra PC Hasta

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

100

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

más 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 tendría 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 más 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á" más. El famoso DNS.

DNS = Domain Name Solver

Es decir el "resoluctor" de nombres. Cuando estamos en internet, nosotros

Page 101: Desde que pulsamos el Botón de nuestra PC Hasta

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

101

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).

Page 102: Desde que pulsamos el Botón de nuestra PC Hasta

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

102

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, están

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 pequeña idea sobre el TCP/IP.

Page 103: Desde que pulsamos el Botón de nuestra PC Hasta

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

103

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 país de

pandereta -España- y su monopolio telefonico. Recordemos unicamente que en

España, 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 más 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 "pequeñas". 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

señal/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 están 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

Page 104: Desde que pulsamos el Botón de nuestra PC Hasta

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

104

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 están. 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

Page 105: Desde que pulsamos el Botón de nuestra PC Hasta

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

105

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 nás 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 diseño 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 discusión la velocidad real del modem.

Habia gente que comentaba que aunque su modem es un 28,8 veía 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á

Page 106: Desde que pulsamos el Botón de nuestra PC Hasta

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

106

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 señales digitales de ceros y unos. Para

"digitalizarlo" lo que se hace es un "muestreo" de la señal, unos pocos de

miles de veces por segundo y esa información 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

Page 107: Desde que pulsamos el Botón de nuestra PC Hasta

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

107

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 señales de control y las peticiones e incluso los envios "desde" nuestro

PC, se harán 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 telefonía en España, 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, estarán 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 están 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 pequeñas 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 más: estas señales 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,

pasarán 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.

Page 108: Desde que pulsamos el Botón de nuestra PC Hasta

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

108

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 telefonía nuevas y ademas perfectas ya que es desde un

centro de calculo), la comunicacion se realiza sin problemas.

** Otro problema añadido, al menos en España, 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

están 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 España 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 España (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 señales 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

Page 109: Desde que pulsamos el Botón de nuestra PC Hasta

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

109

tecnologia a la que he llamado nueva (con comillas) realmente era posible

desde hace unos años 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 diseñado. 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 "Tecnologías") 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 telefonía). 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).

Page 110: Desde que pulsamos el Botón de nuestra PC Hasta

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

110

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 día. 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.

Page 111: Desde que pulsamos el Botón de nuestra PC Hasta

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

111

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 funcionarán 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 contraseñas 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 pequeña 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, todavía, existen los especialistas. Nos

quedamos simplemente en la sala de "curas". En la "enfermería".

************ Y POR FÍN ARRANCÓ *****************

** Como colofón, voy a incorporar unos cuantos ANEXOS sobre alguna pequeña

utilidad y unos pequeños 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

Page 112: Desde que pulsamos el Botón de nuestra PC Hasta

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

112

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 dañado USER.EXE o

KERNL32.EXE, *no* debemos recuperarlos. A veces SFC los considra dañados

cuando realmente no lo están 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 tamaños 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 tamaños 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 más *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

Page 113: Desde que pulsamos el Botón de nuestra PC Hasta

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

113

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

Paso a resumir aquí unos pequeños truquillos para configurar e instalar

win98 y evitar el tener los problemas más 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

Page 114: Desde que pulsamos el Botón de nuestra PC Hasta

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

114

borrado alguna, nos permite recuperar la de windows. En caso de que nos haya

sustituido alguna, nos dá el numero de versión actual y el numero de versión

previo que tenia almacenado. Si el numero de versión actual

(independientemente de la fecha) es menor que el que teniamos deberemos

recuperar con el propio SFC la versión original. Si es igual o mayor el

numero de versión, podemos darlo por bueno.

** NOTA: Si alguna vez SFC se "queja" que el user.exe o el krnl32.exe estan

dañados 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" estraños 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

Page 115: Desde que pulsamos el Botón de nuestra PC Hasta

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

115

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 más 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 más finalizar la instalación (o incluso re-instalación) de windows

sobre todo sí durante la instalación 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 crítico 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

Page 116: Desde que pulsamos el Botón de nuestra PC Hasta

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

116

"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 AÑADIR NUEVO HARDWARE

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

** Posibles problemas al añadir 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 más 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 añadimos 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

Page 117: Desde que pulsamos el Botón de nuestra PC Hasta

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

117

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 válida 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, dejarán de funcionar (menos mal que el SCSI 1 es una vieja

norma y ya quedan pocos dispositivos..... pero quedan!!).

* AL AÑADIR NUEVO SOFTWARE

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

** Se deberá verificar siempre, despues de añadir 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 más 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)

Page 118: Desde que pulsamos el Botón de nuestra PC Hasta

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

118

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

Windows 98 al arrancar cada día (una vez al día), 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 comprobación

sobre el registro: si está dañado o no al menos en su información mínima

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 contraprestación, es mucho más seguro.

¿Cuantas copias se guarda?. Es decir ¿cuantos días se guarda?: Por defecto 5

días. Se puede modificar en el fichero scanreg.ini. Igualmente en este

fichero se puede deshabilitar la opción de copia y verificación del

registro, con lo cual nos arrancará mas rápidamente, pero perderemos una

seguridad que antes o después nos hará falta.

Y ahora la pregunta del millón: ¿como podemos beneficiarnos de esto? ¿y como

podemos recuperar la situación a un día determinado?.

Bien, supongamos que nuestro registro se ha dañado, o algún programa lo ha

"roto", del todo (extensiones de archivo perdidas, redefinidas, etc....)

Nos queda la solución de recuperar el registro a la fecha que queramos, para

ello:

* Arrancar en modo "Solo símbolo 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 algún 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 día, podemos ejecutar el programa: SCANREGW (cuidado: termina

en W)

Este programa primero nos analiza el registro (podéis ejecutarlo en

cualquier momento), y por ultimo nos da la opción 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 instalación. Posteriormente mediante SFC y

mediante la recuperación de la base de registro, volvemos JUSTO a la

situación inicial de antes de la posible instalación del producto

problemático. Solo una cosa más. 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 instalación, 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 problemática.

ANEXO IV: WALIGN (OPTIMIZACION DE CARGA DE OFFICE)

Page 119: Desde que pulsamos el Botón de nuestra PC Hasta

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

119

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

Técnicamente este programa lo que hace es "barajar" el ejecutable al objeto

de dejar los códigos 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 símil 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 rápido.

Podíamos alegar, que esto era lo mas lógico desde el diseño 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 código y datos de un programa o dll. La función de

WALIGN, es arreglar esto. Para ello, se apoya en un fichero INI que reside

en el directorio system (curioso ¿no?). El código 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 versión. Se debe

vigilar también la fecha. Este es el motivo por el que nos podemos encontrar

dos programas o dll´s con el mismo numero de versión y diferente tamaño).

El código 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 actualización y se encuentra el Office,

AUTOMATICAMENTE y sin pedirnos permiso (craso error), ejecuta el WALIGN.

En nueva instalación o sino tenemos el Office, deja una tarea pendiente de

ejecución 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

difícil de matizar. Nos deberíamos 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 opción 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

opción? Todavía 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

Page 120: Desde que pulsamos el Botón de nuestra PC Hasta

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

120

importantes:

1) Tener más 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 "más" disco (o mas espacio en disco, o varios

discos). Pero el precio de hardware ha caido en los ultimos años, y el

tamaño 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 ejecución, 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 misión, 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 podría 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 están ocultos (attributo "Hidden") y tiene

atributos ademas de solo-lectura ("Read Only") y del sistema ("System"). Si

Page 121: Desde que pulsamos el Botón de nuestra PC Hasta

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

121

están 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

Page 122: Desde que pulsamos el Botón de nuestra PC Hasta

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

122

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:\, utilizarán este en lugar del IO.SYS, y ademas al finalizar su

ejecucion, lo renombrarán 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

Page 123: Desde que pulsamos el Botón de nuestra PC Hasta

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

123

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 añadimos la linea BootMulti=1

c) Copiamos (via disquete) el resto de programas del antiguo DOS a nuestra

maquina.

Page 124: Desde que pulsamos el Botón de nuestra PC Hasta

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

124

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 Español) 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

mañana 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 pequeña: 500 megas (y nos sobrará).

Page 125: Desde que pulsamos el Botón de nuestra PC Hasta

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

125

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

AÑADIR 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

Page 126: Desde que pulsamos el Botón de nuestra PC Hasta

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

126

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 añadir 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 pequeño 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

Page 127: Desde que pulsamos el Botón de nuestra PC Hasta

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

127

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.

****