miércoles, 1 de mayo de 2013

Tu computadora y tú: funcionamiento básico

En las dos entregas anteriores he tratado de describir algunos conceptos básicos para entender cómo funciona un computador. Hasta ahora ha sido una descripción vuela pluma de tales conceptos, para familiarizar a los no entendidos con ellos.

Hoy toca profundizar un poco en algunas de tales ideas. Comenzaremos con una mejor descripción de la arquitectura del sistema, hablaremos de los discos duros y su uso, y finalizaremos la entrega con una descripción básica del arranque del sistema.

Arquitectura

En el primer capítulo describí la arquitectura básica de forma muy somera. Ahora toca mejorar eso. En la imagen de la derecha hay una de las representaciones gráficas habituales (cortesía de wikipedia, donde puedes leer un buen artículo sobre el tema). El cuadrado grande es la Unidad Central de Proceso,  (UCP) que se compone de la Unidad Aritmético-Lógica (UAL) -que realiza operaciones aritméticas o lógicas, como cabría esperar- y la Unidad de Control (UC). También incluye una serie de registros donde guarda información necesaria para el funcionmiento del sistema.

A la derecha está la Memoria Principal, mientras que abajo está el Sistema de Entrada-Salida.

Cuando estás en una escuela informática, suelen contarte la historia completa en la misma asignatura además de en otras; sin embargo, lo cierto es que estas representaciones despistan: cualquier información -datos, programas- a usar debe de estar cargada en memoria principal. Por supuesto, es la UCP la que se encarga de acceder a un disco duro y de transferirlo a la Memoria Principal, y por ello se representa la doble flecha entre la UAL (ALU, en inglés) y los sistemas de Entrada/Salida.

Por cierto, algo "entra" cuando se recibe en la UCP, mientras que algo "sale" cuando desde la UCP es enviado a algún lado (impresión, para ser guardado en disco, etc.).

Una consecuencia es que un informático (y ahora cualquier lector) que lea un anuncio de una compañía telefónica de comienzos de 2013 y lea algo como "(tal móvil)... con 32 GB de memoria..." debería de sufrir dentera ante tamaña estupidez. En ocasiones, los discos duros y otros discos son denominados "memoria secundaria", pero eso no justifica que se sumen las capacidades de una (la principal) y otra (los discos). Para extender el uso de las memorias en los sistemas informáticos, puedes echar un vistazo a la wikipedia, comenzando por el interesante problema de la jerarquía de memoria (o como resolver el problema del coste de las memorias).

Discos Duros

Los discos duros son el componente de almacenamiento secundario más utilizado de los últimos 50 años, y aunque las tabletas y smartphones suelen equipar tarjetas flash por su menor consumo, lo cierto es que los discos duros serán aun los reyes de los computadores durante unos cuantos años. El artículo de la wikipedia sobre discos duros es mucho más ambicioso de la breve explicación que aquí se va a dar.

La clásica explicación comienza con el disco de vinilo (esto es, se asume que el aprendiz ha visto uno, cosa que para las nuevas generaciones no habría por qué esperar). Uno pone un disco en el tocadiscos, coloca la aguja al principio y el dico comienza a girar. El tocadiscos va reproduciendo lo que lee la aguja a medida que va pasando por el disco. Eventualmente, podemos saltar una pista o una parte (de forma muy aproximada, a ojo) levantando la aguja y acercándola o alejándola del centro. Podemos reproducir una cara y darle la vuelta y reproducir la otra cara.

Un disco duro es un dispositivo rígido (hard) que va dentro del computador. Por supuesto, no se le da la vuelta ni nada similar. En realidad es mucho más eficiente que cualquier fonógrafo de tres al cuarto.

En primer lugar, gira muchísimo más rápido. Un tocadiscos normal puede girar a 33 o 55 revoluciones por minuto (rpm); un disco duro barato de un portátil girará 5400 rpm, y los hay de 7200 ¡y hasta de 11000!!

En segundo lugar, tiene dos caras (esto sí como el tocadiscos) y suelen ser varios platos (cada disco de dos caras es un plato, también es común llamar así al disco de vinilo), entre 2 y 4, pero con modelos que tienen 6 o 7. El brazo del lector se compone en realidad de un brazo doble por cada plato (uno por cada disco, y doble para leer tanto la parte superior como inferior a la vez), con sus respectivos lectores.

Representación de los cilindros de un disco
Pero para que esto sea útil se necesita que la información se guarde de la forma adecuada. Lo que se hace es agrupar la información para que pueda ser leída por cada lector de cada brazo a la vez: es lo que se llama cilindro: la representación de lo que un lector puede leer en cada parte de cada disco en un giro.

En la imagen de la izquieda puede verse la representación de esto. La pista, por su parte, es la circunferencia en cada cara de cada disco. Los sectores son las partes en las que se divide cada pista.


