2. INICIO
Acabamos de pulsar el botón de encendido. ¿y qué
pasa?..
Se empieza a ejecutar un programa que está grabado
internamente en nuestro PC.
La máquina lo que hace es ir a una determinada
posición de la memoria, y lo que está allí se lo pasa
directamente al procesador para que empiece a
ejecutarlo.
3. INICIO
Por tanto, nuestra "memoria" del PC, no está tan vacía
como parece.... algo debe contener.
Este algo es un programa que reside en un chip de
memoria llamado BIOS ROM y que al encender el PC,
ocupa un posición FIJA de memoria en cualquier PC.
Siempre la misma.
4. 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.
5. BIOS
Los fabricantes de BIOS (Award, AMI, Phoenix, etc) lo
que tienen son unos 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"
Standard de bios, a "esa" placa madre.
La versión 4.51 PG de Award, se ejecuta en muchas
máquinas totalmente diferentes, y resulta que la BIOS es
totalmente diferente. Es específica para "esa" placa
madre.
6. 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 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.
7. 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.
8. CPU
¿Cómo 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 máximo, 2
bytes) en un "puerto".
Un "puerto" no es nada más 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.
9. CPU
¿Cómo podemos direccionar un dispositivo, del que
sabemos que por "hardware" tiene un determinado (o
determinados) puertos?
Mediante la instrucción IN se puede 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 órdenes, etc....
10. CPU
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
OUT, podemos "leer" un dato que un dispositivo nos
haya dejado en un puerto.
11. PIO (Program Input Output)
¿como nos enteramos que el dispositivo ya tiene un dato
preparado para que lo leamos?
Hay tres posibilidades:
12. PIO (Program Input Output)
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...
13. PIO (Program Input Output)
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.
14. PIO (Program Input Output)
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.
15. 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 "interrupción"
(IRQ).
16. IRQ
Se llama así porque una interrupción, 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.
17. 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.
18. DMA
Esta técnica aparentemente genial tiene dos
inconvenientes. 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.
19. DMA
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 más 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).
20. DMA
Y además, por desgracia, mientras está haciendo la
transferencia "interrumpe" a nuestro procesador, que
durante ese tiempo habría podido hacer cientos de miles
de operaciones en multitarea.
21. PREPARANDO LA CARGA DE UN SO
Llegados a este punto, suponemos que la bios ya ha
inicializado todos los dispositivos de la máquina.
Asignado las correspondientes IRQs y recursos a los
dispositivos y ahora va a proceder a cargar el sistema
operativo.
22. PREPARANDO LA CARGA DE UN SO
Lo más 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 máquina.
23. PREPARANDO LA CARGA DE UN SO
Los párrafos anteriores comentan cómo era la opción
por defecto de casi todas las BIOS.
Si tenemos una máquina vieja es aconsejable
desactivar el intento de carga desde disquete en la
BIOS.
En las máquinas más nuevas ya viene desactivado
24. PREPARANDO LA CARGA DE UN SO
Casi todas las BIOS, permiten cambiar la secuencia de
arranque de A, C (defecto) a C,A o bien C only,
Ahora también se puede indicar si queremos arrancar
desde:
• un CD/DVD booteable
• un Pendrive booteable
• desde una máquina conectada a la red
26. PREPARANDO LA CARGA DE UN SO
Las ventajas de configurar que cargue desde el HD son:
1) Se iniciará la carga más rápidamente ya que no irá a
buscar a disquete.
2) No tenemos el riesgo de habernos dejado un
disquete en la máquina 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 cómo está lógicamente particionado el disco.
27. PARTICIONES EN UN DISCO DURO
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.
28. PARTICIONES EN UN DISCO DURO
Este sector de boot, se le llama también MBR (Master
Boot Record). Dicho sector ocupa siempre la misma
posición física en todos los discos duros (cabeza cero,
cilindro cero, sector 1) y 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 nuevo
Todos los sistemas operativos, lo crean exactamente
igual.
29. PARTICIONES EN UN DISCO DURO
El tamaño de un sector es únicamente 512 bytes.
Dentro de dicho sector de arranque tenemos 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 cuál es la partición "arrancable".
30. PARTICIONES EN UN DISCO DURO
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.
31. PARTICIONES EN UN DISCO DURO
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 último
"boot", el responsable de crearlo es el "format". Y el
responsable de la creación de las particiones es el
FDISK (en sistemas Microsoft)
32. PARTICIONES EN UN DISCO DURO
Entonces, retomando un poco el título de estos artículos,
la bios lo que hace es cargar en memoria el MBR del
disco duro (en la dirección 7C00) 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.
33. Una mirada más cercana
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.
34. Una mirada más cercana
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).
35. Una mirada más cercana
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).
36. Una mirada más cercana al proceso
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.
37. Una mirada más cercana al proceso
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.
38. Firmware
Firmware o Programación en Firme, es un programa
para propósitos específicos, grabado en una memoria
tipo ROM, que establece la lógica de más bajo nivel y
que controla los circuitos electrónicos de un dispositivo
de cualquier tipo.
39. Firmware
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(...)
40. Firmware
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.
41. Firmware
El 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.
42. Firmware
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.
43. 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:
44. POST (Power-On Self Test)
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.
45. POST (Power-On Self Test)
La CMOS es una memoria complementaria no volátil
(Complementary Metal Oxide Semiconductor). Su
contenido permanece aún después 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.
46. POST (Power-On Self 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.