Saltar a contenido

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.
Relación entre hardware y software
El hardware necesita instrucciones del software para realizar tareas útiles.

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.

Modelo de máquina de Von Neumann
En el modelo de Von Neumann, la CPU trabaja con instrucciones y datos almacenados en memoria.

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.

Tipos de software
Clasificación del software según su función.

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:

  1. El programa está almacenado de forma persistente en el SSD o disco duro.
  2. El sistema operativo lo carga, junto con sus datos, en la memoria RAM.
  3. La CPU recupera instrucciones y datos desde la RAM y ejecuta las instrucciones.
  4. El programa recibe entradas —por ejemplo, una pulsación de teclado— y actualiza sus datos.
  5. 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.

  1. Pulsas una flecha del teclado. El teclado, que es un dispositivo de entrada, genera un evento.
  2. El sistema operativo comunica el evento al juego.
  3. La CPU ejecuta el código del juego y calcula la nueva posición de la pieza.
  4. La RAM conserva temporalmente el estado del juego: piezas, posiciones, puntuación y nivel.
  5. La GPU puede renderizar la escena y la pantalla muestra el resultado.
  6. Si guardas la partida, el sistema operativo escribe sus datos en el SSD o disco duro.
  7. 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

Bibliografía y fuentes

Presentación