2.16. Fundamentos de Sistemas (SF)
Un sistema informático es un conjunto de infraestructuras de hardware y software sobre las cuales se construyen aplicaciones. Los sistemas informáticos se han convertido en un pilar de la vida diaria de las personas. Como tal, es esencial que los estudiantes aprendan conocimientos sobre sistemas informáticos, adquieran las habilidades para usar y diseñar estos sistemas y comprendan la lógica y los principios fundamentales en los sistemas informáticos. Esto podría equipar a los estudiantes con la competencia necesaria para una carrera relacionada con las ciencias de la computación.
En el plan de estudios de Ciencias de la Computación, el estudio de los sistemas informáticos generalmente abarca múltiples áreas de conocimiento, incluyendo, entre otros, sistemas operativos, sistemas paralelos y distribuidos, redes de comunicaciones, arquitectura y organización de computadoras, e ingeniería de software. El área de conocimiento de Fundamentos de Sistemas, como sugiere su nombre, se centra en los conceptos fundamentales y principios de diseño en sistemas informáticos que son compartidos por estos cursos dentro de sus respectivos núcleos. El objetivo de esta área de conocimiento es presentar una visión integradora de estos conceptos fundamentales y principios de diseño de una manera unificada aunque simplificada, proporcionando una base común para los diferentes mecanismos y políticas especializados apropiados para el área de dominio específica. Los conceptos fundamentales en esta área de conocimiento incluyen una visión general de los sistemas informáticos, conceptos básicos como estado y transición de estado, asignación y planificación de recursos, y así sucesivamente. Además, esta área de conocimiento introduce principios básicos de diseño para mejorar la confiabilidad, disponibilidad, eficiencia y seguridad de los sistemas informáticos.
| área de Conocimiento (Knowledge Area-KA) (KA) | Core Tier1 | Core Tier2 | Electivo |
| 2.16.1 Componentes Hardware y Lógica |
|
| No |
| 2.16.2 Capas, Abstracciones y Escalabilidad |
|
| No |
| 2.16.3 Sistemas Digitales y Lógica |
|
| No |
| 2.16.4 Máquinas de Estado |
|
| No |
| 2.16.5 Procesamiento Secuencial y Paralelo |
|
| No |
| 2.16.6 Gestión de Recursos |
|
| No |
| 2.16.7 Latencia, Caché y Jerarquía de Memoria |
|
| No |
| 2.16.8 Virtualización y Aislamiento |
|
| No |
| 2.16.9 Métricas y Benchmarks de Rendimiento |
|
| No |
| 2.16.10 Modelos Analíticos de Rendimiento |
|
| No |
| 2.16.11 Eventos, Herramientas y Experimentación |
|
| No |
| 2.16.12 Confiabilidad del Sistema |
|
| No |
| 2.16.13 Seguridad del Sistema |
|
| No |
| 2.16.14 Diseño del Sistema |
|
| No |
| 2.16.15 Sociedad, ética y la Profesión |
|
| No |
2.16.1. SF/Componentes Hardware y Lógica
Introduce los bloques de construcción y componentes básicos de una computadora, el hardware como
paradigma computacional y el concepto de segmentación (pipelining).
Temas:
Core
- Bloques de construcción y componentes básicos de una computadora (compuertas, flip-flops, registros, interconexiones; ruta de datos (datapath) + control + memoria).
- Hardware como paradigma computacional: Bloques de construcción lógicos fundamentales; Expresiones lógicas, minimización, formas de suma de productos Arquitectura y Organización (AR) -DigitalLogicDigitalSystems.
- Concepto básico de segmentación (pipelining), etapas de procesamiento superpuestas Arquitectura y Organización (AR) -FunctionalOrganization.
Aprendizaje esperado (Learning Outcomes):
Core:
- 1.
- Describir los bloques de construcción básicos de las computadoras y su papel en el desarrollo histórico de la arquitectura de computadoras [Describir]
- 2.
- Diseñar un circuito lógico simple usando los bloques de construcción fundamentales del diseño lógico para resolver un problema simple (por ejemplo, un sumador) [Diseñar]
2.16.2. SF/Capas, Abstracciones y Escalabilidad
Cubre las abstracciones de programación, la distinción entre servicios de aplicación y del sistema operativo,
el concepto de escalado y la organización en capas de los sistemas informáticos.
Temas:
Core
-
Abstracciones de programación, interfaces, uso de bibliotecas Computación Paralela y Distribuida (PDC) -Programs.
- Distinción e interacción entre servicios de aplicación y del sistema operativo, llamada a procedimiento remoto (remote procedure call) Sistemas Operativos (OS) -Purpose.
- Concepto básico de escalado (scaling): rendimiento vs tamaño del problema.
Aprendizaje esperado (Learning Outcomes):
Core:
- 1.
- Describir cómo los sistemas informáticos se construyen de capa sobre capa, basados en la separación de preocupaciones, con interfaces bien definidas, ocultando detalles de las capas bajas a las capas más altas [Describir]
- 2.
- Describir que el hardware, el sistema operativo, la máquina virtual y la aplicación son capas adicionales de interpretación/procesamiento [Describir]
- 3.
- Describir los mecanismos de cómo los errores se detectan, se señalan hacia atrás y se manejan a través de las capas [Describir]
- 4.
- Construir un programa simple (por ejemplo, un cliente/servidor TCP) usando métodos de capas, detección y recuperación de errores, y reflejo del estado de error a través de las capas [Crear]
- 5.
- Identificar errores en un programa por capas usando herramientas para seguimiento de programas, ejecución paso a paso (single stepping) y depuración [Analizar]
- 6.
- Comprender el concepto de escalado fuerte (strong) vs débil (weak), es decir, cómo el rendimiento se ve afectado por la escala del problema vs la escala de los recursos para resolver el problema. Esto puede motivarse con ejemplos simples del mundo real [Evaluar (valorar)]
2.16.3. SF/Sistemas Digitales y Lógica
Cubre sistemas digitales vs analógicos, compuertas lógicas, expresiones booleanas, relojes y lógica
combinacional y secuencial, como base para comprender el funcionamiento de los sistemas informáticos.
Temas:
Core
- Sistemas Digitales vs Analógicos/Discretos vs Continuos.
- Compuertas lógicas simples, expresiones lógicas, simplificación de lógica booleana.
- Relojes, Estado, Secuenciación.
- Lógica Combinacional, Lógica Secuencial, Registros, Memorias Arquitectura y Organización (AR) -DigitalLogicDigitalSystems.
Aprendizaje esperado (Learning Outcomes):
Core:
-
1.
- Describir las diferencias entre sistemas digitales y analógicos, y entre sistemas discretos y continuos. Puede dar ejemplos del mundo real de estos sistemas [Describir]
2.16.4. SF/Máquinas de Estado
Introduce el concepto de estado y transición de estado, máquinas de estados finitos (FSM), y su aplicación en
computadoras y protocolos de red como ejemplos de máquinas de estado.
Temas:
Core
- Estado y transición de estado (por ejemplo, estado inicial, estado final, ciclo de vida de estados) Fundamentos Algorítmicos (AL) -ComputationalModelsFormalLanguages.
- Máquinas de estados finitos (por ejemplo, NFA, DFA) Fundamentos Algorítmicos (AL) -ComputationalModelsFormalLanguages.
- Computadoras y Protocolos de Red como ejemplos de Máquinas de Estado Redes y Comunicaciones (NC) -Fundamentals.
Aprendizaje esperado (Learning Outcomes):
Core:
- 1.
- Describir las computaciones como un sistema caracterizado por un conjunto conocido de configuraciones con transiciones de una configuración única (estado) a otra (estado) [Describir]
- 2.
- Describir la distinción entre sistemas cuya salida es solo una función de su entrada (sin estado - stateless) y aquellos con memoria/historial (con estado - stateful) [Describir]
- 3.
- Desarrollar descripciones de máquinas de estado para soluciones de enunciados de problemas simples (por ejemplo, secuenciación de semáforos, reconocedores de patrones) [Crear]
- 4.
- Describir una computadora como una máquina de estado que interpreta instrucciones de máquina [Describir]
- 5.
- Explicar cómo un programa o protocolo de red también puede expresarse como una máquina de estado y que pueden existir representaciones alternativas para la misma computación [Explicar]
- 6.
- Derivar el comportamiento de serie temporal de una máquina de estado a partir de su representación de máquina de estado (por ejemplo, máquina de estado de gestión de conexión TCP) [Analizar]
2.16.5. SF/Procesamiento Secuencial y Paralelo
Cubre el procesamiento secuencial y paralelo, incluyendo modelos de un solo hilo y múltiples
hilos a nivel de aplicación, y la evaluación del rendimiento de versiones paralelas de programas.
Temas:
Core
- Procesamiento
secuencial vs paralelo. Computación Paralela y Distribuida (PDC) -Programs,OS-Concurrency.
- Procesamiento secuencial a nivel de aplicación: hilo único (single thread) Computación Paralela y Distribuida (PDC) -Programs,OS-Concurrency.
- Procesamiento paralelo simple a nivel de aplicación: a nivel de solicitud (servicios web/cliente-servidor/distribuido), hilo único por servidor, múltiples hilos con múltiples servidores, segmentación (pipelining) Computación Paralela y Distribuida (PDC) -Programs,OS-Concurrency.
Aprendizaje esperado (Learning Outcomes):
Core:
- 1.
- Escribir un problema secuencial simple y una versión paralela simple del mismo programa [Escribir]
- 2.
- Evaluar el rendimiento de versiones secuenciales y paralelas simples de un programa con diferentes tamaños de problema y ser capaz de describir las aceleraciones (speed-ups) logradas [Evaluar]
- 3.
- Describir en una línea de tiempo de ejecución cómo los eventos y operaciones de paralelismo pueden tener lugar simultáneamente (es decir, al mismo tiempo). Explicar cómo el trabajo puede realizarse en menos tiempo transcurrido si esto puede explotarse [Describir]
2.16.6. SF/Gestión de Recursos
Esta unidad de conocimiento cubre diferentes tipos de recursos en sistemas informáticos y algoritmos
comunes de asignación y planificación de recursos.
Temas:
Core
- Diferentes tipos de recursos (por ejemplo, participación del procesador, memoria, disco, ancho de banda de red) Sistemas Operativos (OS) -Scheduling,OS-Memory,OS-Files,NC-Fundamentals.
- Algoritmos comunes de asignación/planificación de recursos (por ejemplo, primero en llegar primero en ser servido, planificación basada en prioridad, planificación justa (fair scheduling) y planificación con desalojo (preemptive scheduling)) Sistemas Operativos (OS) -Scheduling.
- Ventajas y desventajas de los algoritmos de planificación comunes Sistemas Operativos (OS) -Scheduling.
Aprendizaje esperado (Learning Outcomes):
Core:
- 1.
- Definir cómo los recursos finitos de computadora (por ejemplo, participación del procesador, memoria, almacenamiento y ancho de banda de red) se gestionan mediante su cuidadosa asignación a las entidades existentes [Definir]
- 2.
- Describir cómo funcionan los algoritmos comunes de asignación/planificación de recursos
[Describir]
- 3.
- Desarrollar algoritmos de planificación comunes y evaluar sus rendimientos [Crear]
- 4.
- Describir los pros y los contras de los algoritmos de planificación comunes [Describir]
2.16.7. SF/Latencia, Caché y Jerarquía de Memoria
Cubre las latencias en los sistemas informáticos, la localidad espacial y temporal en las memorias caché, la
coherencia de caché, y la jerarquía de memoria del procesador con su fórmula de tiempo promedio de acceso.
Temas:
Core
-
Latencias en sistemas informáticos:
- 1.
- Velocidad de la luz y las computadoras (un pie por nanosegundo vs relojes de un GHz) Arquitectura y Organización (AR) -FunctionalOrganization
- 2.
- Latencias de memoria vs disco vs memoria a través de la red Arquitectura y Organización (AR) -MemoryHierarchy,AR-PerformanceEnergyEfficiency
- Memorias caché y los efectos de la localidad espacial y temporal en el rendimiento en procesadores y sistemas Arquitectura y Organización (AR) -MemoryHierarchy,AR-PerformanceEnergyEfficiency,OS-Memory.
- Memorias caché y coherencia de caché en bases de datos, sistemas operativos, sistemas distribuidos y arquitectura de computadoras Sistemas Operativos (OS) -Memory,AR-MemoryHierarchy,DM-DBMSInternals.
- Introducción a la jerarquía de memoria del procesador Arquitectura y Organización (AR) -MemoryHierarchy,AR-PerformanceEnergyEfficiency.
- La fórmula del tiempo promedio de acceso a memoria Arquitectura y Organización (AR) -MemoryHierarchy.
Aprendizaje esperado (Learning Outcomes):
Core:
- 1.
- Describir el desglose de la latencia de los sistemas informáticos en términos de memoria, disco y red [Describir]
- 2.
- Explicar la importancia de la localidad en la determinación del rendimiento del sistema [Explicar]
- 3.
- Calcular el tiempo promedio de acceso a memoria y describir las compensaciones (tradeoffs) en el rendimiento de la jerarquía de memoria en términos de capacidad, tasa de fallos/aciertos (miss/hit rate) y tiempo de acceso [Calcular]
2.16.8. SF/Virtualización y Aislamiento
Cubre la justificación del aislamiento y la virtualización para la protección y el rendimiento predecible, los
niveles de indirección mediante memoria virtual, y los métodos para implementar memoria virtual y
máquinas virtuales.
Temas:
Core
- Justificación de la virtualización y el aislamiento: protección y rendimiento predecible Sistemas Operativos (OS) -Virtualization.
- Niveles de indirección, ilustrados por la memoria virtual para gestionar recursos de memoria física Sistemas Operativos (OS) -Virtualization.
- Métodos para implementar memoria virtual y máquinas virtuales Sistemas Operativos (OS) -Virtualization.
Aprendizaje esperado (Learning Outcomes):
Core:
- 1.
- Explicar por qué es importante aislar y proteger la ejecución de programas individuales y entornos que comparten recursos subyacentes comunes [Explicar]
- 2.
- Describir cómo el concepto de indirección puede crear la ilusión de una máquina dedicada y sus recursos incluso cuando se comparten físicamente entre múltiples programas y entornos [Describir]
- 3.
- Evaluar el rendimiento de dos instancias de aplicación ejecutándose en máquinas virtuales separadas y determinar el efecto del aislamiento de rendimiento [Evaluar]
2.16.9. SF/Métricas y Benchmarks de Rendimiento
Cubre las figuras de mérito de rendimiento, las cargas de trabajo y benchmarks representativos, y los
métodos de recolección y análisis para la evaluación cuantitativa del rendimiento de los sistemas
informáticos.
Temas:
Core
- Figuras de mérito de rendimiento Arquitectura y Organización (AR) -PerformanceEnergyEfficiency,PDC-Evaluation.
- Cargas de trabajo y puntos de referencia representativos (benchmarks), y métodos de recolección y análisis de figuras de mérito de rendimiento Arquitectura y Organización (AR) -PerformanceEnergyEfficiency,PDC-Evaluation.
Aprendizaje esperado (Learning Outcomes):
Core:
- 1.
- Explicar cómo los componentes de la arquitectura del sistema contribuyen a mejorar su rendimiento [Explicar]
- 2.
- Explicar las circunstancias en las que una figura dada de una métrica de rendimiento del sistema
es útil [Explicar]
- 3.
- Explicar el uso e insuficiencias de los puntos de referencia (benchmarks) como medida del rendimiento del sistema [Explicar]
2.16.10. SF/Modelos Analíticos de Rendimiento
Cubre la ecuación CPI como herramienta de diseño, la Ley de Amdahl y sus limitaciones, el análisis de orden
de magnitud (Big O), el análisis de caminos críticos del sistema y las herramientas analíticas para la
evaluación cuantitativa.
Temas:
Core
- Ecuación CPI (Ciclos por Instrucción) como herramienta para comprender las compensaciones (tradeoffs) en el diseño de conjuntos de instrucciones, tuberías de procesador (pipelines) y organizaciones del sistema de memoria Arquitectura y Organización (AR) -PerformanceEnergyEfficiency,PDC-Evaluation.
- Ley de Amdahl: la parte de la computación que no se puede acelerar limita el efecto de las partes que sí se pueden Arquitectura y Organización (AR) -PerformanceEnergyEfficiency,PDC-Evaluation.
- Análisis de orden de magnitud (notación Big O) Fundamentos Algorítmicos (AL) -ComplexityAnalysis.
- Análisis de caminos lentos y rápidos de un sistema Arquitectura y Organización (AR) -FunctionalOrganization.
- Herramientas analíticas para guiar la evaluación cuantitativa.
Aprendizaje esperado (Learning Outcomes):
Core:
- 1.
- Describir la Ley de Amdahl y discutir sus limitaciones [Describir]
- 2.
- Aplicar estudios de límite o cálculos simples para producir estimaciones de orden de magnitud para una métrica de rendimiento dada en un contexto dado [Aplicar]
2.16.11. SF/Eventos, Herramientas y Experimentación
Cubre los eventos y su efecto en el rendimiento (detenciones, fallos de caché, fallos de página), la
comprensión de sistemas por capas como plataformas de evaluación, las trampas de los microbenchmarks, y
las herramientas y experimentos para medir el rendimiento del sistema.
Temas:
Core
- Eventos y su efecto en el rendimiento (por ejemplo, detenciones de instrucciones (stalls), fallos
de caché, fallos de página) Sistemas Operativos (OS) -Memory,AR-FunctionalOrganization.
- Comprender sistemas por capas, cargas de trabajo y plataformas, sus implicaciones para el rendimiento y los desafíos que representan para la evaluación.
- Trampas de los micro puntos de referencia (microbenchmark pitfalls).
Aprendizaje esperado (Learning Outcomes):
Core:
- 1.
- Aplicar herramientas de software para perfilar y medir el rendimiento del programa [Aplicar]
- 2.
- Diseñar y conducir un experimento orientado al rendimiento de un sistema común (por ejemplo, un sistema operativo y Spark) [Diseñar]
- 3.
- Diseñar un experimento de rendimiento en un sistema por capas para determinar el efecto de un parámetro del sistema en el rendimiento del sistema [Diseñar]
2.16.12. SF/Confiabilidad del Sistema
Esta unidad de conocimiento cubre la distinción entre errores (bugs), fallas (faults) y fallos (failures);
confiabilidad vs disponibilidad; y confiabilidad mediante redundancia, incluyendo verificación y reintento,
codificación redundante y duplicación.
Temas:
Core
- Distinción entre errores (bugs), fallas (faults) y fallos (failures) Computación Paralela y Distribuida (PDC) -Coordination,SE-Reliability.
- Confiabilidad vs disponibilidad.
-
Confiabilidad mediante redundancia:
- 1.
- verificación y reintento (check and retry) Sistemas Operativos (OS) -Faults,NC-Reliability
- 2.
- codificación redundante (códigos de corrección de errores, CRC, FEC, RAID) Arquitectura y Organización (AR) -MemoryHierarchy,NC-Reliability,DM-DistributedDatabasesCloudComputing
- 3.
- duplicación/reflejo (mirroring)/réplicas Gestión de Datos (DM) -DistributedDatabasesCloudComputing
- Otros enfoques para la confiabilidad (por ejemplo, registro por diario - journaling) Sistemas Operativos (OS) -Faults,NC-Reliability,SE-Reliability.
Aprendizaje esperado (Learning Outcomes):
Core:
- 1.
- Explicar la distinción entre errores de programa, errores del sistema y fallas de hardware (por ejemplo, memoria corrupta) y excepciones (por ejemplo, intento de dividir por cero) [Explicar]
- 2.
- Articular la distinción entre detectar, manejar y recuperarse de fallas y los métodos para su
implementación [Articular]
- 3.
- Describir el papel de los códigos de corrección de errores en proporcionar técnicas de verificación y corrección de errores en memorias, almacenamiento y redes [Describir]
- 4.
- Aplicar algoritmos simples para explotar información redundante con el propósito de corrección de datos [Aplicar]
- 5.
- Comparar diferentes métodos de detección y corrección de errores por su sobrecarga de datos, complejidad de implementación y tiempo de ejecución relativo para codificar, detectar y corregir errores [Comparar]
2.16.13. SF/Seguridad del Sistema
Esta unidad de conocimiento cubre problemas comunes de seguridad del sistema y contramedidas, incluyendo
criptografía y arquitectura de seguridad, así como sistemas de contramedida representativos, como sistemas
de detección de intrusiones y sistemas antivirus.
Temas:
Core
- Problemas comunes de seguridad del sistema (por ejemplo, virus, ataques de denegación de servicio y escuchas - eavesdropping) Sistemas Operativos (OS) -Protection,NC-Security,SEC-Foundations,SEC-Engineering.
-
Contramedidas Sistemas Operativos (OS) -Principles,OS-Protection,NC-Security:
- 1.
- Criptografía Seguridad (SEC) -Crypto
- 2.
- Arquitectura de seguridad Seguridad (SEC) -Engineering
-
Sistemas de contramedida representativos:
- 1.
- Sistemas de detección de intrusiones, cortafuegos (firewalls) Redes y Comunicaciones (NC) -Security
- 2.
- Sistemas antivirus
Aprendizaje esperado (Learning Outcomes):
Core:
- 1.
- Describir algunos problemas comunes de seguridad del sistema y dar ejemplos [Describir]
- 2.
- Describir algunas contramedidas contra problemas de seguridad del sistema [Describir]
- 3.
- Describir sistemas de contramedida representativos [Describir]
2.16.14. SF/Diseño del Sistema
Esta unidad de conocimiento cubre criterios comunes de diseño de sistemas (por ejemplo, vivacidad
(liveness), seguridad (safety), robustez, escalabilidad y seguridad (security)) y los diseños de sistemas
representativos.
Temas:
Core
- Criterios comunes de diseño de sistemas (por ejemplo, vivacidad (liveness), seguridad (safety), robustez, escalabilidad y seguridad (security)) Computación Paralela y Distribuida (PDC) -Evaluation.
- Diseños de sistemas representativos (por ejemplo, servidor web Apache, Spark y Linux).
Aprendizaje esperado (Learning Outcomes):
Core:
- 1.
- Describir criterios comunes de diseño de sistemas [Describir]
- 2.
- Dada la funcionalidad requerida de un sistema y sus criterios de diseño clave, proporcionar un diseño de alto nivel de este sistema [Generar]
- 3.
- Describir el diseño de algunos sistemas representativos [Describir]
2.16.15. SF/Sociedad, ética y la Profesión
Esta unidad de conocimiento cubre los derechos de propiedad intelectual de los sistemas informáticos,
licencias de software comunes y delitos informáticos.
Temas:
Core
- Derechos de propiedad intelectual de los sistemas informáticos Sociedad, ética y la Profesión (SEP) -IP.
- Licencias de software comunes Sociedad, ética y la Profesión (SEP) -IP.
- Delitos informáticos Sociedad, ética y la Profesión (SEP) -Security.
Aprendizaje esperado (Learning Outcomes):
Core: