Voy a responder a la pregunta que realmente has hecho y luego a la que creo que pretendías hacer. El punto clave es que todos los ordenadores están formados por una CPU, una memoria principal y un sistema de E/S. Los diferentes ordenadores varían en la forma en que estos componentes se unen, pero todos los tienen. Sin software, el ordenador es inútil en sí mismo. Además, por lo general, sin un sistema operativo o SO, y otros programas que se ejecutan en la parte superior de ese SO, además de la formación para utilizarlos, el ordenador sigue siendo poco útil y no va a hacer mucho por ti cuando lo enciendas.
La realidad es que cuando enciendes un ordenador, es un montón de piedras calientes muy caras y no hace nada. Nada, nada… inanimado, inútil, muerto, casi tan divertido como un «ladrillo» (más en un minuto). Así que, … para que un ordenador sea útil necesitas unas cuantas cosas más además del hardware (las piezas):
- un programa escrito en el «conjunto de instrucciones» de esa CPU en concreto;
- una forma de meter ese programa en la memoria del ordenador que tienes;
- una forma de decirle al ese ordenador que «empiece» la ejecución de ese programa; y
- saber qué hacer con él cuando lo tengas.
Así que retrocedamos unos pasos y tratemos de asignar esto al procesador Geniune Intel*64 de hoy en día o compatible, que es lo más probable que acabes de comprar. Resulta que alguien (muy probablemente una empresa originaria de Massachusetts llamada Phoenix’s Technologies, u otra de California llamada American Megatrends, Inc), escribió algunos programas para estos chips y los licenció. El fabricante de su placa base compró copias con licencia y el derecho a duplicar estos programas y los puso en un dispositivo llamado memoria de sólo lectura o ROM. Las ROM’s tienen la interesante propiedad de poder ser escritas en la fábrica una vez y luego «recordar» los bits que han sido programados dentro incluso cuando se les quita la energía.
Así que, la placa base que usted compró contiene una ROM que ha sido programada en la fábrica con esos programas con licencia y, por lo tanto ha sido insertada en la memoria del ordenador, por lo que resolvió las 2 primeras piezas que faltaban. Y resulta que, cuando se diseñó la placa base, se añadieron circuitos especiales que se utilizan en el ‘encendido/reinicio’ para decirle al procesador que, de hecho, busque un programa en el lugar en el que se colocó esa ROM y configure el ‘contador de programas’ de la CPU de forma que comience la ejecución de un programa utilizando el contenido de esa ROM (es decir, el binario del programa almacenado en la memoria).e el binario del programa almacenado en ella.
Para completar mi respuesta, no se necesita una ROM, y francamente, para los que tenemos cierta edad, no solíamos utilizar ordenadores con ROMs en ellos (las ROMs no se habían inventado o eran muy caras en aquellos tiempos). Entonces, ¿cómo aparecía el «programa inicial» en la memoria del ordenador? En los viejos tiempos, teníamos interruptores de palanca en la parte frontal del ordenador y cargábamos el «programa inicial de arranque» en la memoria, que normalmente era un programa simple que sabía leer un bloque o dos de memoria desde un dispositivo de E/S, que tenía en él otro programa, que podía hacer más, etc. A esto se le llamaba «arrancar» el ordenador porque era similar a un escalador que sube por una cuerda usando sus correas de arranque. Era muy lento y un poco tedioso.
La verdad es que hoy en día se podría hacer lo mismo si se sustituyera la ROM por alguna forma de insertar un programa en la memoria principal, tal y como hacíamos en los años 60 y 70. Dado que los ordenadores modernos carecen de interruptores de palanca y de una «consola» como los sistemas antiguos, hay que idear alguna forma de cargar el primer programa en la memoria principal (es decir, resolver el paso 2).
A partir de los ordenadores que se construyeron a finales de los 70, las ROM de arranque se convirtieron en un estándar como el que tienes hoy. El contenido de esa ROM en un ordenador moderno tiene un nombre (es decir, los programas de software que hay dentro). Se llama BIOS o Sistema Básico de E/S del ordenador. Aunque, si estás usando un Intel*64 o compatible, es más parecido en clave de UEFI o Unified Extensible Firmware Interface [las diferencias están fuera del alcance de esta respuesta]. Pero la cuestión es que los contenidos de la ROM son programas que se escriben, se licencian y se suministran con la placa base, y se ejecutan al encender la CPU.
Ahora viene la pregunta que pretendías hacer. El problema es que probablemente el ordenador tal y como está configurado no te va a servir. Podrías sustituir el contenido de la ROM tú mismo y programar el HW en bruto y utilizar el hardware del ordenador directamente. Lo más probable es que si intentas eso, tendrás otro «ladrillo» cuando termines. De hecho, en el proceso de intentar desarrollar y cargar un nuevo firmware en los dispositivos oirás o verás el término ‘brickear’ el ordenador – que se refiere a ese proceso.
Dicho esto, programadores muy experimentados, a menudo con otras herramientas, como los programadores de Phoenix o los propios de Intel, esto es exactamente lo que están haciendo. Pero probablemente no es eso lo que quieres hacer… es más probable que quieras usar las ROM’s que tienes para cargar un sistema operativo (OS) y luego ejecutar programas que se ejecuten sobre él. Así que …
- Tienes que suministrar un sistema operativo;
- tienes que almacenarlo en algún lugar; y
- tienes que cargarlo en la memoria desde algún lugar.
Mucha gente utiliza un sistema operativo del tipo de Microsoft y para ello tendrás que ir a los lugares habituales. Antes era que un usuario se lo compraba a ellos, aunque francamente, no estoy seguro de que eso siga siendo posible. Consulta con Amazon, NewEgg o similares. Francamente, soy uno de los autores originales de UNIX, así que ni siquiera estoy seguro de cómo se hace eso, ya que no corro lo que mis compañeros suelen llamar «Winders». Del mismo modo, Mac OS también se puede obtener de Apple si tienes las licencias y cuentas adecuadas, aunque creo que necesitarás un sistema de Apple para descargarlo para empezar – así que tienes que buscar (google es tu amigo) si quieres construir un llamado «Hackintosh» asumiendo que tienes el HW adecuado. Y advierto que la legalidad de ejecutar el sistema operativo de Apple en cualquier cosa que no sea Apple HW es cuestionable, así que no te estoy diciendo que lo hagas, sólo que es posible. Personalmente recomendaría una implementación moderna de UNIX como FreeBSD o Linux – de nuevo, Google es tu amigo si quieres los detalles de cómo, pero de nuevo el alcance está más allá de esta respuesta – estoy tratando de explicar lo que podría pasar.
Así que voy a suponer que tienes un sistema operativo para ejecutar como FreeBSD, Linux, Mac OSX, Winders, o similares para responder al resto de la pregunta. La pregunta ahora es ¿dónde se almacena el sistema operativo y cómo se carga en el ordenador?
El sistema operativo debe ser almacenado en un dispositivo de E/S, tradicionalmente esto ha sido un disco local o una cinta o unidad de disquete. No tiene por qué ser así. Las ROMs actuales pueden arrancar desde la red utilizando un protocolo llamado ‘PXE’ o Pre-Boot Execution Environment, que Intel definió hace unos años como una forma de estandarizar el arranque en red de los sistemas basados en Intel (FWIW Apple utiliza su propio esquema que es similar llamado NetBoot).
En todos los casos, arranque local o remoto, el SO (que es un programa) se almacena en algún dispositivo de E/S. La ROM de la placa base inicia la ejecución de la CPU al reiniciar el equipo. Esto configura el procesador, trae el cargador de arranque, después de algunos pasos que voy a omitir (porque cada SO tiende a hacerlo un poco diferente), finalmente el SO en sí se coloca en la memoria y el PC de la CPU se configura para comenzar a ejecutarlo.
Dependiendo del SO específico que esté utilizando, en algún momento ese SO ejecutará un programa que realiza E/S a los dispositivos que interactúan de alguna manera con el usuario humano, probablemente a través de la pantalla y el teclado o a través de la red. Eventualmente, el SO será instruido para ejecutar un programa a petición del usuario humano, normalmente nos referimos a esto como la ejecución de un comando. Ahora el ordenador está haciendo algo «útil» – es decir, la ejecución de programas directamente para usted.
Así que ….
- el punto es que alguien escribió programas para el ordenador.
- De alguna manera se almacenaron en algún lugar para usted.
- Usted (como el usuario humano) de alguna manera pidió que se ejecuten para usted y,
- de alguna manera se cargaron en la memoria para usted.
- El ordenador en sí era sólo una roca muy cara, pero caliente. Sólo un ladrillo.
- Sin software, no era posible que fuera útil.
- Y finalmente, se necesitaba algo de formación y conocimiento para aprender a interactuar con él, conseguir que realmente hiciera algo por ti que fuera útil. Ya sea jugar a un juego, editar una hoja de cálculo, o desarrollar otro programa.
Editado el 29/06/19 para corregir algunas erratas y aclarar algunas frases, actualizado un año después para reparar algunas más.