1.1.-Software y Hardware
1.1. Relación entre el software y el hardware (CE 1.a)¶
Idea principal
El hardware aporta los componentes físicos y el software aporta las instrucciones. Un programa solo puede ejecutarse cuando ambos colaboran, con el sistema operativo como intermediario entre las aplicaciones y muchos dispositivos.
Un ordenador personal, un portátil, un teléfono móvil o una tableta combina hardware y software. En este tema estudiaremos qué incluye cada parte, cómo se comunican durante la ejecución de un programa y por qué esta relación importa al desarrollar aplicaciones.
El objetivo no es memorizar una lista de componentes, sino comprender qué ocurre cuando una aplicación recibe datos, los procesa, los guarda y muestra un resultado.
Según la normativa del módulo Entornos de Desarrollo, este contenido contribuye al siguiente resultado de aprendizaje y criterio de evaluación:
| Código | Descripción |
|---|---|
| RA 1 | Reconoce los elementos y herramientas que intervienen en el desarrollo de un programa informático, analizando sus características y las fases en las que actúan hasta llegar a su puesta en funcionamiento. |
| CE 1.a | Se ha reconocido la relación de los programas con los componentes del sistema informático: memoria, procesador, periféricos, entre otros. |
Qué deberías saber al terminar
Al acabar este apartado deberías poder:
- distinguir hardware y software mediante ejemplos;
- explicar la función de la CPU, la RAM, el almacenamiento y los periféricos;
- describir el recorrido de los datos durante la ejecución de un programa;
- explicar de forma simplificada el ciclo de búsqueda, decodificación y ejecución de una instrucción;
- distinguir el estado temporal de un programa de los datos guardados de forma persistente;
- relacionar estas decisiones con el rendimiento de una aplicación.
Mapa del tema
Seguiremos esta secuencia: hardware → software → flujo de ejecución y ciclo de instrucción → ejemplo práctico con Tetris → importancia para el desarrollo.
1. Hardware: la parte física¶
El Diccionario de la lengua española describe el hardware como el conjunto de componentes físicos que forman una computadora. En términos prácticos, es todo lo que forma parte físicamente del sistema: se puede ver, tocar o conectar.
Esto incluye tanto componentes internos —circuitos, memoria, procesador o tarjeta gráfica— como periféricos externos —teclado, ratón, pantalla, impresora o memoria USB—.
Hardware
El hardware es el conjunto de componentes físicos que reciben, procesan, almacenan o muestran información.
Una analogía útil es imaginar una cocina moderna:
- los electrodomésticos y utensilios representan el hardware;
- el procesador es quien realiza las tareas;
- la memoria es el espacio donde se colocan temporalmente los ingredientes;
- los periféricos permiten interactuar con el exterior.
Componentes principales¶
| Componente | Función principal | Ejemplo durante un videojuego |
|---|---|---|
| Procesador (CPU) | Lee y ejecuta instrucciones, y realiza cálculos. | Calcula la posición y la velocidad de un personaje. |
| Memoria RAM | Mantiene temporalmente el código y los datos en uso. | Guarda la posición actual de las piezas. |
| Disco duro o SSD | Conserva datos a largo plazo, incluso al apagar el equipo. | Almacena el juego y una partida guardada. |
| Periféricos | Permiten la entrada, la salida o ambas. | El teclado recibe órdenes y la pantalla muestra el resultado. |
| GPU o tarjeta gráfica | Procesa y renderiza imágenes, especialmente en paralelo. | Dibuja la pieza en la posición calculada. |
La CPU también recibe los nombres de procesador y microprocesador. En español puede aparecer la abreviatura UCP (unidad central de procesamiento). La RAM, en cambio, es volátil: necesita alimentación eléctrica y pierde su contenido al apagar el equipo. El SSD o el disco duro son almacenamiento persistente: conservan los archivos sin alimentación.
2. Software: instrucciones y datos¶
El IEEE define el software como el conjunto de programas de cómputo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación.
Dicho de forma sencilla, el software es la parte lógica del sistema: los programas y los datos que indican al hardware qué debe hacer. Se crea utilizando lenguajes de programación y puede tener distintos propósitos.
Software
El software es el conjunto de instrucciones, programas, procedimientos, documentación y datos que permiten realizar tareas con un sistema informático.
Algunos ejemplos son:
- navegadores web, como Google Chrome o Mozilla Firefox;
- sistemas operativos, como Windows, macOS o Linux;
- antivirus y otras utilidades de seguridad;
- aplicaciones ofimáticas, como Microsoft Word o LibreOffice;
- sistemas empresariales, como un BPMS, un ERP o un CRM.
Clasificación habitual del software¶
| Tipo | Para qué sirve | Ejemplos |
|---|---|---|
| Software de sistema | Gestiona los recursos básicos y permite que funcionen las aplicaciones. | Sistema operativo, controladores (drivers) y utilidades. |
| Software de aplicación | Resuelve una necesidad concreta de la persona usuaria. | Suite ofimática, navegador, editor de imágenes o videojuego. |
| Software de desarrollo | Ayuda a crear, traducir, probar o mantener otros programas. | Editor, compilador, intérprete, depurador o IDE. |
El sistema operativo es una pieza especialmente importante del software de sistema. Actúa como intermediario entre las aplicaciones y el hardware: administra la memoria, coordina procesos y ofrece servicios para acceder a discos, teclado, pantalla, red o impresora. Los controladores permiten que el sistema operativo conozca la forma concreta de comunicarse con cada dispositivo.
Volviendo a la analogía de la cocina, el software son las recetas y el sistema operativo es quien organiza el trabajo: proporciona al procesador los ingredientes que necesita, reserva espacio en la memoria y solicita los utensilios adecuados.
No confundas aplicación y software de desarrollo
Un editor como Visual Studio Code es un programa que se ejecuta sobre Windows, Linux o macOS, pero se clasifica como software de desarrollo porque su finalidad es ayudar a crear otros programas.
3. Cómo se comunican el software y el hardware¶
La ejecución de un programa puede entenderse como un ciclo de entrada, procesamiento, memoria y salida. De forma simplificada:
- El programa está almacenado de forma persistente en el SSD o disco duro.
- El sistema operativo lo carga, junto con sus datos, en la memoria RAM.
- La CPU recupera instrucciones y datos desde la RAM y ejecuta las instrucciones.
- El programa recibe entradas —por ejemplo, una pulsación de teclado— y actualiza sus datos.
- El resultado se envía a un dispositivo de salida, como la pantalla, o se guarda de nuevo en almacenamiento persistente.
flowchart LR
A["SSD o disco<br/>programa y datos"] -->|cargar| B["RAM<br/>código y datos en uso"]
B -->|leer instrucciones| C["CPU<br/>procesar y calcular"]
D["Entrada<br/>teclado o ratón"] -->|eventos| C
C -->|resultado| E["Salida<br/>pantalla o altavoces"]
C -->|guardar| A
Este esquema resume el flujo para facilitar su comprensión: no representa conexiones directas entre la aplicación y todos los componentes. En un ordenador personal, el sistema operativo y los controladores coordinan buena parte de la comunicación con los dispositivos, como se detalla a continuación.
El disco duro también se considera un periférico de entrada/salida (E/S) porque permite leer datos y escribirlos. La CPU no almacena de forma permanente los documentos: los procesa y coordina operaciones, mientras que la RAM mantiene temporalmente la información que se está utilizando.
Una precisión importante
Una aplicación no suele enviar órdenes directamente al teclado. El teclado genera una entrada, el sistema operativo recibe el evento mediante su controlador y la aplicación consulta ese evento para reaccionar. Del mismo modo, la aplicación solicita guardar un archivo al sistema operativo, que se encarga de escribirlo en el almacenamiento.
Cada vez que ejecutamos un programa, la CPU recupera instrucciones y las ejecuta en pasos muy pequeños, millones de veces por segundo. Este proceso se puede estudiar con un modelo simplificado llamado ciclo de instrucción.
3.1. Ciclo de instrucción: búsqueda, decodificación y ejecución¶
El ciclo de instrucción describe cómo el procesador convierte una instrucción almacenada en memoria en una operación realizada por el sistema. Sus fases principales son:
| Fase | Qué hace el procesador | Ejemplo durante la ejecución de una aplicación |
|---|---|---|
| Búsqueda (fetch) | Recupera de la memoria la siguiente instrucción que debe procesar. El contador de programa es un registro que indica la dirección donde localizarla. | Obtiene la instrucción que debe consultar una entrada o calcular un nuevo valor. |
| Decodificación (decode) | Interpreta la operación, sus datos y los operandos que necesita. | Determina si debe comparar datos, realizar una suma o guardar un resultado. |
| Ejecución (execute) | Realiza la operación y actualiza registros o memoria, o realiza una operación de entrada/salida. Después continúa con la siguiente instrucción, salvo que una instrucción de salto o llamada cambie la siguiente dirección. | Actualiza el estado de una aplicación y prepara el resultado que se mostrará. |
Estas fases se repiten mientras el programa está en funcionamiento. Por ejemplo, al mover una pieza de un videojuego, la aplicación recibe el evento de entrada, la CPU busca y decodifica las instrucciones que corresponden a ese evento, y después ejecuta los cálculos que actualizan la posición en memoria. Finalmente, otras instrucciones preparan la salida gráfica.
Un modelo para comprender, no una radiografía de la CPU
Las CPU actuales utilizan cachés, canalizaciones y otras técnicas que hacen más compleja la ejecución real. El ciclo de búsqueda, decodificación y ejecución es un modelo didáctico útil para entender la función del procesador, pero una aplicación normal no muestra directamente cada una de esas operaciones internas.
3.2. Estado del programa y memoria temporal¶
Un programa no solo contiene instrucciones: también trabaja con datos que cambian durante la ejecución. El conjunto de valores que describe cómo se encuentra una aplicación en un momento determinado se denomina estado del programa. Puede incluir, por ejemplo, el texto que se está editando, la posición del cursor, la puntuación de un juego o los eventos pendientes de procesar.
Mientras una aplicación está activa, el sistema operativo mantiene en la RAM el código y los datos que necesita. La CPU puede copiar valores concretos a sus registros o a sus cachés para operar con ellos rápidamente, pero esos espacios tampoco son almacenamiento permanente. Cuando el programa modifica un documento, el cambio forma parte del estado temporal hasta que la aplicación solicita al sistema operativo que lo escriba en un SSD o disco duro.
Por eso conviene distinguir dos situaciones:
- Dato en uso: está en la memoria de trabajo y puede cambiar mientras se ejecuta el programa.
- Dato persistente: se ha escrito en un almacenamiento que conserva la información al cerrar el programa o apagar el equipo.
Si se corta la alimentación antes de guardar un cambio, la versión que solo estaba en la memoria volátil puede perderse. El sistema operativo también libera la memoria reservada por una aplicación cuando esta termina, por lo que el estado temporal deja de estar disponible para ese proceso.
Del código fuente a las instrucciones
La CPU no suele ejecutar directamente el texto fuente escrito por una persona. Según el lenguaje y su implementación, un compilador, un intérprete o una máquina virtual transforma o procesa ese código hasta obtener instrucciones que el procesador pueda ejecutar. En este tema basta con entender esa relación; el detalle del código objeto, el código ejecutable y los traductores se desarrolla en código fuente, objeto y ejecutable, código intermedio y traductores.
3.3. Recorrido de las operaciones de entrada y salida¶
En un ordenador personal, una aplicación no suele controlar directamente cada dispositivo. El recorrido habitual puede resumirse así:
| Operación | Recorrido simplificado | Resultado |
|---|---|---|
| Entrada | Dispositivo de entrada → controlador y sistema operativo → aplicación → CPU y memoria | La aplicación recibe datos y actualiza su estado. |
| Salida | Aplicación → sistema operativo y controlador → dispositivo de salida | El resultado se muestra, se reproduce o se envía a otro dispositivo. |
| Guardado | Aplicación → sistema operativo → SSD o disco duro | Los datos pasan de la memoria de trabajo a un almacenamiento persistente. |
El recorrido exacto depende del dispositivo y del sistema operativo, pero la idea fundamental se mantiene: los periféricos proporcionan o reciben información, mientras que el software define cómo interpretarla y qué respuesta producir.
- Al escribir en un procesador de textos, el teclado envía pulsaciones al sistema; el sistema operativo las comunica a la aplicación y esta actualiza el documento en la RAM.
- Al guardar el documento, el sistema operativo toma los datos que están en memoria y los escribe en un archivo del SSD o del disco duro.
- Al mostrar el documento, la aplicación solicita una representación visual; la CPU y, cuando procede, la GPU procesan la información y la pantalla muestra los píxeles.
3.4. Qué se observa y qué se infiere¶
Una herramienta de simulación, un depurador o una aplicación en funcionamiento puede mostrar entradas, salidas y algunos valores del estado. Sin embargo, no tiene por qué mostrar cada instrucción que recupera la CPU, cada transferencia entre memoria y procesador ni todas las señales eléctricas del dispositivo.
Al analizar una ejecución conviene separar dos tipos de afirmaciones:
- Observación directa: el usuario introduce una entrada, aparece un resultado o cambia el estado visible de un componente.
- Explicación basada en el modelo: la CPU ha ejecutado instrucciones, la memoria ha conservado datos temporales y el sistema operativo o sus controladores han coordinado la comunicación.
Esta distinción evita confundir una representación didáctica con una medición completa del hardware real.
4. Ejemplo práctico: el juego Tetris¶
Tetris permite observar la colaboración entre varios componentes sin ocultar el proceso detrás de una aplicación compleja.
- Pulsas una flecha del teclado. El teclado, que es un dispositivo de entrada, genera un evento.
- El sistema operativo comunica el evento al juego.
- La CPU ejecuta el código del juego y calcula la nueva posición de la pieza.
- La RAM conserva temporalmente el estado del juego: piezas, posiciones, puntuación y nivel.
- La GPU puede renderizar la escena y la pantalla muestra el resultado.
- Si guardas la partida, el sistema operativo escribe sus datos en el SSD o disco duro.
- Cuando cierras el juego, el sistema operativo libera la memoria y otros recursos reservados.
sequenceDiagram
actor Jugador
participant Teclado
participant SO as Sistema operativo
participant Juego
participant CPU
participant RAM
participant GPU
participant Pantalla
Jugador->>Teclado: Pulsa una flecha
Teclado->>SO: Envía evento de entrada
SO->>Juego: Comunica la pulsación
Juego->>CPU: Solicita calcular el movimiento
CPU->>RAM: Actualiza el estado de la pieza
CPU->>GPU: Solicita dibujar la escena
GPU->>Pantalla: Envía la imagen
Pantalla-->>Jugador: Muestra la pieza desplazada
El diagrama representa la colaboración lógica entre los componentes, no conexiones físicas directas entre el juego y la CPU, la memoria o la GPU. La CPU ejecuta las instrucciones del juego, el sistema operativo coordina la entrada y la salida, y la RAM conserva el estado mientras la partida está activa.
En este ejemplo, el software del juego define las reglas: qué ocurre al pulsar una tecla, cómo cae una pieza o cuándo se completa una línea. La CPU ejecuta esas instrucciones, la RAM mantiene los datos de la partida, la GPU se ocupa especialmente del renderizado y el sistema operativo coordina el acceso a los recursos.
CPU y GPU no hacen exactamente lo mismo
La CPU ejecuta la lógica general del programa, como la física, las colisiones o las reglas del juego. La GPU está especializada en realizar cálculos gráficos y dibujar la escena. En aplicaciones sencillas la división puede ser menos visible, pero el principio sigue siendo útil.
5. Por qué esta relación importa al desarrollar¶
Comprender la relación entre software y hardware es esencial para desarrollar aplicaciones eficientes. Una aplicación no utiliza recursos infinitos: consume tiempo de CPU, memoria RAM, almacenamiento, red y, en algunos casos, capacidad de cálculo gráfico.
Por ejemplo:
- un editor de vídeo puede necesitar mucha RAM; conviene liberar recursos que ya no se usan y evitar cargar datos innecesarios;
- una aplicación móvil debe tener en cuenta que el dispositivo puede disponer de menos memoria, procesador y batería que un ordenador;
- una aplicación que lee y escribe continuamente en disco puede ser más lenta que otra que trabaja en RAM y guarda solo cuando es necesario;
- conocer los periféricos y el sistema operativo ayuda a diseñar correctamente la entrada, la salida y la gestión de errores.
En el trabajo profesional, esta perspectiva permite elegir estructuras de datos adecuadas, controlar el consumo de memoria, reducir operaciones costosas y adaptar una aplicación a distintos dispositivos.
6. Buenas prácticas¶
Para trabajar este contenido con criterio, conviene:
- describir por separado qué aporta el software y qué componente físico ejecuta, almacena o muestra cada resultado;
- diferenciar siempre cargar, ejecutar, mostrar y guardar, porque son operaciones distintas;
- indicar cuándo una explicación procede de una observación y cuándo se basa en un modelo simplificado del sistema.
7. Errores frecuentes¶
| Error frecuente | Por qué ocurre | Cómo evitarlo |
|---|---|---|
| Confundir RAM con almacenamiento permanente | Ambas guardan datos, pero tienen distinta persistencia. | Recordar: RAM = temporal; SSD/HDD = persistente. |
| Afirmar que el monitor ejecuta el programa | El monitor solo muestra la salida recibida. | Separar procesamiento (CPU/GPU) de salida visual (pantalla). |
| Pensar que el disco ejecuta el juego | El programa se carga desde el disco, pero se ejecuta usando CPU y RAM. | Diferenciar cargar, ejecutar y guardar. |
| Confundir un periférico con software | Un dispositivo físico puede estar controlado por un programa. | Nombrar por separado dispositivo, controlador y aplicación. |
| Suponer que todas las aplicaciones controlan directamente el hardware | El acceso directo dificultaría la seguridad y la portabilidad. | Entender el papel del sistema operativo y sus controladores. |
Para analizar cualquier programa
Pregúntate siempre: ¿qué datos recibe?, ¿dónde se almacenan mientras se usan?, ¿qué componente los procesa?, ¿qué resultado produce? y ¿cuándo se guardan de forma permanente?
8. Resumen¶
En este tema has aprendido que:
- el hardware es la parte física del sistema y el software es la parte lógica;
- la CPU ejecuta instrucciones, la RAM mantiene temporalmente código y datos, y el SSD o disco duro conserva la información;
- los periféricos realizan operaciones de entrada, salida o entrada/salida;
- el sistema operativo hace de intermediario entre las aplicaciones y muchos componentes físicos;
- durante la ejecución, un programa se carga en RAM, la CPU procesa sus instrucciones y el resultado se comunica mediante dispositivos de E/S;
- el ciclo de instrucción se puede entender mediante las fases de búsqueda, decodificación y ejecución;
- el estado temporal de una aplicación se mantiene en memoria de trabajo y solo se conserva al guardar los datos en almacenamiento persistente;
- en un videojuego como Tetris, teclado, CPU, RAM, GPU, pantalla y almacenamiento colaboran siguiendo las instrucciones del software;
- conocer el hardware permite diseñar aplicaciones más eficientes y adecuadas al dispositivo.
Idea clave
El software indica qué hacer, el hardware proporciona los medios para hacerlo y el sistema operativo coordina buena parte de esa colaboración. Esta relación es la base para comprender el código fuente, el código objeto y el código ejecutable del siguiente apartado.
9. Para seguir practicando¶
- Realiza la Práctica 004: Relación software-hardware con Tinkercad para aplicar el flujo de entrada, procesamiento, memoria y salida en una simulación.
Bibliografía y fuentes¶
- Real Academia Española: definición de hardware.
- IEEE Computer Society, IEEE Standard Glossary of Software Engineering Terminology (IEEE Std 610.12-1990).