Un paseo por el interior de un ordenador

El ordenador, al fin y al cabo, y aunque parezca poco creíble, no es más que una gigantesca calculadora. Todo lo que maneja son números. Pero supongo que será de sobra conocido el poder de las matemáticas. Los números pueden representar cualquier cosa y ése es su gran atractivo. Con un número suficientemente grande se podría representar todo el universo y sus leyes. Cualquier programa no es más que un gigantesco número. Puede resultar increíble que la música, las películas, fotos, juegos, libros, etc... no sean más que números que viajan de un lado a otro en una pequeña caja de tamaños tan reducidos. Ahora incluso los teléfonos móviles son mini-ordenadores. Es el inmenso poder de las matemáticas, un sistema abstracto inventado por el ser humano para describir la realidad. Aplicado al mundo real mediante ingeniería puede resultar en verdadera magia. Y además una magia de la que cualquiera puede ser aprendiz.

Un ordenador o computador es una máquina que obedece a una serie de órdenes que llamamos "programa" y que son escritas por un ser humano. Cada marca de ordenador sólo conoce un lenguaje, el que se le implantó cuando fue construído. A ese lenguaje se le denomina "lenguaje máquina". El lenguaje máquina es un lenguaje matemático muy limitado y que sólo acepta órdenes muy concretas, como por ejemplo "sumar A y B". Los llamados "programadores" son personas capaces de escribir programas en ese lenguaje máquina. La importancia principal de los programadores es que los ordenadores (aún) no son capaces de crear un programa por sí mismos. De hecho, no son capaces de crear nada, tan sólo obedecen. Ni siquiera critican las órdenes que les son dadas, simplemente las realizan, aunque las órdenes sean absurdas o les lleven a su propia destrucción. Y además llevan a cabo dichas órdenes a una velocidad que supera con creces el entendimiento humano. La mayoría de los ordenadores que tenemos en casa son capaces de realizar millones de operaciones cada segundo y sin equivocarse prácticamente nunca. Son el soldado, el obrero, el ciudadano "perfecto" para los gobernantes.

Un ordenador está compuesto de 3 partes fundamentales: el procesador central, la memoria principal y los dispositivos de entrada y salida. El procesador central tiene la función de entender y ejecutar las órdenes, el programa. Es el que tiene implantado el lenguaje máquina. La memoria principal es dónde se encuentra almacenado el programa y los datos necesarios para su ejecución por parte del procesador. Los dispositivos de entrada y salida son extremadamente variados (pantalla, teclado, ratón, discos, impresoras, altavoces, etc...) y le sirven al ordenador para comunicarse con el exterior: básicamente recibir programas que ejecutar con ciertos datos y mostrarnos los resultados de su ejecución. Este esquema corresponde a la inmensa mayoría de los ordenadores del mundo y se denomina "arquitectura Von Neumann".

El procesador central, o como le llaman los anglosajones, Central Processing Unit (CPU) (1), Unidad Central de Proceso, es el encargado de "entender" las órdenes escritas en los programas. También suele recibir el nombre de "microprocesador". Cada tipo de procesador tiene su propio lenguaje máquina y sólo entiende éste. Cuando ejecuta un programa, va leyendo cada orden, que llamamos "instrucción", y las ejecuta, una a una. Conviene recalcar que la mayoría de los procesadores actuales sólo son capaces de ejecutar una sola instrucción a la vez, esto es, sólo son capaces de hacer una cosa a la vez. La ejecución de una instrucción puede conllevar la comunicación del procesador con otros componentes del ordenador, como la memoria o algún/os dispositivo/s de entrada y salida. Esta comunicación interna se realiza por una serie de impulsos eléctricos que van por unos caminos que llamamos "buses". Seguramente has oído hablar de acrónimos raros como IDE, PCI, USB o AGP. Pues son simplemente tipos de buses. De hecho, uno de los más famosos en la actualidad, el USB, significa precisamente Universal Serial Bus (Bus Serie Universal). Esta comunicación por medio de buses le sirve al procesador central para ejercer de árbitro entre todos los componentes y asegurar un funcionamiento correcto y ordenado de todos ellos. Debido a ello tiene que ser bastante más rápido que cualquier otro componente. Es a la vez la ventaja y la maldición del procesador central.

