5.8.4.5 Modelo de Ejecución y Memoria de Sistemas (12 horas) [Habilidades AG-C09,AG-C12]

Referencias Bibliográficas: [Stroustrup, 2013,Deitel and Deitel, 2017]

Temas

  1. Acceso directo, indirecto e indexado a ubicación de memoria
  2. Representación en tiempo de ejecución de abstracciones de datos como variables, arreglos, vectores, registros, elementos de datos basados en punteros como listas enlazadas y árboles, y objetos
  3. Asignación y acceso de bajo nivel a estructuras de datos de alto nivel como tipos de datos básicos, arreglos n-dimensionales, vectores, registros y objetos
  4. Retorno de procedimiento como mecanismo de desasignación automática para elementos de datos locales en la pila
  5. Gestión manual de memoria: asignar, desasignar y reutilizar memoria del montón
  6. Gestión automática de memoria: recolección de basura (garbage collection) como técnica automatizada usando la noción de alcanzabilidad (reachability)
  7. Distribución de memoria (pila, montón, estática).
  8. Aritmética de punteros y operaciones.
  9. Asignación dinámica de memoria (new/delete).
  10. Fugas de memoria y punteros colgantes.
  11. Punteros inteligentes (unique_ptr, shared_ptr).

Aprendizaje esperado (Learning Outcomes)

  1. Explicar por qué ocurren las fugas de memoria (memory leaks) y los problemas de punteros colgantes (dangling pointers), y qué puede hacer un programador para evitarlos/corregirlos [Usar]
  2. Explicar cómo las implementaciones de lenguajes de programación típicamente organizan la memoria en secciones de datos globales, texto, montón y pila, y cómo características como recursión y gestión de memoria se mapean a este modelo de memoria [Evaluar]
  3. Explicar cómo se ejecuta una construcción central del lenguaje, como abstracciones de datos y abstracciones de control [Evaluar]
  4. Implementar RAII para la gestión de recursos [Usar].
  5. Depurar errores relacionados con memoria en programas C++ [Usar].

Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM