5.35.4.3 Comportamiento en Tiempo de Ejecución y Sistemas (20 horas) [Habilidades AG-C08,AG-C12]

Referencias Bibliográficas: [Aho et al., 2006,Cooper and Torczon, 2011]

Temas

  1. Modelos de proceso usando pilas y montones para asignar y desasignar registros de activación y recuperar entornos usando punteros de marco (frame pointers) y direcciones de retorno durante una llamada a procedimiento, incluyendo ejemplos de paso de parámetros
  2. Esquemas de búsqueda de código usando tablas hash para métodos en implementaciones de programas orientados a objetos
  3. Distribución de datos para objetos y registros de activación
  4. Asignación de objetos en el montón (heap)
  5. Implementar entidades virtuales y métodos virtuales; tablas de métodos virtuales (virtual method tables) y su aplicación
  6. Comportamiento en tiempo de ejecución de programas orientados a objetos
  7. Comparar y contrastar la asignación de memoria durante el intercambio de información usando paso de parámetros y variables no locales (usando cadena de enlaces estáticos).
  8. Enfoques y técnicas de gestión dinámica de memoria: malloc/free, recolección de basura (mark-sweep, copying, reference counting), regiones (también conocidas como arenas o zonas)
  9. Compilación justo a tiempo (just-in-time) y recompilación dinámica
  10. Interfaz con el sistema operativo (por ejemplo, para inicialización del programa)
  11. Interoperabilidad entre lenguajes de programación incluyendo mecanismos de paso de parámetros y representación de datos:
    1. Big endian, little endian
    2. Distribución de datos de tipos de datos compuestos como arreglos
  12. Otras características comunes de las máquinas virtuales, como carga de clases (class loading), hilos (threads) y verificación de seguridad
  13. Sandboxing

Aprendizaje esperado (Learning Outcomes)

  1. Discutir beneficios y limitaciones de la gestión automática de memoria [Debatir]
  2. Explicar el uso de metadatos en representaciones en tiempo de ejecución de objetos y registros de activación, como punteros de clase, longitudes de arreglo, direcciones de retorno y punteros de marco (frame pointers) [Explicar]
  3. Comparar y contrastar asignación estática vs asignación basada en pila vs asignación basada en montón de elementos de datos [Comparar]
  4. Explicar por qué algunos elementos de datos no pueden desasignarse automáticamente al final de una llamada a procedimiento/método (necesidad de recolección de basura) [Explicar]
  5. Discutir ventajas, desventajas y dificultades de la compilación justo a tiempo y la recompilación dinámica [Debatir]
  6. Discutir el uso del sandboxing en código móvil [Debatir]
  7. Identificar los servicios proporcionados por los sistemas en tiempo de ejecución de lenguajes modernos [Analizar]

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