14/3/2012

Para programar, primero entiende a tu ordenador


¿De verdad crees que conoces con exactitud la arquitectura de tu ordenador? Si quieres programar, lo mejor que puedes hacer, es conocer con precisión, como está formado tu ordenador y que función exacta cumple cada componente.

En este artículo, intentaremos “destripar” virtualmente nuestro ordenador, para poder entenderlo, ayudándonos del comando lshw, al cual podremos acceder como super-usuario.

Arquitectura de computadoras: conociendo el hardware
El hardware es todo elemento físico involucrado en una computadora o cualquier tipo de dispositivo electrónico inteligente.
Un ordenador, con respecto al hardware, se encuentra compuesto por una serie de dispositivos, clasificados según la función que éstos desempeñen. Dicha clasificación, se compone de:
Dispositivos de entrada Dispositivos de salida Dispositivos de comunicación Dispositivos de almacenamiento Dispositivos de cómputo


/home/manu/ # lshw -short
H/W path               Device     Class       Description
=========================================================
                                  system      1001HA (1001HA)
/0                                bus         1005HA
/0/0                              memory      64KiB BIOS
/0/4                              processor   Intel(R) Atom(TM) CPU N270   @ 1.6
/0/4/5                            memory      24KiB L1 cache
/0/4/6                            memory      512KiB L2 cache
/0/4/0.1                          processor   Logical CPU
/0/4/0.2                          processor   Logical CPU
/0/18                             memory      2GiB System Memory
/0/18/0                           memory      2GiB DIMM SDRAM Synchronous
/0/100                            bridge      Mobile 945GME Express Memory Contr
/0/100/2                          display     Mobile 945GME Express Integrated G
/0/100/2.1                        display     Mobile 945GM/GMS/GME, 943/940GML E
/0/100/1b                         multimedia  N10/ICH 7 Family High Definition A
/0/100/1c                         bridge      N10/ICH 7 Family PCI Express Port 
/0/100/1c.1                       bridge      N10/ICH 7 Family PCI Express Port 
/0/100/1c.1/0          wlan0      network     RT3090 Wireless 802.11n 1T/1R PCIe
/0/100/1c.3                       bridge      N10/ICH 7 Family PCI Express Port 
/0/100/1c.3/0          eth0       network     AR8132 Fast Ethernet
/0/100/1d                         bus         N10/ICH 7 Family USB UHCI Controll
/0/100/1d.1                       bus         N10/ICH 7 Family USB UHCI Controll
/0/100/1d.2                       bus         N10/ICH 7 Family USB UHCI Controll
/0/100/1d.3                       bus         N10/ICH 7 Family USB UHCI Controll
/0/100/1d.7                       bus         N10/ICH 7 Family USB2 EHCI Control
/0/100/1e                         bridge      82801 Mobile PCI Bridge
/0/100/1f                         bridge      82801GBM (ICH7-M) LPC Interface Br
/0/100/1f.2            scsi0      storage     82801GBM/GHM (ICH7-M Family) SATA 
/0/100/1f.2/0.0.0      /dev/sda   disk        160GB ST9160314AS
/0/100/1f.2/0.0.0/1    /dev/sda1  volume      12GiB EXT4 volume
/0/100/1f.2/0.0.0/2    /dev/sda2  volume      12GiB EXT4 volume
/0/100/1f.2/0.0.0/3    /dev/sda3  volume      125GiB Extended partition
/0/100/1f.2/0.0.0/3/5  /dev/sda5  volume      2GiB Linux swap / Solaris partitio
/0/100/1f.2/0.0.0/3/6  /dev/sda6  volume      61GiB Linux filesystem partition
/0/100/1f.2/0.0.0/3/7  /dev/sda7  volume      62GiB Linux filesystem partition
Los dispositivos de entrada son todos aquellos que permiten la entrada de datos a un ordenador. Estos dispositivos, son los que permiten al usuario interactuar con el ordenador. Ejemplos: teclado, mouse (ratón), micrófono, webcam, scanner, etc.