Los Sistemas Operativos se encargan de proporcionar un acceso uniforme a los discos, y es habitual representarlos con un rectángulo desde el principio hasta el final, ya sea indicando los sectores o la capacidad.

Los discos duros se utilizan divididos en Particiones (modernamente llamadas también volúmenes, aunque en la práctica son cosas distintas, de las añadiré un artículo otro día). Particionar no existe según la RAE, y en el mundo informático se usa para denominar al proceso de crear particiones en un disco. Lo más probable es que se comenzara a particonar los discos porque las BIOS de entonces no podían acceder al contenido de todo el disco: imagina que tienes 100.000 sectores y que la BIOS sólo sabe contar desde 0 hasta 65535, es decir, que en este caso ¡sólo tiene 16 bits para guardar una dirección de disco!!

Sin embargo, particionar un disco resultó ser útil, ya que los cambios en una partición no afectan a las demás particiones del sistema. Ojo: siempre tiene que haber al menos una partición.

El sistema "tradicional" es la "tabla de partición MS-DOS" por ser la que se utilizaba en tal Sistema Operativo. Es una pequeña tabla que admite cuatro entradas, una para cada partición, en las que se indican sus respectivos principios y finales. Posteriormente se añadión una "extensión" para solventar este límite numérico. En lugar de cuatro particiones (llamadas ahora "primarias") se pueden crear tres particiones normales (primarias) y una "especial" llamada a la sazón "extendida". En estas particiones, lo que se hace es que se pueden crear particiones (llamadas ,para distinguirlas de las normales, lógicas) a condición de que cada una incluya donde comienza la siguiente.

Este mecanismo un poco chapuza es el más habitual aun hoy, aunque ya se utiliza cada vez más otro mecanismo: la GPT, que permite crear un montón de particiones normales en cada disco. Así desaparece la tradicional distinción entre partición primaria y partición lógica (no necesita particiones extendidas).

Otro concepto asociado al uso de discos duros es el de Formateo, aunque este nombre es más utilizado por la herramienta tradicional de MS-DOS para esta operación que por ser un nombre adecuado. En el mundo Unix se habla más bien de "crear sistemas de ficheros", lo que es más descriptivo y coherente.

Eso quiere decir que una partición de disco no es más que un trozo de superficie magnética donde puedes eventualmente guardar cosas. Si guardas varios ficheros, el Sistema Operativo necesitará alguna forma de saber dónde se guarda cada uno de ellos -además de algunas características como la fecha de modificación, permisos, etc.-; también es un servicio que se proporciona a los usuarios del SO, tanto humanos como a las aplicaciones del sistema. Tú guardas un documento en Documentos/trabajos/aprender_informática.txt, no entre los sectores 47567 y 47579. Es lo que se denomina Sistema de archivos. Uno de los más simples es FAT, que consiste simplemente en una lista de nombres de ficheros y su localización en el disco. Además de haberlo tratado en el artículo anterior, el artículo de la wikipedia es bastante razonable y no lo voy a replicar aquí.

Arrancando la máquina

Los computadores proporcionan una aplicación grabada en una memoria ROM que permite ejecutar algún Sistema Operativo. Básicamente se encarga de comprobar que las principales cosas funcionan -p.ej, memoria, discos...- y de ejecutar la aplicación que cargue el sistema de arranque del SO en memoria. Hecho esto, comienza la ejecución del Sistema Operativo en sí misma.

Las Computadoras Personales (PC) solían traer una aplicación denominada BIOS (Basic In/out System, Sistema Básico de Entrada/Salida, otro nombre descriptivo), que hacía justamente eso: comprobaba que había un procesador, una memoria y algún dispositivo de entrada/salida: al menos un teclado, al menos un disco duro...

Hay un sector del disco duro denominado (de forma, también, apropiada) MBR (Master Boot Record, Registro Principal de Arranque) que es el primer sector del disco duro y que queda fuera de las particiones. En dicho registro se guarda la Tabla de particiones antes comentada y el programa que se encargará del arranque. En muchos computadores, esto consiste en una serie de instrucciones básicas para que el computador cargue el primer sector (también llamado, sector de arranque) de alguna partición, que eventualmente será, vaya, el sistema de arranque del Sistema Operativo.

Así que el último paso ejecutado por la BIOS es cargar en memoria el contenido del MBR.

Hoy las BIOS van siendo sustituidas por un nuevo sistema: EFI. Tal sistema pretende solventar algunas de las limitaciones de las BIOS, pero en realidad su tarea es la misma: comprobar los componentes principales, y cargar en memoria el arranque del Sistema Operativo o el Cargador de Arranque de turno.

En los sistemas EFI se puede indicar directamente qué se desea arrancar, sin necesidad de MBR; de todas formas, y por las dudas, EFI también permite usar MBR en lo que ellos llaman "modo híbrido".

También volveré sobre el arranque del sistema, que como he dicho merece su propia entrada.

No hay comentarios:

Publicar un comentario en la entrada