Fundamentos de la Programación y Arquitectura de Computadoras
Algoritmos: La Base de la Programación
Un algoritmo es un conjunto ordenado y finito de instrucciones que permite realizar una actividad mediante pasos sucesivos. El proceso típico es:
- Planteamiento del Problema
- Desarrollo del Algoritmo
- Ejecución del Algoritmo
- Obtención del Resultado
Lenguajes de Programación: Comunicación con la Máquina
Los lenguajes de programación permiten a los humanos comunicarse con las computadoras. Existen diferentes niveles:
- Lenguaje Máquina: Conjunto de reglas y símbolos específicos del procesador, utilizando un sistema binario (0 y 1). Directamente ejecutable, pero dependiente del hardware y vulnerable a malware.
- Lenguaje Ensamblador: Utiliza palabras mnemotécnicas que representan instrucciones del lenguaje máquina, facilitando la programación.
- Lenguaje de Alto Nivel: Independiente del procesador. Se escribe en un editor de texto y requiere un compilador o un intérprete para su traducción.
Compiladores e Intérpretes
- Compilador: Traduce todo el código fuente a código máquina, generando un programa ejecutable. Proceso: 1) Análisis, 2) Síntesis.
- Intérprete: Traduce y ejecuta el código línea por línea. Más lento, pero más flexible.
- Bytecode: Código intermedio (similar al lenguaje ensamblador) que se traduce a binario en la CPU.
- Máquina Virtual: Realiza el paso final de la traducción del bytecode.
Ventajas de la Máquina Virtual (Intérprete de M. Virtual) frente al intérprete puro: Mayor portabilidad, rapidez y estabilidad.
Estructura Interna de un Ordenador
Flujo de Traducción de Lenguajes
El proceso de traducción desde un lenguaje de alto nivel hasta el hardware sigue estos pasos:
- Lenguaje de Alto Nivel (Compilador/Intérprete) → Lenguaje Ensamblador (Ensamblador)
- Sistema Operativo (Programa que interpreta instrucciones y gestiona recursos)
- Conjunto de Instrucciones (Describe cómo es el procesador)
- Microarquitectura (Describe cómo están conectados los componentes internos – microinstrucciones)
- Lógica Digital (Hardware)
Bloques Funcionales y Buses
Los componentes de un ordenador se interconectan mediante buses:
- Bus de Datos: Transmite datos.
- Bus de Direcciones: Indica el destino de los datos.
- Bus de Control: Controla el acceso y uso de los buses de datos y direcciones.
Tipos de Memoria
- Memoria: Almacena los programas durante su ejecución.
- RAM (Random Access Memory): Permite leer y escribir datos. Tipos:
- SRAM (Static RAM): Mantiene el contenido mientras tenga alimentación. Más rápida y cara.
- DRAM (Dynamic RAM): Necesita un circuito de refresco. Más lenta, pero con mayor capacidad.
- ROM (Read-Only Memory): Solo lectura. Los programas se mantienen incluso sin conexión. Tipos:
- PROM (Programmable ROM): Programable una sola vez.
- EPROM (Erasable PROM): Se puede borrar y reprogramar.
- EEPROM (Electrically EPROM): No requiere un dispositivo especial para borrarse.
- Memoria Flash: Permite lectura y escritura por bloques. Ejemplo: USB.
- Memoria Secundaria: Almacenamiento permanente (CD, DVD, etc.).
- Caché: Memoria SRAM de alta velocidad y poca capacidad que guarda copias temporales de datos.
Funcionamiento de la Memoria Caché
La CPU transfiere bloques de datos a la caché. Si las lecturas siguientes corresponden a datos de ese bloque, se utiliza la caché (más rápida). Los accesos son predecibles gracias a:
- Localidad Temporal: Datos recientemente usados.
- Localidad Espacial: Datos en zonas cercanas de memoria.
Estrategias de diseño de la caché:
- Política de Extracción: Qué bloque subir del nivel inferior.
- Política de Ubicación: Dónde colocar el bloque (directa, asociativa, asociativa por conjuntos).
- Política de Reemplazo: Qué bloque abandonar.
- Política de Escritura: Cuándo actualizar la información.
Arquitectura Harvard
Utiliza dispositivos de memoria separados para instrucciones y datos. Memoria: PROM y SRAM.
Unidad Central de Proceso (CPU)
Ejecuta los programas almacenados en la memoria principal. Busca instrucciones y las ejecuta secuencialmente.
Líneas del bus de control:
- Reloj
- Línea de control
- Interrupciones
- Línea de arbitraje de bus
- Líneas de estado
Componentes de la CPU
- Unidad de Control (CU): Detecta señales y capta instrucciones.
- Registros: Almacenan resultados temporales e información de control.
- Unidad Aritmético-Lógica (ALU): Realiza operaciones.
- Buses: Internos (conectan componentes de la CPU) y externos (conectan otros dispositivos).
Dispositivos de Entrada/Salida (E/S)
Permiten la entrada (ej: altavoz) y salida (ej: ratón) de información.
Partes:
- Controlador
- Dispositivo
- Interfaz de conexión
Funciones:
- Control y temporización de la información.
- Comunicación con la CPU.
- Almacenamiento temporal de datos (buffer): Sincroniza las velocidades de la CPU y los dispositivos.
- Detección y corrección de errores.
Ejecución de Instrucciones
Ciclo de instrucción:
- Captar (Fetch)
- Decodificar
- Ejecutar
Componentes de una instrucción:
- Opcode: Indica la operación a realizar.
- Address: Especifica los operandos.
Tipos de Arquitecturas de CPU
- Arquitectura de Pila: Último en entrar, primero en salir (LIFO). Registro especial (TOS) indica la posición.
- Arquitectura con Acumulador: Un registro especial (acumulador) es siempre uno de los operandos.
- Arquitectura GPR Registro-Memoria: Un operando en memoria, otro en un registro.
- Arquitectura GPR Registro-Registro: Todos los operandos (incluido el resultado) son registros.
Jerarquía de Memoria
(Más rápida y menos capacidad) → (Más capacidad y menos rápida):
CPU → Caché → RAM → Disco Duro → (Almacenamiento en red, Disco duro extraíble, etc.)
Interrupciones
Alteración forzada del flujo de instrucciones de un programa en respuesta a un cambio de estado (ej: entrada/salida de datos). El controlador de E/S (DMA) gestiona la transferencia de datos, liberando a la CPU.
- La CPU envía una solicitud al DMA.
- El DMA gestiona la transferencia y, al finalizar, envía una señal de interrupción a la CPU.
Sistemas Operativos (SO)
Funciones principales:
- Gestionar el hardware.
- Proporcionar a las aplicaciones servicios para manipular los dispositivos hardware.
Memoria Virtual
Abstracción de la memoria principal y de los dispositivos de E/S. Permite:
- Usar la memoria principal como caché.
- Simplificar la gestión de memoria.
- Proteger las direcciones de memoria.
Ficheros
Abstracción de los dispositivos de E/S y la memoria principal. Secuencia de bytes. Ventajas:
- Portabilidad
- Seguridad
- Sencillez
Procesos
Abstracción de E/S, memoria principal y CPU. Ejecución secuencial de instrucciones. Existe multitarea (varios procesos a la vez) y multinúcleo (varios procesadores).
Las instrucciones del programa están determinadas por:
- El estado de la CPU.
- Variables en memoria.
- Recursos utilizados por el proceso.
El planificador (scheduler) decide cuándo cambiar de contexto y cuál de los procesos en espera se ejecuta.