Como bien dice el título, en esta
entrada del blog explicaré cómo funciona internamente un equipo informático y
así como su estructura. El contenido de aquí va orientado para los más novatos
en este mundillo y que quieran conocer con más detalle el funcionamiento de un
ordenador, ¡pero todo el mundo es bienvenido!
Muy bien, el primer paso es saber qué es
un equipo informático. En la jerga informática se denomina “Equipo” a un
ordenador cualquiera, ya sea un sobremesa, un portátil o un servidor de la
NASA. Todos son considerados equipos informáticos, o simplemente equipos.
Ahora bien, la estructura de un equipo
informático es realmente sencilla, al menos el concepto, el cual está formado
por tres componentes principales: Hardware, Software y Humano. Cada componente
por supuesto conlleva una serie de responsabilidades en lo que es el
funcionamiento del equipo, y también conlleva ciertos riesgos. Vamos uno por
uno:
Hardware; el término de Hardware hace
referencia siempre a las piezas del ordenador, a lo que podemos tocar, como el
monitor, el teclado, el ratón, el disco duro, la memoria RAM, el
microprocesador, los altavoces… El Hardware en sí está compuesto por numerosos
dispositivos físicos, sería el equivalente a las piezas de una maquinaria o el
motor de un coche, y puede dividirse en:
-Dispositivos de almacenamiento; son
dispositivos relacionados con la memoria y destinados a guardar y tratar
información, como un Pendrive/Memoria flash, un Disco Duro o una memoria RAM. Y
con tratar información me refiero a leer y escribir datos en dicho dispositivo,
independientemente de si la información sea volátil (memoria RAM) o no
(Pendrive o Disco Duro).
-Periféricos; los periféricos son
dispositivos que permiten añadir funciones al equipo y que éste, en principio,
no debería traer consigo, como sería un teclado, un ratón, un altavoz, una
webcam… Sé que esto puede sonar raro, porque ahora todos los ordenadores suelen
traer muchas de estas cosas integradas de fábrica, pero en un sobremesa por
ejemplo no es el caso. Se dice que un Disco Duro puede ser también un
periférico cuando es externo (que se conecta mediante un puerto USB)
-Piezas de base; así las he denominado
yo a las piezas más elementales que componen el ordenador, como es la propia
placa base y todos los componentes que trae integrados (resistencias, conectores,
puertos para tarjetas adicionales, zócalo del microprocesador…), el monitor, la
torre que contiene la placa base…
Software; imagino que éste es el término
más conocido por la gente en general. El software es la parte no física, sino
lógica, es la opuesta al hardware. Es, básicamente, los programas (Google
Chrome, Skype, un videojuego…). Y sobre el software, bueno, no voy a extenderme
mucho con esto, solamente quiero dejar el concepto de lo que es y ya en otra
ocasión me centraré más en todas sus características (licencias, tipos de
programas…).
Humano; eso es, el último componente
somos nosotros, porque sin personas, los ordenadores no serían más que máquinas
que no sabrían, sencillamente, qué hacer. A pesar de que en Internet haya
cientos de teorías sobre que en el futuro los ordenadores gobernarán el mundo
con mano de hierro como en Matrix, que el código fuente sea capaz de sentir
emociones, que un ordenador emule el razonamiento humano o por mucho que
empresas importantes de turno digan que los ordenadores no necesitarán de los
humanos para escribir código… ¡esto no es cierto! Porque a fin de cuentas, un
ordenador no es más que un conjunto de piezas que funcionan gracias a una
corriente eléctrica para esperar nuestras órdenes, son iguales que un coche o
una tostadora, ya que sin nosotros, un ordenador no tendría ninguna finalidad.
Somos los principales responsables de los fallos de un equipo informático (que
también pueden provocar fallos tanto el Hardware como el Software), y de su
buen uso, así que confío en que los lectores podáis ser lo suficientemente
responsables como para mantener vuestros equipos en buen estado.
A continuación voy a mostrar con una
imagen la estructura básica que hoy en día sigue un equipo, una vez tenemos
estos últimos conceptos claros, ¡qué tampoco son tan difíciles!
Podemos observar que el componente
externo somos nosotros, los humanos, seguido de los programas comunes y
corrientes, controlados luego por el Sistema Operativo y su software
particular, para finalmente tener al fondo el Hardware, es decir, las piezas.
De esta forma se mantiene todo conectado y bien atado. Claro que, cualquier
capa de este esquema puede provocar fallos, y hay que saber distinguir cuando
es un fallo nuestro a cuando es un fallo ajeno a los humanos.
Muy bien, ahora vamos a adentrarnos
todavía más en la estructura lógica de un ordenador, y para esto, agradecería
que os leyeseis mi otra entrada denominada “La historia de la informática” en
el siguiente enlace: http://alexsoftware93.blogspot.com.es/2014/05/historia-de-la-informatica_30.html
Pues es aquí donde se plasman las
principales bases sobre la estructura de un ordenador, especialmente la teoría
de Von Neumann, ideada a partir de la Segunda Guerra Mundial.
El esquema propuesto por este hombre era
sencillo: mantener un cerebro que realizase todas las operaciones que le fuesen
llegando y fuese controlando todos los componentes de la máquina, mientras que
en otra zona alejada pudiésemos tener los datos y las instrucciones para
manejar dichos datos, esta última zona denominada “memoria”. Así pues, la
memoria envía datos e instrucciones al cerebro, que vendría a ser el
microprocesador (¡chip más importante de un ordenador!) para que éste trabajara
en consecuencia y volviese a enviar datos a la memoria, algún periférico, o a
dónde fuese. En una imagen, vendría a ser algo como esto:
Tendríamos tres componentes principales:
la Memoria, que almacena datos e instrucciones para manejar dichos datos en
celdas de memoria; el Microprocesador, que contiene la Unidad de Control
(encargada de enviar señales al resto de componentes para que funcionen en base
a las instrucciones que le llegan desde la Memoria, vendría a trabajar en
Hercios, por eso al comprar un ordenador o microprocesador nos indica su
capacidad en MHz, o la unidad que sea), la ALU/UAL, o Unidad Aritmético Lógica
(encargada de realizar operaciones en base a los datos que le llegan desde la
Memoria y dependiendo de la instrucción a realizar por la Unidad de Control), y
finalmente los Registros, que son memoria muy pequeñitas, carísimas y de pocos
bits que trabajan a velocidades bastante altas; y por último los periféricos
que podamos tener conectados al equipo. Y todo conectado mediante buses, que
vendrían a ser o bien cables o bien circuitos de la placa base diseñados para
transmitir información (energía eléctrica, vamos) de un componente a otro.
En base a esto, podemos deducir que un
programa, o software concreto, viene a ser un conjunto de datos e instrucciones
almacenadas en memoria. Y se ejecutan de forma simple siguiendo estos pasos:
1º Leer (o recoger) de la memoria la
instrucción a ejecutar.
2º Decodificar la instrucción en la
Unidad de Control.
3º En base a la operación a realizar,
enviar señales de control desde la Unidad de Control a los correspondientes
componentes para actuar en consecuencia de la instrucción decodificada, como
por ejemplo enviar datos a la UAL.
4º Almacenar los resultados de nuevo en
memoria.
5º Calcular la siguiente dirección de la
próxima instrucción.
Claro que, para comprender mejor esto es
necesario tener el concepto de lo que es una celda de memoria. Como ya he
comentado, la memoria está compuesta de pequeñas celdas representadas mediante
ceros y unos (de hecho, todo esto trabaja a bajo nivel, es decir, a base de
ceros y unos. Lo que se envía de memoria a la UAL, las señales de control o las
propias instrucciones o celdas de memoria, son todos ceros y unos que solo
comprende el ordenador), y cada celda contiene un dato, una instrucción a
ejecutar, o bien la dirección de otra celda de memoria. Cuando sucede esto
último, lo que hace el procesador es ir a esa otra celda de memoria y recoger
lo que allí se encuentre. Para que se comprenda mejor, vamos a poner un caso
práctico:
Imaginad que en el Escritorio de vuestro
ordenador hay un icono de un videojuego, llamémoslo League of Legends. Todos
sabemos que al pinchar dos veces en él se ejecutará y el juego empezará, sin
embargo, ¿qué ha sucedido realmente? Toda la información del juego no puede
estar almacenada en ese iconito, sino que se encuentra en una carpeta dentro
del disco duro acompañada de un fichero o archivo especial denominado “ejecutable”
(tiene extensión “.exe” en Windows). Muy bien, lo que hemos hecho al pinchar
dos veces sobre el icono para que arranque el juego es decirle al
microprocesador: “No, mira, lo que realmente quiero utilizar no es el iconito
del Escritorio, sino el fichero ejecutable que está en el disco”. Y así, como
el icono del escritorio tiene su propia celda pero contiene la dirección de la
celda del ejecutable, el procesador irá a la celda del ejecutable y arrancará
el juego.
Un fichero ejecutable es el que permite
iniciar los programas para verlos en pantalla.
Ahora bien, como he comentado antes en
segundo plano, el ordenador solo trabaja a bajo nivel (ceros y unos), ¿pero qué
significa esto realmente? En informática, a la hora de realizar un programa se
hace uso de lenguajes de programación, que nos permiten escribir de forma más o
menos clara para nosotros las instrucciones que queremos que realice el
ordenador, así como definir los datos que estas instrucciones realizarán. Un
ejemplo de programa en C muy visual y sencillito:
Int a=2
Int b=2
Int c=a+b
Printf(“El resultado de %d + %d es igual
a: %d”, &a, &b, &c);
Definimos los datos que queremos usar,
una letrita llamada “a” que contendrá un “2”, una letrita llamada “b” que
contendrá otro “2”, y finalmente otra letrita llamada “c” que será la suma de “a”
y “b”, es decir, será “4”. Finalmente, la instrucción “printf” imprimirá en
pantalla el texto de: “El resultado de 2 + 2 es igual a: 4”.
Con este ejemplo, ignorando lo que pueda
significar el “%d” o “&a/&b/&c” (pues esto es más propio del
lenguaje de programación que de lo que quiero explicar), hemos definido datos
(a, b y c), cada uno con un contenido dentro que será un número (2, 2 y 4),
cada uno de estos datos estará en una celda cuyo contenido serán los
respectivos numeritos.
Por otro lado tenemos la instrucción para imprimir por
pantalla, que también tendrá su propia celda, y la instrucción dirá que recoja
de memoria el contenido de las celdas “a, b y c”, que contendrán sus
respectivos valores. De esta forma las celdas en memoria pueden encadenarse
sucesivamente y recoger así los datos que verdaderamente importan.
En definitiva, ha quedado demostrado que
un programa está compuesto de datos, instrucciones y es escrito en un lenguaje
de programación concreto. Por lo general, todos los lenguajes de programación
son denominados de “alto nivel”, ya que están destinados al uso de nosotros,
las personas. Los programadores comprenden por ejemplo los lenguajes de alto
nivel practicando mucho, pero luego está el denominado lenguaje de “bajo nivel”
o lenguaje máquina, que no es sino una retahíla de ceros y unos interminable, y
esto es lo que utiliza el ordenador para funcionar internamente, a nivel de
procesador y memoria. ¿Y por qué ceros y unos? Os preguntaréis. Pues detrás de
esto hay teorías, e incluso en la entrada de la Historia de la informática que
tengo más atrás, que explican claramente que el sistema de numeración binario
es el ideal para llevar la información más rápido. No es lo mismo tener un cero
y un uno (ausencia o no de información) que un total de diez dígitos donde
elegir (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), siendo este último caso el sistema de
numeración decimal que todos conocemos.
Ahora bien, como lenguaje de
programación que es, el lenguaje máquina puede variar de un microprocesador a
otro. Siguen siendo ceros y uno, sí, ¿pero cómo es esto posible? Dependiendo de
la compañía que desarrolle el microprocesador, nos podemos encontrar los
llamados “juegos de instrucciones”, que serán distintos en una versión u otra.
En resumen, los lenguajes de
programación de alto nivel son independientes del equipo (o procesador, más
concretamente), y pueden ser: C, Java, C++, SQL, Ruby, Visual Basic…
Mientras que luego tenemos, dependiendo
del juego de instrucciones y el modelo del procesador, un lenguaje máquina
distinto que permite transformar las instrucciones de alto nivel en bajo nivel,
como pueden ser: 8086, Motorola 68K, Zilog Z80…
Y bueno, en resumen, esto es todo hasta
ahora. Espero que os haya gustado y hayáis aprendido algo =)
No hay comentarios:
Publicar un comentario