La memoria principal no es más que un gigantesco almacén que guarda los miles de millones de instrucciones y datos usados por el procesador. No debe confundirse con la memoria secundaria, que son generalemente discos duros y discos extraíbles como CDs o DVDs, más grandes en capacidad de almacenamiento pero muchísimo más lentos (2). Con memoria principal nos referimos a lo que generalmente se llama RAM (Random Access Memory, Memoria de Acceso Aleatorio). La memoria principal está dividida en millones de celdas, cada una con un número que la identifica, que llamamos "dirección". De esta manera el procesador, al acceder a la memoria para recibir o guardar una instrucción o un dato, sabe perfectamente a qué celda accede por su dirección. Sin la dirección adecuada el procesador estaría irremisiblemente perdido. Por lo tanto, el procesador tiene dos buses para acceder a la memoria principal: uno para comunicar la dirección (la celda) a la que quiere acceder y otro para el contenido de la celda propiamente dicho. El procesador, además, tiene que especificarle a la memoria principal con un terecer bus si desea leer o escribir, es decir, si va a guardar algo en una celda, o al contrario, requiere la información que haya en una. Debido a esta comunicación directa e intensiva con el procesador central, la memoria principal debe tener un tiempo de acceso muy bajo, es decir, tardar lo menos posible en realizar la operación de lectura o escritura. Otra característica fundamental de la memoria principal es su volatilidad, esto es, que si pierde la alimentación eléctrica, pierde el contenido de las celdas. Todo el almacén se borra. De ahí el uso de otra memoria llamada "memoria secundaria" de carácter permanente (generalmente usando tecnología magnética en discos duros y disquetes, óptica en CDs y DVDs) que entraría a formar parte de los dispositivos de entrada y salida.

Así pues, el programador debe escribir una serie de instrucciones (un programa, vamos) que ejecutadas una a una resuelvan un determinado problema coherentemente, utilizando de manera ordenada las celdas de la memoria (usando sus direcciones, claro). Del programador depende que las instrucciones y datos residan en determinadas celdas de memoria y es el responsable de asignar dichas celdas (¡y acordarse de qué celda contiene qué datos!). Es lo que llamamos el "arte de la programación".

Bueno, vale ya de tanto jaleo de celdas y procesadores, direcciones y buses. ¿Qué sucede cuando, en nuestra casa, tranquilamente, pulsamos el boton de "Power" del ordenador? El ordenador entra en la llamada "fase de arranque" o "boot" para los anglófilos. El procesador ejecuta el llamado "programa de arranque", más conocido como BIOS. El BIOS (y digo bien "el" y no "la") es el Basic Input/Output System, o en cristiano, Sistema Básico de Entrada/Salida. Este sistema contiene, entre otras cosas, el programa de arranque, que sirve para detectar los dispositivos conectados, inicializar algunos dispositivos como la tarjeta de vídeo y el teclado, comprobar la memoria disponible y su correcto funcionamiento, etc... A este programa corresponden todos los mensajes que aparecen en la pantalla desde el encendido hasta la carga del sistema operativo que tengamos instalado (ya sea Windows, Linux, SunOS, etc...).

Antiguamente, la BIOS se almacenaba en una memoria especial llamada ROM (Read Only Memory, Memoria de Sólo Lectura). Como su nombre bien indica es una memoria de la que sólo se puede leer. Su característica fundamental es que, aún habiendo perdido la alimentación, no pierde el contenido de las celdas, contrariamente a la RAM, pero no se puede cambiar la información que hay en ella. En la actualidad se utiliza EEPROM (Electrically Erasable and Programmable Read Only Memory, Memoria de Sólo Lectura Borrable y Programable Eléctricamente). Esta memoria es una ROM con capacidad para ser modificada a condición de suministrarle un impulso eléctrico, que deja las celdas en disposición de registrar nuevos datos. Estas memorias suelen tener un uso limitado, pues el material se deteriora con cada impulso eléctrico, con cada escritura. Si el programa de arranque detecta algún fallo en alguna de sus comprobaciones, mostrará un mensaje en pantalla. Si el fallo tiene que ver con la pantalla o la tarjeta de vídeo (la encargada de todo lo relacionado con la pantalla), o se ha detectado antes de la inicialización de éstos, lo indicará mediante una serie de combinaciones de pitidos sonoros, que indican a los iniciados en qué componente ha ocurrido el problema. Generalmente, un solo pitido corto significa que no ha habido ningún error.

