Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Comprendiendo el hardware de la
computadora.
Introducción
Sin hardware, el software no es más que otra forma de literatura. El hardware
procesa los comandos descritos por el software y proporciona mecanismos de
almacenamiento, entrada y salida. Incluso la nube está respaldada por hardware.
Este tema analiza el hardware como elementos físicos que utilizan interfaces y
conectores estándar. Los estándares son relativamente estáticos, pero el factor de
forma, rendimiento y las características de capacidad del hardware están en
constante evolución. Independientemente de cómo esos cambios modifican la
apariencia y el rendimiento del hardware, los aspectos conceptuales del mismo
descritos en esta lección aún se aplican y seguro que se seguiran aplicando en el
futuro.
Fuentes de alimentación
1
El consumo de energía genera calor y el calor excesivo puede hacer que los
componentes del sistema funcionen lentamente o incluso fallen. La mayoría de los
sistemas tienen algún tipo de ventilador para mover el aire para una refrigeración
más eficiente. Componentes como los procesadores a menudo generan calor que el
flujo de aire por sí solo no puede disipar. Estos componentes que alcanzan altísimas
temperaturas se unen a unas piezas especiales llamadas disipadores, hechas de
aleaciones que ayudan a dispersar el calor que generan. Los disipadores de calor a
menudo tienen su propio ventilador local pequeño para garantizar un flujo de aire
adecuado.
Tarjeta madre
Todo el hardware de un sistema necesita interconectarse. La placa base (Tarjeta
madre) permite esa interconexión utilizando conectores estandarizados y factores
de forma. También proporciona soporte para la configuración de los componentes
que interconecta y las necesidades eléctricas de esos componentes.
Hay una gran cantidad de especificaciones en una placa base, estas admiten
diferentes procesadores y sistemas de memoria, también tienen diferentes
combinaciones de conectores estandarizados que se adaptan a los diferentes
dispositivos que admitirá.
2
Más allá de los ajustes de configuración básica, el BIOS era el principal responsable
de identificar, cargar y transferir la operación a un kernel como Linux. A medida que
el hardware evolucionó, el firmware se expandió para admitir discos más grandes,
diagnósticos, interfaces gráficas, redes y otras capacidades avanzadas. Intel definió
un estándar para firmware conocido como EFI (Extensible Firmware Interface).
Luego Intel contribuyó con una organización de estándares para crear UEFI (Unified
Extensible Firmware Interface). Hoy en día la mayoría de las placas base usan
UEFI, sin embargo la mayoría de las personas todavía se refieren al firmware de la
placa base como BIOS.
Hay muy pocas configuraciones de firmware que sea de interés para los usuarios en
general, por lo que solo las personas responsables de la configuración del hardware
de un sistema necesitarán lidiar con sus configuraciones. Una de las pocas
opciones que comúnmente se modifican es habilitar las extensiones de
virtualización de las CPU modernas.
Memoria
La memoria contiene los datos y código del programa de todas aquellas
aplicaciones que se ejecutan en ese momento. Un término común utilizado para la
memoria del sistema es el acrónimo RAM (Random Access Memory) o alguna
variación de ese acrónimo. En ocasiones, también se utilizan referencias al formato
físico de los módulos de memoria para nombrarla: DIMM, SIMM o DDR.
3
En su mayor parte, Linux permite a los usuarios tratar la memoria del sistema como
una caja negra. Se inicia una aplicación y Linux se encarga de asignar la memoria
requerida. Linux libera la memoria para que otras aplicaciones la utilicen cuando se
completa una aplicación, pero, ¿Qué sucede si una aplicación requiere más que la
memoria del sistema disponible? En este caso, Linux mueve las aplicaciones
inactivas de la memoria del sistema a un área de disco especial conocida como
espacio de intercambio, luego mueve nuevamente las aplicaciones inactivas desde
el espacio de intercambio a la memoria del sistema cuando necesiten ejecutarse.
A menudo los sistemas sin hardware de video dedicado usan una parte de la
memoria del sistema (comúnmente 1 GB) para actuar como almacenamiento de
video. Esto reduce la memoria efectiva del sistema. El hardware de video dedicado
generalmente tiene su propia memoria separada que no está disponible como
memoria del sistema.
Hay varias formas de obtener información sobre la memoria del sistema. Como
usuario, la cantidad total de memoria disponible y en uso son típicamente los
valores de interés. Una fuente de información sería ejecutar el comando free junto
con el parámetro -m para usar megabytes en la salida:
$ free -m
total used free shared
buff/cache available
Mem: 748 37 51 14
660 645
Swap: 99 0 99
4
Procesadores
La palabra "procesador" implica que algo está siendo procesado. En las
computadoras, la mayor parte de ese procesamiento se trata de señales eléctricas.
Típicamente, esas señales se tratan como si tuvieran uno de los valores binarios 1 o
0.
Cada computadora de uso general tiene una CPU (Central Processing Unit) que
procesa los comandos binarios especificados por el software. Además de una CPU,
las computadoras modernas a menudo incluyen otros procesadores específicos de
tareas. Quizás el procesador adicional más reconocible es una GPU (Graphical
Processing Unit). Por lo tanto, mientras que una CPU es un procesador, no todos los
procesadores son CPU.
i386
Hace referencia al conjunto de instrucciones de 32 bits asociado con el Intel 80386.
x86
Por lo general, hace referencia a los conjuntos de instrucciones de 32 bits asociados
con los sucesores al 80386, como 80486, 80586 y Pentium.
x64 / x86-64
Procesadores de referencias que admiten las instrucciones de 32 bits y de 64 bits
de la familia x86.
AMD
Una referencia al soporte x86 de los procesadores AMD.
AMD64
Una referencia al soporte x64 de los procesadores AMD.
ARM
Hace referencia a una CPU de Reduced Instruction Set Computer (RISC) que no se
basa en el conjunto de instrucciones x86. Comúnmente utilizado por dispositivos
embebidos, móviles, tabletas y dispositivos con batería. Raspberry Pi utiliza una
versión de Linux para ARM.
5
El archivo /proc/cpuinfo contiene información detallada sobre el procesador de
un sistema. Si volcamos su contenido en la salida estándar veríamos mucha
información difícil de entender. Se puede obtener un resultado más general con el
comando lscpu. Salida de una Raspberry Pi B+:
$ lscpu
Architecture: armv7l
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Model: 4
Model name: ARMv7 Processor rev 4 (v7l)
CPU max MHz: 1400.0000
CPU min MHz: 600.0000
BogoMIPS: 38.40
Flags: half thumb fastmult vfp edsp neon vfpv3
tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
Bit size
Para las CPU, este número se relaciona tanto con el tamaño nativo de datos que
manipula, así como la cantidad de memoria a la que puede acceder. La mayoría de
los sistemas modernos son de 32 bits o de 64 bits. Si una aplicación necesita
acceso a más de 4 gigabytes de memoria, debe ejecutarse en un sistema de 64 bits,
ya que 4 gigabytes es la dirección máxima que se puede representar con 32 bits. Y,
aunque las aplicaciones de 32 bits generalmente se pueden ejecutar en sistemas de
64 bits, las aplicaciones de 64 bits no se pueden ejecutar en sistemas de 32 bits.
6
Clock speed
Cache
Cores
Core o núcleo se refiere a una CPU individual, además el núcleo representa una
CPU física. Hyper-Threading Technology (HTT) permite que una sola CPU física
procese simultáneamente múltiples instrucciones actuando virtualmente como
múltiples CPU físicas. Por lo general, los núcleos físicos múltiples se empaquetan
como un solo chip de procesador físico. Sin embargo, hay placas base que admiten
múltiples chips de procesadores físicos. En teoría, tener más núcleos para procesar
tareas siempre parece producir un mejor rendimiento del sistema.
Desafortunadamente, las aplicaciones de escritorio a menudo solo mantienen
ocupadas las CPU 2 o 3 por ciento del tiempo, por lo que agregar más CPU
inactivas probablemente resulte en una mejora mínima del rendimiento. Más
núcleos son los más adecuados para ejecutar aplicaciones que están escritas para
tener múltiples subprocesos independientes de operación, como la representación
de cuadros de video, la representación de páginas web o entornos de máquinas
virtuales multiusuario.
7
Almacenamiento
Los dispositivos de almacenamiento proporcionan un método para retener
programas y datos. Las unidades de disco duro (HDD) y las unidades de estado
sólido (SSD) son la forma más común de dispositivos de almacenamiento para
servidores y equipos de escritorio. También se utilizan dispositivos de memoria USB
y dispositivos ópticos como DVD, pero rara vez como dispositivo principal.
Los discos físicos están cubiertos con medios magnéticos para hacer posible el
almacenamiento. Los discos están dentro de un paquete sellado ya que el polvo, las
partículas pequeñas e incluso las huellas digitales interferiría con la capacidad del
HDD para leer y escribir en los medios magnéticos.
Las SSD son versiones más sofisticadas de memorias USB con una capacidad
significativamente mayor. Los SSD almacenan información en microchips para que
no haya partes móviles.
Aunque las tecnologías subyacentes para HDD y SSD son diferentes, hay factores
importantes que se pueden comparar. La capacidad de la unidad de disco duro se
basa en el escalado de componentes físicos, mientras que la capacidad de la
unidad de estado sólido depende del número de microchips. Por gigabyte, los SSD
cuestan entre 3 y 10 veces más de lo que cuesta un HDD. Para leer o escribir, un
HDD debe esperar a que una ubicación en un disco gire a una ubicación conocida,
mientras que los SSD son de acceso aleatorio. Las velocidades de acceso SSD son
generalmente de 3 a 5 veces más rápidas que los dispositivos HDD. Como no
tienen partes móviles, los SSD consumen menos energía y son más confiables que
los HDD.
8
Los sistemas modernos utilizan SCSI (Small Computer System Interface) o SATA
(Serial AT Attachment) para conectarse con dispositivos de almacenamiento. Estas
interfaces generalmente son compatibles con el conector apropiado en la placa
base. La carga inicial proviene de un dispositivo de almacenamiento conectado a la
placa base. La configuración del firmware define el orden en el que se accede a los
dispositivos para esta carga inicial.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk0 179:0 0 29.7G 0 disk
+-mmcblk0p1 179:1 0 43.9M 0 part /boot
+-mmcblk0p2 179:2 0 29.7G 0 part /
Particiones
Un dispositivo de almacenamiento es efectivamente una larga secuencia de
ubicaciones de almacenamiento. La partición es el mecanismo que le dice a Linux si
debe ver estas ubicaciones de almacenamiento como una secuencia única o
múltiples secuencias independientes. Cada partición se trata como si fuera un
dispositivo individual. La mayoría de las veces las particiones se crean cuando un
sistema se configura por primera vez. Si se necesita un cambio, hay herramientas
administrativas disponibles para administrar la partición de dispositivos.
9
Entonces, ¿por qué serían deseables múltiples particiones? Algunos ejemplos para
usar particiones serían administrar el almacenamiento disponible, aislar la
sobrecarga de cifrado o admitir múltiples sistemas de archivos. Las particiones
permiten tener un único dispositivo de almacenamiento que puede iniciarse en
diferentes sistemas operativos.
Los usuarios ven las particiones como si fueran dispositivos individuales. Esto hace
que sea fácil pasar por alto el hecho de que todavía están tratando con un solo
dispositivo físico. Las operaciones de un dispositivo en realidad son operaciones
que se realizan es una partición. Un solo dispositivo es un mecanismo físico con un
conjunto de hardware de lectura/escritura, es por ello que, no puede usar particiones
de un solo dispositivo físico como un diseño tolerante a fallos. Si el dispositivo falla,
todas las particiones fallan, por lo que no habría tolerancia a fallos.
Periféricos
Servidores y estaciones de trabajo necesitan una combinación de CPU, la memoria
del sistema, y el almacenamiento para operar. Pero estos componentes
fundamentales no interactúan directamente con el mundo externo. Los periféricos
son los dispositivos que proporcionan a los sistemas entradas, salidas y acceso al
exterior.
10
Las placas base también pueden tener una o más ranuras de expansión. Las
ranuras de expansión permiten a los usuarios agregar placas de circuito especiales
conocidas como tarjetas de expansión. Los gráficos, el sonido y las interfaces de red
son tarjetas de expansión comunes. Las tarjetas de expansión también admiten
RAID e interfaces heredadas de formato especial que incluyen conexiones en serie
y paralelas.
11
Los archivos de dispositivo son las piezas lógicas del sistema Linux que apuntan a
los controladores de dispositivos. Se encuentran en el directorio /dev e identifican
dispositivos físicos, acceso a dispositivos y controladores compatibles. Por
convención, en los sistemas modernos y al respecto de los dispositivos de
almacenamiento basados en SCSI o SATA, el nombre del archivo comienza con el
prefijo sd. El prefijo va seguido de una letra como a o b que indica un dispositivo
físico. Después del prefijo y el identificador del dispositivo, aparece un número que
indica una partición dentro del dispositivo físico; por lo tanto /dev/sda haría
referencia a todo el primer dispositivo de almacenamiento, mientras que
/dev/sda3 hará referencia a la partición 3 en el primer dispositivo de
almacenamiento. El archivo de dispositivo para cada tipo de dispositivo tiene una
convención de nomenclatura apropiada para el dispositivo. Si bien cubrir todas las
convenciones de nomenclatura posibles sería muy largo debe quedar claro que
estas convenciones son críticas para hacer posible la administración del sistema.
Aquí abajo se puede observar el resultado de entrar en el directorio /dev y solicitar
un listado de todos los archivos que tengan el prefijo mmcblk, los cuales se
corresponden con los archivos de dispositivos asociados al dispositivo de SD-Card.
A la vista de la información obtenida sabemos que tenemos un dispositivo de
SD-Card (mmcblk0) dentro del cual hay una tarjeta SD con dos particiones
(mmcblk0p01 y mmcblk0p02)
$ ls -l mmcblk*
brw-rw---- 1 root disk 179, 0 Jun 30 01:17 mmcblk0
brw-rw---- 1 root disk 179, 1 Jun 30 01:17 mmcblk0p1
brw-rw---- 1 root disk 179, 2 Jun 30 01:17 mmcblk0p2
Los detalles de listado para un archivo de dispositivo son diferentes de los detalles
de un archivo regular (ficheros de texto, ficheros de programas ejecutables, ficheros
multimedia, ficheros de bases de datos, etc...).
12
● El campo de tamaño (5ª columna por la izquierda en la imagen de arriba)
aparecen dos valores separados por una coma en lugar de un solo valor
indicando el tamaño del archivo . El primer valor (conocido como número mayor)
indica un controlador particular dentro del núcleo y el segundo valor (conocido
como número menor) especifica un dispositivo específico manejado por el
controlador.
Note Cada dispositivo del sistema debe tener una entrada en /dev.
Dado que el contenido del directorio /dev se crea en la
instalación, a menudo hay entradas para cada controlador y
dispositivo posible, incluso si no existe ningún dispositivo físico.
13