Está en la página 1de 17

Encendido

del PC

Lic. Gonzalo Pastor


Inicio
Acabamos de pulsar el botón de encendido. ¿y que
pasa?..
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
vacia como parece.... algo debe contener.
Este algo es un programa que reside en un chip de
memoria llamado BIOS ROM y que al encender el PC,
ocupa un posición FIJA de memoria en cualquier PC.
Siempre la misma.
BIOS
Es un programa y además es
el único programa que conoce
exactamente (o debe conocer)
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 bios semi-estandard (por ejemplo
la versión 4.51 PG de Award) y lo que hacen, bajo
pedido del fabricante de la placa madre, es adaptar
"su" Standard de bios, a "esa" placa madre.
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.
DISPOSITIVOS
Vamos a definir los "dispositivos" como el resto del
hardware independiente de la CPU y memoria con los
que la CPU interactúa.
El PC actual que conocemos, aunque parezca
mentira, es basicamente 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.
CPU
¿Como puede comunicarse la CPU con el resto de
¿Como puede comunicarse la CPU con el resto de
dispositivos?.
Realmente la CPU, solo tiene dos instrucciones llamadas IN y
OUT para poner un byte (o maximo, 2 bytes) en un "puerto".
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 ????
puertos en un PC.
¿como podemos direccionar un dispositivo, al cual sabemos
que por "hardware" tiene un determinado (o determinados)
puertos.
mediante la instruccion IN se puede poner datos en un puerto.
La secuencia de datos que estamos poniendo para un
determinado hardware, puede ser por ejemplo, una "peticion" de
que ese hardware haga algo, o bien le estamos "escribiendo"
datos, en vez de ordenes, etc.... Esto depende del dispositivo.
Del hardware, en sí,... es decir del "manual" del fabricante de
hardware (del manual "técnico"). Igualmente, mediante la
instruccion OUT, podemos "leer" un dato que un dispositivo nos
haya dejado en un puerto.
¿como nos enteramos que el dispositivo ya tiene un PIO
dato preparado para que lo leamos? Hay tres posibilidades:
1) A lo "bruto". Empezamos enviamos una petición a un
dispositivo (mediante la instrucción IN), y según el manual del
fabricante, ahora ese dispositivo, nos va a responder en un
puerto. Pues bien, empezamos a leer (mediante OUT), de ese
puerto hasta que exista un dato. 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....... Horrible.
Una mejora de esta solución, sería mirar únicamente cada cierto
tiempo. Se puede hacer que se mire cada "tic" de reloj. Y ese
"tic" de reloj interno lo podemos programar (existe también un
circuito de "timer" para estas cosas).
Hemos mejorado, pero reconozcamos que estamos perdiendo
mucho tiempo en "ver" si el hardware nos responde.
* Este es el modo PIO (Program Input Output)
IRQ
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 "interrupcion" (IRQ).
Se llama así porque una interrupcion, interrumpe
obligatoriamente lo que esté haciendo la CPU y la
obliga a tomar alguna acción (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.
* Este es el método IRQ.
DMA
3) Imaginemos que tenemos un "chip" inteligente, y que somos capaces de
decirle que una vez que tenga LOS datos (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 bloqueo.
Bueno,... esto no era tan importante en la primera arquitectura del PC, con
CPUs a 4,77 MHz, y una DMA rapida (4 MHZ), este tipo de acceso
simplificaba la 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 dirección a en un
bus de 32).
Y ademas, por desgracia, mientras está haciendo la transferencia
"interrumpe" a nuestro flamante PIV, que durante ese tiempo habría podido
hacer cientos de miles de operaciones en multitarea.
* Esta es la transferencia DMA.
PREPARANDO LA CARGA DE UN SO
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 ya que esto es configurable en la bios de la maquina.
El parrafo anterior es la opcion por defecto de casi todas las bios. Es
aconsejable 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.
Para ver la carga desde disco duro, debemos conocer primero como
está lógicamente particionado el disco.
PARTICIONES EN UN DISCO DURO
Por definicion un disco duro permite hasta 4 particiones. No
puede tener más y la explicacion, proviene del diseño del
sector de boot del disco duro. Este sector de boot, se le llama
tambien MBR (Master Boot Record). Dicho sector que ocupa
siempre la misma posicion fisica en todos los discos duros
(cabeza cero, cilindro cero, sector 1), tiene un diseño fijo.
Todos los sistemas operativos tienen un FDISK o similar, que
"sabe" crear en vacio este sector y además lo hace
automaticamente si el disco nuevo Todos los sistemas
operativos, lo crean exactamente igual.
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 particion (hay unos
códigos para FAT 16, FAT 32, Linux, NTFS, primaria,
secundaria etc...), y una marca de cuál es la partición
"arrancable".
El mini-programa de este sector, lo unico que sabe hacer es
leer dicha tabla, buscar si existe una particion "arrancable" y si
existiese, va a la posicion del cilindro, cabeza, sector de
comienzo y allí carga en memoria el primer sector que
encuentra y lo ejecuta. Este nuevo sector es precisamente el
"boot" de la particion (no confundirlo con el MBR, o sector 2
"boot" del disco que hemos citado anteriormente). Este ultimo
"boot", el responsable de crearlo es el "format". Y el
responsable de la creacion de las particiones es el FDISK (en
sistemas Microsoft)
Entonces, retomando un poco el titulo de estos articulos, la
bios lo que hace es cargar en memoria el MBR del disco duro
(en la dirección 7C00 hexadecimal) y cede el control a dicho
programa. Este se realoja en otra posicion de memoria, busca
la particion "activa" o "rrancable" y carga en memoria su sector
de "boot", tambien en la dirección 7C00 y le cede control.
Una mirada más cercana
al proceso de inicio
Al encender una PC, el BIOS efectúa varias pruebas al
hardware para asegurarse de que no existan problemas, y
luego empieza realmente el proceso de inicio del sistema
operativo.
El BIOS selecciona una unidad de disco y lee su primer sector.
Típicamente, la unidad de disco seleccionada es la unidad de
disquetes (y funciona si existe un disquete insertado
booteable), de no ser así selecciona el primer disco duro, si
existe un disco en la computadora (de todas maneras el orden
de selección de unidad de discos es configurable en la mayoría
de las PC's).
Al primer sector de un disco se le llama sector de arranque, en
inglés boot sector o master boot sector (MBR o sector de
arranque maestro).
Si el disco contiene varias particiones, cada una de ellas tiene
su propio sector de arranque (primer sector de cada partición).
El sector de arranque (boot sector) contiene un
pequeño programa lo suficientemente pequeño para
que quepa en un único sector, cuya responsabilidad
es leer el sistema operativo desde el disco, cargarlo
en memoria y ponerlo en ejecución.
Al arrancar desde un disco duro, el código contenido
en el sector de arranque maestro (MBR o Master Boot
Record), examina la tabla de particiones del disco
duro (esta tabla también se almacena en el MBR),
identifica la partición activa (aquella partición que ha
sido designada como de inicio), lee el cargador
contenido en el sector de arranque (boot sector) a una
localización en memoria y lo ejecuta.
Firmware
Firmware o Programación en Firme, es un bloque de
instrucciones de programa para propósitos específicos,
grabado en una memoria tipo ROM, que establece la lógica de
más bajo nivel que controla los circuitos electrónicos de un
dispositivo de cualquier tipo. Al estar integrado en la electrónica
del dispositivo es en parte hardware, pero también es software,
ya que proporciona lógica y se dispone en algún tipo de
lenguaje de programación. Funcionalmente, el firmware es el
intermediario (interfaz) entre las órdenes externas que recibe el
dispositivo y su electrónica, ya que es el encargado de
controlar a ésta última para ejecutar correctamente dichas
órdenes externas(...)
Encontramos Firmware en memorias ROM de los sistemas de
diversos dispositivos periféricos, como en monitores de video,
unidades de disco, impresoras, etc., pero también en los
propios microprocesadores, chips de memoria principal y en
general en cualquier circuito integrado.
Muchos de los Firmwares almacenados en ROM
están protegidos por Derechos de Autor.
El programa BIOS de una computadora es un
firmware cuyo propósito es activar una máquina
desde su encendido y preparar el entorno para la
instalación de un Sistema Operativo complejo, así
como responder a otros eventos externos (botones de
pulsación humana) y al intercambio de órdenes entre
distintos componentes de la computadora.
En un microprocesador el firmware es el que recibe
las instrucciones de los programas y las ejecuta en la
compleja circuitería del mismo, emitiendo órdenes a
otros dispositivos del sistema.
POST (Power-On Self Test)
En el momento en que conectamos el equipo la CPU (Unidad
Central de Proceso) comienza la carga de aquéllas
instrucciones grabadas en la BIOS (Sistema Básico de
Entrada/Salida).
La BIOS, cierto tipo de firmware, contiene código dependiente
del procesador que inicia el equipo sin importar el sistema que
esté instalado. El primer juego de instrucciones de inicio es la
POST, responsable de las funciones:
1. Llevar a cabo la comprobación inicial de hard, como
determinar la cantidad de memoria presente.
2. Verificar que los dispositivos que son necesarios para iniciar el
sistema operativo, como el disco duro, están presentes.
3. Recuperar los ajustes de configuración del sistema desde la
CMOS, que se encuentra en la placa madre.
La CMOS es una memoria complementaria no volatil
(Complementary Metal Oxide Semiconductor). Su contenido
permanece aún despues del apagado del equipo. Una
configuración de hardware almacenada es por ejemplo el
orden de inicio de dispositivos.
Después de completar la POST, los adaptadores
agregados que tienen su propio firmware
(controladoras de disco o de vídeo) proceden a sus
propios test.
Si el inicio falla antes o durante la POST, el equipo
sufre un fallo de hard. Normalmente la BIOS muestra
en pantalla un mensaje de error que indica la
naturaleza del fallo. Suele además efectuar cierto
número de 'beep' dependiendo de que hard provoca
el error, una lectura del manual de la placa madre nos
dará dicha información. Y toda la que podremos
necesitar si hay que sustituir algún elemento, si es
posible.

También podría gustarte