Programa de la asignatura
Bloque Temático I: Arquitecturas Paralelas
TEMA 1. Introducción a las Arquitecturas de Altas Prestaciones
- Lección 1. Enfoque cuantitativo en el diseño de computadores
Grandes Retos. Enfoque cuantitativo en el diseño de Computadores. Comparación de máquinas.
Ley de Amdahl. Rendimiento/Coste en los computadores.
- Lección 2. Medición del rendimiento de computadores
Medición de Rendimiento. Medidas de Rendimiento: MIPS, MFLOPS,
Benchmarks.
TEMA 2. Incremento de prestaciones en Arquitecturas Monoprocesadoras
- Lección 3. Introducción. Mejoras tecnológicas
Fabricación de circuitos integrados. Tendencias y evolución de
prestaciones.
- Lección 4. Mejoras basadas en Organización del Hardware. Jerarquía
de Memoria
Uso más eficiente de la tecnología existente (organización del
hardware). Jerarquía de Memoria.
- Lección 5. Procesadores segmentados y superescalares
Procesadores Segmentados. Parámetros de rendimiento. Tipos de
segmentación.
Riesgos de la segmentación: Rendimiento real obtenido.
Riesgos estructurales. Riesgos por dependencias de datos. Riesgos
de control.
Segmentación avanzada. Procesadores Superescalares.
- Lección 6. Mejoras en el sistema de E/S
Mejoras en buses e Interfaces. Discos RAID
- Lección 7. Mejoras basadas en el juego de instrucciones
Eficiencia del juego de instrucciones: P. RISC y CISC,
Arquitecturas matricial y vectorial básicas.
Capacidades vectoriales en procesadores actuales.
TEMA 3. Arquitecturas Multiprocesadoras
- Lección 8. Introducción
Características y clasificación de los multiprocesadores.
- Lección 9. Multiprocesadores con memoria compartida
Aspectos básicos en el diseño de MMC: Redes de interconexión,
Programación y Planificación.
- Lección 10. Multiprocesadores con memoria distribuida
Aspectos básicos en el diseño de MMD: RI, Librerías de paso de
mensajes y Planificación.
Bloque Temático II: Arquitecturas Distribuidas
TEMA 1. Conceptos básicos de Sistemas Distribuidos
- Lección 1. Introducción a los sistemas distribuidos
Definición, características, retos.
TEMA 2. Técnicas básicas de construcción de aplicaciones
distribuidas
- Lección 2. Modelos de aplicaciones distribuidas
Modelo cliente/servidor. Tipos de servidor. Redes entre iguales.
- Lección 3. La interfaz de sockets
Introducción a la interfaz de sockets. Funciones
básicas. Sockets orientados a conexión u orientados a
datagramas. Asignación de dirección y puerto al
socket. Funciones de manipulación de la
endianity. Esquema general de un servidor. Esquema general
de un cliente.
- Lección 4. Concurrencia en los servidores
Tipos de concurrencia: real y aparente. Concurrencia real creando
procesos bajo demanda. Concurrencia real mediante la creación
previa de un pool de procesos. Concurrencia aparente mediante la
función select()
. Esquema general de un servidor con
concurrencia aparente.
TEMA 3. La heterogeneidad de la información
- Lección 5. Introducción a las representaciones externas de datos
El problema de la heterogeneidad de la información. Lenguajes de
representación de datos. Codificaciones externas.
- Lección 6. Codificación de caracteres: Unicode
Evolución histórica de la representación de caracteres. Código
ASCII. Estándares ISO-8859. Unicode. Codificaciones del Unicode:
UCS-4, UCS-2, UTF-32, UTF-16, UTF-8.
- Lección 7. XDR
Lenguaje XDR. Tipos básicos. Tipos definidos por el usuario. Tipos
compuestos. Codificación binaria de cada tipo. Herramientas de
programación para XDR. Filtros XDR. Utilización de filtros XDR sobre
sockets.
TEMA 4. Llamadas a procedimientos remotos
- Lección 8. Introducción a las llamadas a procedimientos remotos
Concepto de llamada a procedimiento remoto. Implementación. Extremos
de cliente y servidor. Localización.
- Lección 9. ONC RPC (Sun)
Lenguaje RPCL. Restricciones en la implementación de los
servicios. Funciones de la biblioteca rpc. Mecanismo
«simplificado». Uso de la herramienta rpcgen. Gestión de
errores. Ejemplos. Modificación del extremo del servidor para
introducir concurrencia. Llamadas en modo broadcast. Llamadas por
lotes.
- Lección 10. DCE RPC (DEC y Microsoft)
Introducción a DCE. Diferencias entre la implementación estándar y
la de Microsoft. Lenguaje IDL. Tipos de datos simples. Tipos de
datos definidos por el usuario. Tipos compuestos. Arrays y
punteros. Funciones de la biblioteca dcerpc. Gestión de
errores. Excepciones. Ejemplos.
TEMA 5. Otros aspectos de los sistemas distribuidos
- Lección 11. Sincronización y relojes
El problema del tiempo en los sistemas distribuidos. Relojes
lógicos. Algoritmo de Lamport. Relojes físicos. Definición de
tiempo UTC. Frecuencia de sincronización. Algoritmo de Christian.
- Lección 12. Seguridad y criptografía
Seguridad en los sistemas distribuidos: amenazas y
ataques. Introducción a la criptografía de clave
simétrica. Ejemplo de uso: protocolo Kerberos. Introducción a la
criptografía de clave pública. Algoritmo RSA. Ejemplo de uso:
OpenPGP. Introducción a los sistemas de clave desechable. Ejemplo
de uso: OTP.