Volver a la portada de Duiops
Volver al Web de Duiops
 
   
Menú
Secciones destacadas
Artículos y FAQs
Trucos de Windows
Versiones de Windows
y suites de software
Windows Vista
Windows Media Center
Windows XP
Windows 2000
Windows Millenium
Windows 98/98 SE
Windows 95 OSR-2
Internet Explorer
Office
Otros
Tutorial muy básico
   
Portada
Portada - Artículos y FAQs - Desde que pulsamos el boton de encendido de nuestro PC hasta... (parte 12)
 
Desde que pulsamos el boton de encendido de nuestro PC hasta... (parte 12)

 

Por Jose Manuel Tella Llop, extraído de microsoft.public.es.windows98

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA..... (Parte 12)
----------------------------------------------------

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

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

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

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

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

Esta tontería que ahora no nos llama en absoluto la atención, causó furor en el mundo de la programacion. Inmediatamente a "destripar" el programa para ver dos cosas:

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

2) Como hacer o "simular" una multitarea.

Ahora cualquier programador, sus primeros "pinitos" es construir residentes. No tiene ningun merito. Está ya perfectamente documentado.

* Pero la pregunta es ¿como podemos hacerlo?.

Relativamente facil. A base de manejar interrupciones (interrupciones de "software", no de hardware como las que vimos al principio de estos capitulos. Más adelante veremos estas interrupciones). Me explico: por definicion, una interrupcion, "interrumpe" el programa que se esté ejecutando y cede control a una rutina. En principio la que queramos. Entonces, sabemos que hay interrupciones cada cierto tiempo. Por ejemplo existe una interrupcion que se activa 11 veces por segundo y que se encarga de mantener el reloj de nuestro PC.

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

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

Pasemos ahora a ver las interrupciones "software".

INTERRUPCIONES SOFTWARE
-----------------------

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

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

Para el mundo "real" del procesador, una dirección de memoria es un "segmento" y un "desplazamiento". Es decir 4 bytes. Por tanto 256 * 4 = 1024. Es decir de la dirección 0 a la 1024 "fisica" de la memoria de nuestro PC, se reserva para tener 256 posibles direcciones de las rutinas de dichas interrupciones.

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

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

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

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

Por tanto esas interrupciones software, deberán contener la "dirección " del programa o driver que va a manejar dicha IRQ.

* Veamoslo con un ejemplo real. Recordad que habios dicho al ver las IRQs que la IRQ 1 era la de teclado. Entonces ¿que sucede al pulsar una tecla?. Bien lo primero que sucede es una IRQ 1. Esto interrumpe lo que esté haciendo el procesador y tal y como acabamos de comentar, esto disparará la interrupcion software 51h. Esta interrupcion software, entonces lo que provoca es que el procesador, busque en la dirección de memoria 51h * 4, y pega un salto a la zona de memoria que esté apuntada por el contenido de esa dirección . Se supone que en esa zona de memoria "debe" haber un programa, o
una rutina que se encarga de analizar la tecla pulsada y además de "sacarla en pantalla". Efectivamente, esa rutina existe, y es la propia bios quien la ha puesto allí.

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

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

Y todavia es mas complicado. Si pulsamos un CTRl-G dá un "pitido" el altavoz. Por lo tanto ademas, debe analizar dicha rutina, si es algun caracter especial como el anterior. Si lo fuese, ahora se deben emitir las correspondiente interrupciones tambien software para "activar" el altavoz. Esta activacion, será tambien mediante comandos IN y OUT a unos puertos que son los correspondientes al "timer" para generar una onda de sonido hacia el altavoz del PC.

*** Todos un verdadero lio ¿no?.

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

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

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

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

RESTO DE RUTINAS EN MEMORIA REAL
--------------------------------

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

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

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

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

CARGA DEL SISTEMA OPERATIVO
---------------------------

**** Bueno, y este será el siguiente capitulo......


Volver a Artículos y FAQs

 

     
 

Volver arriba Volver arriba

© 1997-2009 Duiops (http://www.duiops.net)
Prohibida la reproducción parcial o total de los textos o las imágenes

Para comentarios, usa las direcciones e-mail de contacto.