Después de realizar las comprobaciones necesarias, el programa de arranque intenta cargar el "sistema operativo" (Windows por ejemplo) del dispositivo de entrada y salida seleccionado en el BIOS. Es decir, el programa de arranque le pasa el control del ordenador a otro programa que se encargará de ofrecerle una serie de servicios al usuario y que por ello se denomina "sistema operativo". La función principal del sistema operativo es quitarle la necesidad al usuario de tener que realizar tediosas y complicadas tareas de programación como la gestión de memoria, de los dispositivos, etc... El sistema operativo crea una especie de interfaz común independientemente de los dispositivos, procesador y memoria de que disponga el ordenador. ¿Qué quiero decir con esto? Pues que simplemente aunque nuestro ordenador tenga diferentes componentes que otro, si ambos tienen el mismo sistema operativo, su manejo será idéntico. Abstraer al usuario del hardware (hablando en términos técnicos) no es una tarea fácil. El sistema operativo, sea cual sea su marca (Windows, Linux, BeOS, etc...), se encarga de proporcionar una interfaz simplificada al usuario para que obtenga del ordenador todo el rendimiento posible con el mínimo conocimiento de su funcionamiento interno. Hoy en día cualquier persona puede utilizar un ordenador, incluso personas con discapacidad. Esto no siempre ha sido así, y uno de los principales responsables de que hasta nuestra abuela sea capaz de chatear es sin duda la evolución de los sistemas operativos. ¿Pero qué pasa si no hay sistema operativo en ningún disco? Pues que el programa de arranque mostrará un mensaje de "Non system disk. Replace and hit key", "Operating system not found" o algo parecido y se detendrá. En resumen, que no hay sistema operativo y que se necesita uno.

Nuestro sistema operativo (a menos que sea muy viejo, como por ejemplo MS-DOS) retiene en todo momento el control del ordenador. Los programas que ejecutamos (un procesador de texto como Word, o un reproductor multimedia como WinAmp) simplemente le piden al sistema operativo una serie de servicios que éste proporciona: posibilidad de hacer oír sonido, escribir en el disco duro, mostrar algo por pantalla, etc... aunque todo bajo estricta supervisión del sistema operativo. Éste es el encargado de que el sistema sea estable, es decir, que no "se cuelgue". Es el máximo responsable de que los programas que utilicemos no hagan cosas que puedan desestabilizar todo el ordenador. Si alguno de ellos intenta algo prohibido, como acceder sin permiso a datos o instrucciones que nos son los suyos, entonces es obligación del sistema operativo interrumpir el programa y avisar al usuario de ello. Todo ello para evitar los consabidos "cuelgues". Otra gran ventaja de los sistemas operativos actuales es la capacidad de "multiproceso". Con multiproceso queremos significar que podemos tener varios programas abiertos a la vez, por ejemplo navegando por Internet y escuchando música. Sin embargo, como ya dijimos anteriormente, el procesador central sólo puede ejecutar una sola instrucción a la vez.

¿Cómo puede haber varios programas funcionando a la vez?

Supongamos que tenemos un programa A y otro B que tienen que ser ejecutados por el sistema operativo, que como hemos dicho tiene el control absoluto del ordenador. Lo que va a hacer es ejecutar un trocito de A, luego un trocito de B, luego otro trocito de A, otro trozo de B y así hasta que alguno de ellos (o los dos) finalice y ya no se ejecute más. Evidentemente, esto se hace a una velocidad tan rápida que para unos lentos como nosotros, los seres humanos, nos parece que A y B están funcionando a la vez, pero no es así. Simplemente se van turnando a una gran velocidad. Y así con el número de programas que sean. Cuantos más programas haya, más tiempo van a tener que esperar a que les toque el turno, y más lento nos parecerá que va el sistema en general. Aunque en un ordenador normal podemos tener decenas de programas ejecutándose a la vez, entre los propios del sistema operativo (inicio de sesión, servicios de red, etc...) y los que utiliza el usuario (navegador de Internet, juegos, etc...). Podéis ver qué programas están activos pulsando en Microsoft Windows las teclas Ctrl-Alt-Supr (las tres a la vez) y luego en la pestaña Procesos o en Linux tecleando en una consola ps -A. Evidentemente, cuanto más rápido sea el procesador central y más memoria principal (RAM) tengamos, más programas podremos ejecutar a la vez sin notar la ralentización. Estos son los factores principales, pero casi todos los componentes de un ordenador influyen en mayor o menor medida en su rendimiento total (velocidad de los discos duros, de la tarjeta de vídeo, la temperatura de los componentes, etc...).


(1) A veces se denomina erróneamente CPU a la caja completa que contiene varias partes del ordenador, incluyendo el procesador, memoria, discos y lectores.

(2) La memoria principal puede llegar a ser 100.000 o un millón de veces más rápida que el disco duro más rápido.

Comments

  1. Dios profe que tocho es esto xD ... pero si kes interesante y no me canso al leerlo xD

    ReplyDelete
  2. Y eso que sólo es un paseo xDDD Gracias por el apoyo darky ;)

    ReplyDelete

Post a Comment

Comment, motherf*cker

Popular Posts