Los dispositivos de salida, son todos aquellos que permiten mostrar la información procesada por el ordenador. Ejemplos: monitor, impresora, auriculares, altavoces, etc.

Los dispositivos de comunicación son aquellos que permiten la comunicación entre dos o más ordenadores. Ejemplos: modem, router, placa de red, bluetooth, etc.

Los dispositivos de almacenamiento, son todos aquellos que permiten almacenar datos en el ordenador. Ejemplos: disco duro, pendrive, disket, CD, DVD, etc.

Los dispositivos de cómputo, son aquellos encargados de realizar las operaciones de control necesarias, sobre el resto de los dispositivos del ordenador. Estos dispositivos, se encuentran disponibles, en todos los ordenadores, y los mismos se describen a continuación.

CPU

La CPU (Central Processing Unit – Unidad Central de Procesamiento), también llamada procesador o microprocesador, es un circuito microscópico que interpreta y ejecuta instrucciones. La CPU se ocupa del control y del proceso de datos en las computadoras. Generalmente, la CPU es un microprocesador fabricado en un chip, un único trozo de silicio que contiene millones de componentes electrónicos. El microprocesador de la CPU está formado por una unidad aritmético-lógica que realiza cálculos y comparaciones y toma decisiones lógicas (determinando si una afirmación es cierta o falsa mediante las reglas del álgebra de Boole. Para aceptar órdenes del usuario, acceder a los datos y presentar los resultados, la CPU se comunica a través de un conjunto de circuitos o conexiones llamado bus. El bus conecta la CPU a los dispositivos de almacenamiento (por ejemplo un disco duro), los dispositivos de entrada (por ejemplo un teclado o un mouse) y los dispositivos de salida (por ejemplo un monitor o una impresora).
/home/manu/ # lshw -C bus -short
H/W path               Device     Class       Description
=========================================================
/0                                bus         1005HA
/0/100/1d                         bus         N10/ICH 7 Family USB UHCI Controll
/0/100/1d.1                       bus         N10/ICH 7 Family USB UHCI Controll
/0/100/1d.2                       bus         N10/ICH 7 Family USB UHCI Controll
/0/100/1d.3                       bus         N10/ICH 7 Family USB UHCI Controll
/0/100/1d.7                       bus         N10/ICH 7 Family USB2 EHCI Control
Cuando se ejecuta un programa, el registro de la CPU, llamado contador de programa, lleva la cuenta de la siguiente instrucción del programa, para garantizar que las instrucciones se ejecuten en la secuencia adecuada. La unidad de control de la CPU coordina y temporiza las funciones de la CPU, tras lo cual recupera la siguiente instrucción desde la memoria. En una secuencia típica, la CPU localiza la instrucción en el dispositivo de almacenamiento correspondiente. La instrucción viaja por el bus desde la memoria hasta la CPU, donde se almacena en el registro de instrucción. Entretanto, el contador de programa se incrementa en uno para prepararse para la siguiente instrucción. A continuación, la instrucción actual es analizada por un decodificador, que determina lo que hará la instrucción. Cualquier dato requerido por la instrucción es recuperado desde el dispositivo de almacenamiento correspondiente y se almacena en el registro de datos de la CPU. A continuación, la CPU ejecuta la instrucción y, los resultados se almacenan en otro registro o se copian en una dirección de memoria determinada[0].

Memoria
La memoria es la encargada de almacenar toda la información que el ordenador se encuentra utilizando. Existen tres tipos de memoria: memoria RAM, memoria ROM y memoria caché.
/home/manu/ # lshw -C memory -short
H/W path               Device     Class       Description
=========================================================
/0/0                              memory      64KiB BIOS
/0/4/5                            memory      24KiB L1 cache
/0/4/6                            memory      512KiB L2 cache
/0/18                             memory      2GiB System Memory
/0/18/0                           memory      2GiB DIMM SDRAM Synchronous
Listando componentes de memoria

Memoria RAM

La memoria RAM (Random Access Memory), es la memoria desde la cual, el procesador recibe las instrucciones y guarda los resultados. Se utiliza como memoria de trabajo para el sistema operativo, los programas y la mayoría del software. Es allí donde se cargan todas las instrucciones que ejecutan el procesador y otras unidades de cómputo. Se denominan “de acceso aleatorio” (random access) porque se puede leer o escribir en una posición de memoria con un tiempo de espera igual para cualquier posición, no siendo necesario seguir un orden para acceder a la información de la manera más rápida posible. Durante el encendido del ordenador, la rutina POST verifica que los módulos de memoria RAM estén conectados de manera correcta. En el caso que no existan o no se detecten los módulos, la mayoría de tarjetas madres (motherboard) emiten una serie de pitidos que indican la ausencia de memoria principal. Terminado ese proceso, la memoria BIOS[1] (memoria ROM) puede realizar un test básico sobre la memoria RAM indicando fallos mayores en la misma[2].
/home/manu/ # lshw -C memory -short | grep -i ram
/0/18/0                           memory      2GiB DIMM SDRAM Synchronous
Filtrando la memoria RAM

Memoria ROM

La memoria ROM (Read Only Memory), es permanente, ya que lo que permanece en la ROM no se pierde aunque el ordenador se apague. Su función principal es guardar información inicial que el ordenador necesita para colocarse en marcha una vez que se enciende. Permite solo la lectura de la información y no su escritura, independientemente de la presencia o no de una fuente de energía. Los datos almacenados en la ROM no se pueden modificar, o al menos no de manera rápida o fácil. Se utiliza principalmente para contener el firmware (programa que está estrechamente ligado a hardware específico, y es poco probable que requiera actualizaciones frecuentes) u otro contenido vital para el funcionamiento del dispositivo, como los programas que ponen en marcha el ordenador y realizan los diagnósticos[3].
/home/manu/ # lshw -C memory -short | grep -i bios
/0/0                              memory      64KiB BIOS
Filtrando la memoria ROM (también llamada BIOS)

Memoria caché

La memoria caché es aquella que se usa como puente entre el CPU y la memoria RAM para evitar demoras en el procesamiento de los datos. Existen varios núcleos de esta memoria (denominados con la letra L y un número, por ejemplo L1). Cuanto menor el número más rápida es la memoria. Por proximidad a la CPU, es mucho más rápida que la memoria RAM y también, mucho mas pequeña.
/home/manu/ # lshw -C memory -short | grep cache
/0/4/5                            memory      24KiB L1 cache
/0/4/6                            memory      512KiB L2 cache
Filtrando la memoria caché

Bus de datos

El bus de datos (o canal de datos) es un sistema digital que transfiere datos entre los componentes de una computadora o entre computadoras. Está formado por cables o pistas en un circuito impreso, dispositivos como resistores y condensadores además de circuitos integrados.

Notas adicionales sobre el comando lshw
Como hemos podido notar, el comando lshw nos permite listar el hardware de nuestro equipo. En este artículo, hemos utilizado el comando lshw con las siguientes opciones:
-short
    Utilizada para listar el hardware en formato compacto.
    -C tipo_de_componente
    Utilizada para filtrar la salida, por el tipo de componente indicado.

Otras opciones pueden conocerse mediante man lshw.

También hemos concatenado (con |) el comando lshw con el comando grep patrón a fin de que la salida de lshw sea a la vez, filtrada por el patrón indicado. Cuando utilizamos la opción -i del comando grep, lo hicimos para que la búsqueda no distinga entre mayúsculas y minúsculas.

Fuente: debianhackers.net
Gracias a: eugeniabahit

Saludos...

No hay comentarios:

Publicar un comentario en la entrada

Puedes comentar sin registrarte, si pones tu nick o nombre mejor..