Hardware. - ALIPSO.COM: Monografías, resúmenes, biografias y tesis gratis.
Aprende sobre marketing online, desarrollo de sitios web gratis en Youtube
Suscribite para recibir notificaciones de nuevos videos:
Jueves 28 de Marzo de 2024 |
 

Hardware.

Imprimir Recomendar a un amigo Recordarme el recurso

Memoria RAM. Motherborad. Placa madre. Placa aceleradora. Placa de video. Placa de sonido. Disco rígido. Funcionamiento de una computadora. Cómo funciona el CPU.

Agregado: 01 de SEPTIEMBRE de 2003 (Por Michel Mosse) | Palabras: 16010 | Votar | Sin Votos | Sin comentarios | Agregar Comentario
Categoría: Apuntes y Monografías > Computación > Varios >
Material educativo de Alipso relacionado con Hardware
  • Hardware.: La primera placa con soporte UDMA/66 al alcance de todos. A-Bit BE6. La opción lógica hacia UDMA/66.
  • Hardware.: Memoria RAM. Motherborad. Placa madre. Placa aceleradora. Placa de video. Placa de sonido. Disco rígido. Funcionamiento de una computadora. Cómo funciona el CPU.
  • Hardware:

  • Enlaces externos relacionados con Hardware

    Que ocurre desde que pulsamos el botón hasta el arranque Parte I

    Introduccion

    El Técnico

    Que ocurre desde que pulsamos el botón hasta el arranque

    Parte I

    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 más 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, él más guapo, él mas

    listo y él más 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 una 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-estándar (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 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 "Read Only Memory",

    es decir "Memoria de Solo Lectura", y si es de solo lectura ¿como podemos

    actualizar la bios?. Bueno,.... en un principio, las ROM eran de solo lectura.

    Actualmente el termino ROM es un poco más 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: sí. 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

    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

    scanners que también les suceden 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 dependen 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).

    Importantísimo: 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 peor, nuestro

    sistema operativo, al menos funciona.

    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 ¿qué 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

    multifunción de la placa madre. Pero existir: Existen.

    Enumeremos un poco:

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

    Que ocurre desde que pulsamos el botón hasta el arranque

    Parte I I

    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.

    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

    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

    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 líneas de direcciones, tal y como comentábamos

    antes, se definió, que la manera de "sumar" esos dos registros fuese, poniendo

    uno a continuación del otro y desplazando el código de segmento un "cuarteto" (o

    "nible") añadiéndolo un cero. Por tanto, por ejemplo: (segmento A012, offset

    2312)

    Segmento: A0120

    Offset 2312

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

    Dirección A2432

    Cinco "cuartetos" es decir 20 bits, por tanto se podían 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

    única. Es decir, la misma solución, nos podría haber dado por ejemplo:

    Segmento A0000

    Offset 2432

    -----------

    Dirección 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 dirección de segmento, otra dirección que

    "teóricamente" pertenece a "otro" segmento.... malo de cara a programación ¿no?)

    A este modo de funcionamiento, es lo que ahora llamamos modo "real" del

    procesador y a ese mega, es lo que llamamos memoria "real" del procesador.

    Y además por definición, cualquier "compatible" (y los actuales lo son), 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 evolución de esta primitiva. Poco

    después de nacer el 8086, surgió ya el 80286 capaz de direccionar 16 megas de

    memoria. Duró muy poco, ya que fue una transición al 80386. El famoso 386 con el

    cual se conserva actualmente compatibilidad absoluta (excepto una y solo una

    nueva instrucción en el Pentium). Por tanto la arquitectura actual se la llama

    también arquitectura 386. El 386, tenía (tiene) un nuevo modo de funcionamiento.

    El modo "protegido", además del modo "real" y otro modo híbrido 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 dirección 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, podían haberse numerado por ejemplo R0, R1, R2...., tal

    y como sucede en otras arquitecturas. Pero Intel decidió ponerles "nombre" y

    además, que en ciertas operaciones aritméticas, fuese obligatorio realizarlos

    únicamente con ciertos registros y no con todos. Los nombres, fueron también tan

    "raritos" como AX, BX, CX, DX, SI, DI, SP, CS, IP, ES, SS, DS. Y estos son los

    únicos registros con los que se puede operar.

    La evolución posterior al 80486, y Pentium únicamente trajo consigo la

    posibilidad de incorporar un chip matemático, 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 gráficos y vídeo, y que al implementarlas precisamente como

    "instrucción" hardware, facilitaban la programación y la "rapidez" a los

    programas que eran capaces de utilizarlas. No nos llevemos a engaño: ningún

    sistema operativo las utiliza y además pocos, realmente pocos programas

    (fundamentalmente los juegos), las utilizan.

    El Pentium, solo se distingue de sus predecesores en que tiene una instrucción

    "más". una sola: el "cpmexchg" es decir: compara dos registros y en función 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.

    Posteriormente surgió, el Pentium Pro, que básicamente es un Pentium optimizado

    para ejecutar código "puro" de 32 bits, pero que se queda ridículo cuando se le

    mete código de 16. Para solventar esto, nació el PII, que básicamente es un

    Pentium Pro mejorado para código de 16 bits y que además se le incorpora de base

    la tecnología MMX.

    Y por ultimo estamos en el PIII. La única 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 instrucción 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).

    Según han ido evolucionando, en los Pentium, esta instrucción utiliza un solo

    ciclo de reloj (y encima los Pentium, pueden llegar ya a 500 millones de ciclos

    de reloj por segundo), y además, en el Pentium, en "ese" ciclo de reloj, se está

    utilizando técnica de "pipeline" (como las fotocopiadoras), es decir aunque este

    procesando una instrucción, está preparando otra - en total hasta 5

    simultáneamente. (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 técnica de "pipeline").

    Además, para acelerar las CPUs, se ha incrementado su memoria caché de primer

    nivel, y además se ha creado un "predictor de saltos" optimizado.

    Pensemos que cada vez que un programa efectúa un "salto", es decir, realiza una

    operación 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 código

    de programa que empieza en donde apunta dicho "salto". Por tanto, es necesario

    "invalidar" la caché y cargar desde la dirección que apunta el "salto" otra vez

    en la caché. Esto es una operación "costosa". Solución: ¿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 única condición es que acierte lo mas posible. Si

    no, la CPU se nos viene abajo.

    Bueno, pues ahora, Intel tiene un juicio pendiente con la tecnología ALPHA de

    Digital, por "piratear" su predictor de saltos en la arquitectura "Alpha".

    (Aparentemente le juicio no va a realizarse ya que Intel "ha comprado" toda la

    fabrica de desarrollo de los chips Alpha y su tecnología hace unos meses....

    curioso, también ¿no?)

    Y otra cosa: fijaros que este predictor de saltos, es importantisimo. Esto es lo

    que realmente "acelera" una CPU (aparte de la tecnología "pipeline").

    Y la pregunta del millón: ¿la competencia de Intel, tiene suficientemente

    desarrollada este tipo de tecnología?. Personalmente opino que no. No existe

    ningún índice 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 evolución de

    ella, ha sido únicamente respecto a la velocidad, y poco más. Variantes: EDO,

    DIMM, etc..... pero informativamente, excepto la compatibilidad con nuestra

    placa madre, y su velocidad, poco mas puede interesarnos.

    Que ocurre desde que pulsamos el botón hasta el arranque Parte III"Ethek &

     

    El Técnico

    Que ocurre desde que pulsamos el botón hasta el arranque

    Parte I I I

    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 básicos que se definieron en las placas

    madre primigenias.

    Son:

    * El controlador de Interrupciones

    * El controlador de DMA

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

    Tan exactamente igual, que hasta la frecuencia de funcionamiento del chip de DMA

    sigue siento de unos ridículos 4 MHz, que quizá fuesen rápidos en su momento,

    pero que actualmente son ridículos 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 líneas de "control". Estas son las

    importantes para la mayoría de los dispositivos.

    Veamos las tres "únicas" 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 máximo, 2 bytes) en un "puerto". Y que un "puerto" no es nada mas que

    una dirección de destino que tiene algún chip o dispositivo de la placa madre.

    Un puerto, se direcciona con 2 bytes, es decir existe un máximo 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 instrucción OUT poner datos en un puerto. La secuencia de

    datos que estamos poniendo para un determinado hardware, puede ser por ejemplo,

    una "petición" 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 "técnico").

    Igualmente, mediante la instrucción IN, 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 posibilidades:

    1) A lo "bruto". Empezamos enviando una petición a un dispositivo (mediante la

    instrucción OUT), y según el manual del fabricante, ahora ese dispositivo, nos

    va a responder en un puerto. Pues bien, empezamos a leer (mediante IN), de ese

    puerto hasta que exista un dato. Hala!, a lo loco!,

    OUT->no hay dato?->OUT->no hay dato?->OUT.......

    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 petición que realizamos con el IN, pues... nos hemos metido en

    un "bucle" infinito. La CPU nunca tendrá ese dato y además la secuencia

    programada no se puede interrumpir....... malo, malo.

    Una mejora de esta solución, sería mirar únicamente cada cierto tiempo. Se puede

    hacer que se mire en cada "tic" de reloj. Y ese "tic" de reloj interno lo

    podemos programar (existe también 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)

    2) Un poco más sofisticado. Alguien inventó las IRQ (Interrupt Request). Es más

    lógico: le pedimos algo al dispositivo, y nos dedicamos a hacer otras cosas.

    Cuando el dispositivo tenga el dato, simplemente que nos avise enviando una

    "interrupción" (IRQ). Se llama así porque una interrupción, interrumpe

    obligatoriamente lo que esté haciendo la CPU y la obliga a tomar alguna acción.

    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 también mas adelante.

    * Este es el método IRQ.

    ** Y existe un tercer método para llevar ciertos tipos de datos desde un

    dispositivo hardware.

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

    programación a nivel de decirle cuantos queremos), nos los pase a una dirección

    de memoria prefijada sin necesidad de que la CPU trabaje para nada. Esta es la

    técnica DMA. Esta técnica aparentemente genial tiene un inconveniente (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

    "paron".

    Bueno,... esto no era tan importante en la primera arquitectura del PC, con CPUs

    a 4,77 MHz, y una DMA rápida (4 MHz), este tipo de acceso simplificaba la

    programación y además era mas rápida que las técnicas IN, OUT (técnicas PIO).

    Pero por desgracia y para conservar la compatibilidad la velocidad de la DMA

    sigue siendo la velocidad primitiva (4 MHz), y además por el mismo motivo, la

    DMA solo sabe hacer transferencias de 8 y 16 bits simultáneamente (cuando la

    memoria actual se direcciona en un bus de 32). Y además, 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, habíamos visto que existía

    el:

    ** Controlador programable de interrupciones. ¿y que hace este "bicho"?, pues

    fácil, lo que hace es que cuando recibe una interrupción, 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 línea de control especial (y

    única!!). Se le llama "programable" ya que tiene la posibilidad de que si recibe

    "simultáneamente" mas de una interrupción, puede ordenararlas por las

    prioridades que le haya programado el sistema operativo, para írselas 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 interrupción y la CPU ha llamado a

    la rutina de servicio (driver) que controla esta interrupción, lo primero que

    tiene que hacer, en cuanto pueda, el "driver" es emitir una instrucción 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

    instrucción STI.

     IRQs (INTERRUPT REQUEST)

    Bueno, pues también arrastramos aquí una desgraciada herencia. Solo se

    definieron 16 IRQs (y además, no vectorizadas, por lo que en principio NO pueden

    compartirse. Ojo!!, he dicho en "principio").

    Y además 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 tiempo real (CMOS de la BIOS)

    IRQ 9 LIBRE

    IRQ 10 LIBRE

    IRQ 11 LIBRE

    IRQ 12 LIBRE

    IRQ 13 Coprocesador matemático

    IRQ 14 Primer controlador IDE de disco duro

    IRQ 15 Segundo controlador IDE de disco duro

    Fijémonos que en principio, solo quedan 5 libres. Pero.... si tenemos ratón en

    puerto de ratón, este utilizará la IRQ 12. Quedan 4. Si nuestra placa tiene bus

    USB, este necesita otra interrupción, si además tenemos bios ACPI, esta necesita

    otra interrupción..... y la tarjeta de red, otra, 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 interrupción entre

    varios dispositivos.

    Con esto de los "buses" debemos remitirnos otra vez a la "historia" de la

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

    artículos: "Desde que pulsamos el botón de arranque hasta..."

    Que ocurre desde que pulsamos el botón hasta el arranque Parte IV"Ethek &

     

    El Técnico

    Que ocurre desde que pulsamos el botón hasta el arranque

    Parte I V

    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 recordatorio, 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 continuación, 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 fue el bus ISA. En un principio era de 8 bits y rápidamente

    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 máximo de

    16 megas de transferencia por segundo PARA todos los dispositivos. Ridículo en

    la situación actual.

    Y ahora la pregunta del millón: ¿como se comunica con la CPU?.

    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, además de los consabidos puertos, IRQ y DMs que pueda pillar

    (evidentemente de la lista de "libres" que digamos 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, podía llegar hasta la dirección hexadecimal A000:0000 (es decir, recordando

    un poco, hasta el segmento A000, offset 0). Si pasamos esta dirección a Kb´s nos

    da la increíble capacidad de 640 Kbs ¿os suena esta cifra, no?.

    Digo "increíble capacidad", porque en el año 82, era realmente increíble.

    Igualmente IBM definió las áreas con los segmentos desde A000 a C000 como

    reservadas para los buferes de vídeo. Definió igualmente el segmento F000 hasta

    el final del mega para contener la información 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 área para el vídeo "gráfico"

    C000 Hasta aquí, 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 gráfica en modo monocromo y modo

    texto. La B800 a la BFFF es para la memoria gráfica en como color y modo 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 gráfica o de vídeo. 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 prácticamente siguen todos los fabricantes de tarjetas de vídeo.

    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 gráficas, 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 combinación de ellas) se

    necesitan para que la tarjeta sirva para algo.

    Y ahora ciñéndonos 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 mediante switches. Así de fácil. Era

    responsabilidad nuestra saber que IRQs o ports teníamos libres y mediante

    switches se configuraba la tarjeta.

    Bueno, se configuraba lo que se podía. Cada fabricante escogía 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 teníamos que utilizar una u otra. No podíamos

    instalar ambas a la vez.

    Curioso y duro el tema, ¿no?. Antes de comprar había que leerse con lupa que

    IRQs podía utilizar y que puertos y que DMAs y que direcciones podía pillar la

    posible BIOS. Llevar en el bolsillo, los que 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

    teníamos nuestra flamante tarjeta. Pero ya nos teníamos 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 técnicas 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 entre 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

    Surgió mucho mas tarde. Es relativamente 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 únicamente 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 teníamos hasta ese momento.

    Pero de paso, empieza a complicarle la vida a la BIOS de la placa madre. En ese

    momento, fue cuando las BIOS, pasaron de ser una cosa "tonta" y prácticamente

    "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

    gráficos 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 gráfico en un

    instante dado, ni se nota). Lo único importante aquí es la velocidad. Existen

    varios estándares 1X, 2X, 4X Y en general se va 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 matiz:

    *) El BUS AGP se inicializa "después" del BUS PCI. Esto para respetar al pie de

    la letra la norma PCI. Por tanto, si tenemos dos tarjetas gráficas, una PCI y

    otra AGP, siempre será la tarjeta primaria la PCI (teóricamente más lenta que la

    AGP).

    Pero como las normas están hechas precisamente para saltárselas, pues ciertos

    fabricantes de bios, empezaron a poner la pregunta "Primary AGP/PCI o PCI/AGP"

    en la configuración de la bios para saltarse esta secuencia. Pero repito: no es

    un estándar, por tanto nuestra BIOS, pudiera no tener esa opción.

    Que ocurre desde que pulsamos el botón hasta el arranque Parte V"Ethek &

     

    El Técnico

    Que ocurre desde que pulsamos el botón hasta el arranque

    Parte V

    PLUG AND PLAY

    Bien, hasta aquí hemos visto los posibles "buses" incorporados en nuestra placa

    madre. Queda todavía por ver el bus SCSI. Debido a que este último, no es nada

    más que una tarjeta SCSI de la cual sale un nuevo bus, podemos abordar el tema

    de Plug and Play en este momento y dejar para mas adelante el SCSI.

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

    Teníamos que asignarlas una IRQ de la lista que teníamos "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 no a un posible ratón en puerto de ratón-)

    Evidentemente este conjunto de IRQs libres empieza a quedarse escaso, máxime

    cuando en la actualidad todo el mundo tiene tarjeta de sonido la cual nos va a

    pillar otra IRQ, y probablemente la tarjeta de vídeo 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 habíamos comentado que el bus PCI fue

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

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

    necesaria. En win95 / win98, "siempre" la bios le asigna una IRQ y por tanto

    Windows la utiliza (y los drivers de impresión la necesitan). En Windows NT (y

    Windows 2000), esto no es necesario. NT y 2000 "pasan" de la bios, y los drivers

    de impresión no lo necesitan. Lo gestionan mediante técnica de "pool" y liberan

    al sistema una IRQ que puede ser preciosa.

    c) La IRQ 12 es ISA si está asignada a puerto de ratón. Si en nuestro PC tenemos

    el ratón 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 situación y "liberan" automáticamente dicha IRQ. Pero esto no es

    lo normal y por tanto somos nosotros responsables de informarle a la propia

    bios.

    ** He repetido los conceptos anteriores que ya habíamos visto para tenerlos

    frescos en este momento. Vamos a para entonces a hablar realmente del PnP.

    En Windows 95, Microsoft preparó una especificación del PnP. No vamos a entrar

    en detalles técnicos, únicamente conceptuales. En resumen, la especificación PnP

    es la siguiente:

    1) Cada fabricante de periféricos PnP tiene asignado un numero identificativo

    único en el mundo.

    2) Los fabricantes son responsables de "numerar" sus dispositivos. Es decir una

    tarjeta suya tendrá en numero 1, otra el 2, etc. Números UNICOS.

    3) Los dispositivos se agrupan por "funcionalidades" (dispositivos de "Mass

    Storage" para los de acceso a disco, "Vídeo" para los de vídeo, "Multimedia

    Device" para los multimedia, etc.... es decir hay una clasificación.

    4) El conjunto de estas dos características definidas en el punto 1) y 2) forma

    un "string" (cadena de caracteres) identificativo "único" 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 única 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" estándar 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, preguntándole al dispositivo, este es capaz de

    informarnos que quiere y que posibilidades tiene.

    6) La BIOS en inicialización, 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 da las IRQs del sistema 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, ratón, 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 asignación a

    dispositivos PnP.

    7.3) En este momento tiene la bios una lista de IRQs que le quedan libres.

    7.4) Se recorre el bus ISA y "pregunta" a cada tarjeta sí es o no, PnP. Y si es

    PnP.: que necesita y que posibilidades alternativas le da. 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 da 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 únicamente 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 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 principio, 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. Si *no* fuesen PnP. y además

    no tenemos ningún "jumper" para que lo sean, debemos ver que IRQ va a necesitar

    (mirando el manual nos dirá cuales "puede", y además si tenemos o no que poner

    algún 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 únicamente 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 asignársela, 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, prácticamente no quedan.... (a excepción

    de algún módem 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 fácil. Abrimos la maquina y cambiamos a la

    tarjeta de "slot". Recordad que la bios asigna su lista de libres recorriéndose

    el bus PCI. Por tanto cambiándola de slot se la encontrará en otra posición y

    "seguramente" le asignará otra IRQ. (Realmente aquí intervienen más factores de

    tipo técnico, ya que existen las denominadas IRQ#A, IRQ#B, IRQ#C e IRQ#D. Estas

    son las que realmente solicita un dispositivo y el propio bus PCI las tiene

    "entrelazadas" y juega con estas IRQs "lógicas" y la lista de IRQs libres. Pero

    este es un tema "técnico" 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 botón de encendido"...... y antes de empezar a cargar todavía el

    sistema operativo.

    Que ocurre desde que pulsamos el botón hasta el arranque Parte VI"Ethek &

     

    El Técnico

    Que ocurre desde que pulsamos el botón hasta el arranque

    Parte VI

    BUS SCSI Y SUS DISPOSITIVOS

    Como introducción, debo comentar que la tecnología SCSI siempre es la puntera (y

    la mas cara). Los discos SCSI siempre son mejores que los IDE. Y mucho mas

    rápidos, pero evidentemente a igualdad de "tecnología". Me explico, todo lo

    "puntero" siempre nace en los dispositivos SCSI. Posteriormente los IDE (uno o

    dos años mas tarde) los alcanzan. Hagámonos 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 generación. Actualmente el SCSI tiene ya discos de

    10.000 revoluciones y con caché interna de 4 megas. Los IDE todavía 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 únicamente tenemos

    un cable, la tarjeta está en uno de los "extremos" del bus. Es decir,

    teóricamente podemos tener:

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

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

    (he representado por "D" cualquier dispositivo SCSI (disco, CD-ROM, 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 (da igual).

    IMPORTANTE: El BUS SCSI debe estar "terminado" por *ambos* extremos. Esto es

    *OBLIGATORIO*, son propiedades eléctricas del dispositivo y si no prestamos

    atención a esto, en cualquier momento puede suceder un mal funcionamiento 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

    - - -

    N N N Identificación 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 además hemos dicho que la tarjeta es un dispositivo más. Recordar además que

    las tarjetas SCSI, realmente son realmente una CPU especial y que además 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?. Fácil: en las "antiguas"

    tarjetas, normalmente por jumpers como los anteriores, y en las tarjetas

    actuales, entrando en su BIOS y asignándoselo. Por defecto la tarjeta SCSI

    siempre viene con el ID=7.

    Estos numeritos, no solo son para diferenciar cada dispositivo, sino que además

    nos determinan la "prioridad" del dispositivo. La norma SCSI define que el

    dispositivo de máxima 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 lógica, la que tiene mayor prioridad en el BUS.

    ** Otra característica de la que hemos hablado anteriormente es la

    "terminación". Y habíamos 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" eléctrica 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 compremos suelen tener el "TE" activo. ¿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 terminación, 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 también en la propia BIOS de la tarjeta además de

    asignarle allí el numero de ID. * Algunos de los dispositivos "viejos", en vez

    de tener el "jumper" TE, lo que físicamente tienen es una fila (o dos) de

    resistencias ("resistor"). La manera de quitar la "terminación" es eliminar

    físicamente 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 tapón. Esto es muy útil, mi

    costumbre, según 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 transferencia 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

    comunicación al doble de velocidad. Por tanto soporta 20 megabytes en el bus.

    Los dispositivos deben soportar negociación "ultra". Prácticamente 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 todavía el

    15, 14, 13,.....,8. Debido a que el cable es de 68 hilos, físicamente 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 combinación 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 tecnología, llamada también LVD (Low Voltage Diferential).

    Normalmente estas tarjetas son 2 buses en 3 conectores. Dos 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 extremos sigue siendo la tarjeta. Por tanto,

    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, también 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 resistenca "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 tuviese activo, el bus debe

    terminarse también con una resistencia externa. Pero debe ser una resistencia

    "pasiva" o "terminación 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 tecnología SCAM. Esta tecnología es simplemente que los dispositivos

    negocian (o pueden negociar) su ID con la tarjeta y la propia tarjeta puede

    cambiárselo automáticamente. 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 opción 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 también es configurable mediante su bios.

    Que ocurre desde que pulsamos el botón hasta el arranque Parte VII"Ethek &

     

    El Técnico

    Que ocurre desde que pulsamos el botón hasta el arranque

    Parte VII

    CONTROLADOR IDE

    Este dispositivo, históricamente era una tarjeta "aparte" que se pinchaba en un

    slot ISA. Después de aparecer el bus PCI dichas tarjetas empezaron a ser PCI y

    en la actualidad, prácticamente en todas las placas madre vienen incorporadas.

    ** Se le llama controlador IDE, pero realmente es "la mitad" del controlador. Me

    explico: la electrónica de los actuales discos duros lleva incorporada la otra

    mitad. Recordemos que un controlador IDE soporta dos "buses" o "canales" IDE.

    Cada canal IDE únicamente puede soportar a su vez dos dispositivos: discos

    duros, disco y CD, o dos CDs. Por tanto estamos limitados a un máximo 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 matización anterior, ya que si

    únicamente tenemos utilizado un canal ¿no podríamos 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 marque una

    admiración amarilla en el canal IDE secundario. No es problemático 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 mayoría de los

    controladores actuales (drivers de Windows), se puede entrar en al Administrador

    de dispositivos y en la controladora existe una opción (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 admiración amarilla. Pero repito, esto

    no influye en el rendimiento ni en el comportamiento de Windows.

    VELOCIDAD DE LOS DISPOSITIVOS IDE

    Siempre hemos oído 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 rápido? Tenemos varios componentes que influyen

    desde que un sector de datos está en el disco 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 única. Es un componente mecánico y

    por tanto únicamente depende de la velocidad de rotación del disco (actualmente

    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

    sector, acabe de pasar por debajo de la cabeza de lectura. Si es así, tendremos

    que esperar una revolución 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 leerá inmediatamente. Y estadísticamente

    la media de los sectores que queremos leer, estarán a la "mitad" de distancia de

    una revolución completa del disco. Esto es lo que se define como "average", y

    realmente solo depende de la velocidad de rotación. A mas velocidad, mas rápido

    será el disco (y mas caro). No tenemos en cuenta aquí también 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 movimiento

    transversal de posicionamiento a ese cilindro. Esto es lo que se denomina

    "seek". Por otra parte, pensemos, que la "mitad" de las controladoras actuales,

    están integradas dentro de la electrónica del disco duro. Y allí es donde

    podemos tener el verdadero cuello de botella (otro más), ya que a circuiteria y

    la lógica 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 después 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 métodos 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 través de los diferentes ports de I/O (Entrada /

    Salida) de la controladora que también sirven para la transmisión 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 después de ejecutar dicho comando. Uno a uno (o dos

    a dos, como máximo)- En este caso, la tasa de transferencia de datos no solo

    está limitado por los valores máximos de velocidad del bus, sino también por el

    rendimiento de la CPU, y evidentemente en un sistema multitarea, la CPU puede

    que llegue a estar demasiado ocupada preocupándose del acceso a los datos.

    MEMORY MAPPED I/O

    La CPU podría recoger los datos de la controladora de una manera mas rápida, si

    esta los dejase en una zona de memoria fija. En este caso, la CPU puede trabajar

    mucho mas rápidamente con estos datos ya que puede moverlos mediante las

    instrucciones MOV que trabajan mas rápidamente 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 saben

    del modo protegido (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 técnicas 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, CD-ROM,

    etc..) a la memoria y evitar con ello, el largo camino a través 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 rápido 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ó haciéndose 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 rápida que el PIO. De esta forma no se puede alcanzar

    mas de 2 Mb /segundo. Por ello, la mayoría de los discos modernos ya no

    controlan según el método 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 cual 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 están vendiendo placas madre con

    controladoras incorporadas a 66 MB/seg.

     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 también el propio dispositivo (la

    electrónica 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

    núcleo del sistema operativo, en relación con los métodos 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 gestión de memoria virtual, manejada 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 (físicas) en la memoria. Pero de

    esto, los programas no se enteran, ya que nunca entran en contacto con las

    direcciones físicas, 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 problemática, no solo

    surge en Windows y otros sistemas en modo protegido. También 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 emulación de la memoria expandida y que

    depende de la gestión 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 programación del controlador DMA, mediante la BIOS

    o un programa, y que convierte las direcciones virtuales indicadas en

    direcciones físicas verdaderas antes de que se escriban los registros del

    controlador DMA (antes que se programe una lectura/escritura)

    Que ocurre desde que pulsamos el botón hasta el arranque Parte VIII"Ethek

    &  

    El Técnico

    Que ocurre desde que pulsamos el botón hasta el arranque

    Parte VIII

    RESTO DE DISPOSITIVOS INCORPORADOS EN PLACA MADRE

    En las placas madres actuales, tendremos incorporados:

    1) Puertos serie (COM1 y COM2)

    2) Puerto paralelo

    3) Puerto de ratón

    4) Puertos USB (prácticamente en todas las placas actuales).

    PUERTOS SERIE

    Simplemente son unos puertos de baja velocidad (115200 bits/segundo) Esta

    velocidad es adecuada para los módem o el ratón serie, pero para comunicación PC

    a PC mediante la conexión serie que nos suministra Windows, se queda bastante

    escaso.

    Esta comunicación equivale a unos 14 Ks por segundo. Evidentemente se queda muy

    corta para conexión por cable. Debemos recordar que la velocidad se configura en

    el Administrador de dispositivos. La velocidad configurada allí únicamente tiene

    efecto en la conexión por cable y no tiene ningún efecto en el módem. Esto es

    importante, ya que por defecto en Windows, viene a 9600. Mi consejo es

    configurarlo al máximo 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 millón) de bps. (en este caso, la comunicación

    vía 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 montón de dispositivos. Los mas

    "genéricos", 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 conexión de estos dispositivos, debemos prestar

    especial atención a su configuración 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 método 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 función de

    la velocidad y prestaciones, no quiere decir que sea lo optimo para nuestros

    dispositivos.

    Yo aconsejo realizar las pruebas del puerto paralelo seleccionando en la bios el

    puerto paralelo con lo métodos anteriores, y probando cada opción 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 métodos del puerto paralelo. Por ello es necesario "probar".

    Es importante este tema, fijaros que por ejemplo un ZIP en puerto paralelo, pasa

    de unos ridículos 5 Megabytes por minuto, hasta unos "buenos" 30 megas / minuto,

    únicamente configurando correctamente el puerto (y ejecutando luego el

    "optimizador de puerto paralelo" de iomega, que lo único que hace es "mirar"

    como tenemos el puerto para "decírselo" 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 típica de puerto paralelo en una comunicación directa por cable

    entre dos PCs, llega a 1 Megabyte por segundo, pudiendo alcanzar los 2,5 megas

    en las placas madre de ultima generación que utilicen un "buen" chip de

    multipuerto.

    PUERTO DE RATON

    Es un puerto (una conexión) 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 ratón 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 situaciones en (placas madre SuperMicro) que aunque deshabilitemos el

    puerto de ratón en la placa madre, no deja que ningún 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 algún 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,

    máxime teniendo 2 puertos serie en un PC, y siendo el ratón un dispositivo que

    *no* necesita "velocidad" en el puerto. Entiendo que es una herencia arrastrada

    y que surgió en sus épocas únicamente por motivos de marketing (de IBM).

     PUERTOS USB

    Bien, en un principio se apostaba por ellos como la conexión universal y el

    futuro de todos los periféricos a conectar a un PC. Desde luego, este tipo de

    apuesta no va tan rápido como se esperaba.

    * La mayoría 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 de ratón normalmente en la bios podemos

    "desactivar" el USB si no vamos a tener dispositivos de este tipo. Si lo

    desactivásemos, 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

    millón es ¿si solo tengo 2 puertos en el PC, como es posible conectar hasta 127

    dispositivos?. Pues fácil, 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 dispositivo

    del tipo "Intel XXXXX PCI to USB Universal Host Controller" Pinchándolo,

    podremos ver en esa pantalla la "Revisión de Hardware". Debe ser la 001 o

    superior. La versión 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 fácil!).

    ** IMPORTANTE: Normalmente los puertos USB, pueden dar un pequeña cantidad de

    corriente a los dispositivos. Existen dos "estandard": de 100 mA (mili Amperios)

    y de 500 mA. Windows controla en función 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 cámaras de vídeo, las cuales toman

    "corriente" del puerto. Las cámaras de vídeo 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 periféricos. (problemas de la bios

    de la placa madre y que normalmente se corrige en alguna revisión de la bios)

     *** Y con esto cerramos el capitulo (por ahora) dedicado al hardware y las

    inicializaciones que efectúa la bios sobre él en el momento en que "pulsamos el

    botón de encendido de nuestro PC". Igualmente hemos visto las posibles

    parametrizaciones que podemos hacer del hardware a través de la bios.

    A partir de ahora, vamos a entrar con el "software", es decir una vez que la

    bios a inicializando los componentes hardware y empieza a construir ciertas

    tablas de interrupciones y parámetros en la memoria del PC, para a continuación

    "buscar" un disquete o un disco duro con el sistema operativo y cargarlo en

    memoria.

    Que ocurre desde que pulsamos el botón hasta el arranque Parte IX"Ethek &

     

    El Técnico

    Que ocurre desde que pulsamos el botón hasta el arranque

    Parte IX

    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.

    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 párrafo anterior es la opción por defecto de casi

    todas las bios, y matizando precisamente en esta opción, mi consejo es

    precisamente desactivar el intento de carga desde disquete en la bios. Casi

    todas las bios, permiten cambiar la secuencia 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 rápidamente 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 tuviésemos 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 método de carga, que coincide

    precisamente con el arranque estandard desde un disquete. Para ver la carga

    desde disco duro, debemos conocer primero como está lógicamente particionado el

    disco.

     PARTICIONES EN UN DISCO DURO

    Bien, por definición un disco duro permite hasta 4 particiones. No puede tener

    más y la explicación, proviene del diseño del sector de boot del disco duro.

    Este sector de boot, se le llama también MBR (Master Boot Record). Dicho sector

    que ocupa siempre la misma posición física 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

    vacío este sector y además lo hace automáticamente si el disco está nuevo

    (recién comprado). Todos los sistemas operativos, lo crean exactamente igual.

    Recordad que el tamaño de un sector es únicamente 512 bytes.

    La estructura de dicho sector, es un mini-programa y una pequeña tabla de 4

    elementos. Cada elemento de la tabla, tiene los datos de cabeza, cilindro,

    sector de donde empieza una partición, de donde termina, el tipo de partición

    (hay unos códigos para FAT 16, FAT 32, Linux, NTFS, primaria, secundaria

    etc...), y una marca de cual es la partición "arrancable".

    El mini-programa de este sector, lo único que sabe hacer es leer dicha tabla,

    buscar si existe una partición "arrancable" y si existiese, va a la posición 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

    partición (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 creación de las particiones es el FDISK (en

    sistemas Microsoft)

    Entonces, retomando un poco el titulo de estos artículos, la bios lo que hace es

    cargar en memoria el MBR del disco duro (en la dirección 7C00 hexadecimal) y

    cede el control a dicho programa. Este se realoja en otra posición de memoria,

    busca la partición "activa" o "arrancable" y carga en memoria su sector de

    "boot", también en la dirección 7C00 y le cede control.

    Pero antes de continuar 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 recién 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 ningún sistema

    operativo. La bios lo carga en la posición de memoria 0000:7C00 siempre que no

    encuentre un disquete en la unidad A:.

    Si los dos últimos bytes de los 512 de este sector contienen el código 55h,AAh

    (hexadecimal) considera este sector como ejecutable y comienza la ejecución de

    programa en el primer byte de este sector una vez se ha cargado en la posición

    de memoria anterior.

    El código de programa que hay en este sector de arranque, tiene como tarea el

    reconocer la partición "activa" y con ello, el sistema operativo a ejecutar,

    cargar su sector de arranque y comenzar la ejecución del código de programa que

    allí está contenido. Ya que este código de programa, por definición, se ha de

    encontrar en la posición de memoria 0000:7C00, el código de partición,

    primeramente, se desplaza a la posición de memoria 0000:0600 y con ello deja

    espacio para el sector de arranque.

    Dirección Contenido Tipo

    +000h Código de la partición Código

    +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 Identificación AA55h 2 Bytes

    Longitud= 200h = 512 Bytes.

    Veamos cada entrad de 16 Bytes que define una partición, que es lo que contiene:

    Dirección Contenido Tipo

    +00h Estado de la partición 1 BYTE

    00h = Inactiva

    80h = Partición de arranque

    +01h Cabeza de lectura/escritura 1 BYTE

    donde comienza la partición.

    +02h Sector y Cilindro donde comienza 2 BYTES

    la partición (formato WORD - palabra)

    +04h Tipo de partición 1 BYTE

    00h = Libre

    01h = DOS con la vieja 12-bit FAT

    02h = XENIX

    03h = XENIX

    04h = DOS FAT 16

    05h = Partición extendida

    06h = Partición DOS 4.0 > 32 Megas

    DBh = Concurrent DOS

    .... etc

    +05h Cabeza de lectura/escritura 1 BYTE

    donde termina la partición.

    +06h Sector y cilindro donde 2 BYTES

    termina la partición.

    +08h Distancia del primer sector de la 4 BYTES

    partición (Sector de arranque)

    +0Ch Numero de sectores de esta partición 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 partición 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 partición.

    3) Volver a cargar los 512 primeros bytes de esa partición 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 partición)

    Que ocurre desde que pulsamos el botón hasta el arranque Parte X"Ethek &

     

    El Técnico

    Que ocurre desde que pulsamos el botón hasta el arranque

    Parte X

    PARTICIONES. SU SIGNIFICADO Y SU CREACION

    Una partición, 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 particiones 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 Windows 98). Esta

    pregunta a lo que realmente se refiere, es que si decimos "S", la partición que

    vamos a crear en ese momento, será FAT 32. Si decimos que "N", la partición 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 partición.

    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 "físicamente" puede hacerse, para

    ser capaces de almacenarlos y recuperarlos rápidamente?.

    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 rápida de acceder a un archivo, siempre es si

    tenemos un "índice" a donde está ese archivo.

    2) Sí tenemos un "índice", debemos guardarlo siempre en el mismo sitio para que

    el sistema lo busque rápidamente.

    3) Además, de alguna manera, deberemos ser capaces de buscar rápidamente 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 mínima 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 "agrupación". 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 tener en un índice también

    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.

    7) Bueno ya tenemos un índice para tener los archivos. Vamos a llamarle

    "Directorio principal". También tenemos unos pequeños índices o tablas que nos

    indican si un "cluster" está libre o ocupado. Vamos a llamarle FAT (File

    Allocation Table, o "tabla de asignación 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 creación", "la fecha de

    modificación", en que "cluster" comienza, su tamaño en "bytes", y de paso, vamos

    a ponerle también "atributos". Del tipo "archivo", "Oculto", "Sistema", "Solo

    lectura".... Bueno, pues todas estas características 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 propio 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 además, 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

    posición que tenga "ceros". Esto nos indica que ese cluster del disco estará

    vacío o se puede utilizar. Pues nos guardamos dicho numero en el directorio, y

    asignamos todos a unos binarios en esa posición de la FAT. Igualmente guardamos

    en el cluster físico del disco el primer pedacito de nuestro archivo. Ahora

    miramos si el archivo ocupa mas tamaño de un cluster. Si es así, continuamos

    recorriéndonos la FAT para buscar el siguiente "hueco" a ceros. Cuando lo

    encontremos, en la posición ANTERIOR que habíamos grabado unos binarios, le

    ponemos la dirección 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?. Fácil: 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 máximo en

    binario que puede tener con 16 bites es 2 elevado a 16, es decir, desde cero a

    65535. Con la suposición anterior, vamos a ver como guardaríamos 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 posición 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 posición 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) es decir buscamos el siguiente hueco,

    Por ejemplo el 250 (esto indica el cluster 125). Guardamos el numero 125 en la

    p


    Votar

    Ingresar una calificación para del 1 al 10, siendo 10 el máximo puntaje.

    Para que la votación no tenga fraude, solo se podrá votar una vez este recurso.

    Comentarios de los usuarios


    Agregar un comentario:


    Nombre y apellido:

    E-Mail:

    Asunto:

    Opinión:



    Aún no hay comentarios para este recurso.
     
    Sobre ALIPSO.COM

    Monografias, Exámenes, Universidades, Terciarios, Carreras, Cursos, Donde Estudiar, Que Estudiar y más: Desde 1999 brindamos a los estudiantes y docentes un lugar para publicar contenido educativo y nutrirse del conocimiento.

    Contacto »
    Contacto

    Teléfono: +54 (011) 3535-7242
    Email:

    Formulario de Contacto Online »