% INF7741 — Machines virtuelles % UQAM — Département d'informatique % Plan de cours — Hiver 2022 * Horaires, locaux et enseignants: * Site web du cours: Responsable(s) du cours ======================= Gagnon, Étienne M. PK-4730 Groupes: 010 Description du cours ==================== Techniques d'exécution du code-octet. Gestion et récupération automatique de la mémoire. Parallélisme et synchronisation. Profilage dynamique et systèmes d'exécution adaptatifs. Mesure de la performance. Les concepts seront illustrés à l'aide de machines virtuelles majeures à la fine pointe de la technologie. Objectif du cours ================= - Distinguer les types de machines virtuelles et en connaître les différentes utilisations; - Comprendre l'organisation interne et le fonctionnement des diverses parties d'une machine virtuelle; - Être capable d'évaluer la performance d'une machine virtuelle moderne et d'en améliorer le fonctionnement en changeant les paramètres de configuration. Contenu du cours ================ Introduction : notions de base, types de machines virtuelles. Interprétation et conversion en code binaire : techniques d'interprétation, jeux d'instructions complexes, conversion en code binaire, conversion dynamique, transfert de contrôle. Optimisation binaire dynamique : profilage, réaménagement du code, optimisation du code. Machine virtuelles de langages de haut niveau : machines virtuelles pour langages à objets, machine virtuelle Java. Implémentation des machines virtuelles de haut niveau : chargement dynamique des classes, sécurité, ramassage des miettes, interface native, synchronisation légère, émulation simple, émulation à haute performance. Machines virtuelles à conception mixte : mappage de la mémoire et des registres, code auto-midifiant et auto-référant, entrées et sorties, Transmeta Crusoe. Autres applications et utilisations des machines virtuelles. Avenues de recherche. Modalités d'évaluation ====================== Description sommaire Date Pondération ------------------------ ----------------- ------------- Résumé d'article \# 1 31 janvier 2022 10% Résumé d'article \# 2 21 février 2022 10% Plan de projet 7 mars 2022 5% Résumé d'article \# 3 21 mars 2022 10% Livrable intermédiaire 28 mars 2022 10% Résumé d'article \# 4 11 avril 2022 10% Examen 18 avril 2022 20% Présentation orale 25 avril 2022 5% Livrable final 25 avril 2022 20% - Le projet de session est un travail de recherche qui devra être approuvé par le professeur. - Le contenu de chacun des livrables devra être approuvé préalablement par le professeur. - Les travaux (i.e. résumés, plan, livrables) remis en retard auront la note zéro sauf si une entente préalable a été établie avec l'enseignant. - La qualité du français sera prise en consitération, tant dans les examens que dans les travaux pratiques (jusqu'à 10 % de pénalité). - La note finale (en lettre, A+, A, etc.) pour le trimestre sera attribuée en fonction de l'atteinte des objectifs spécifiques à travers les évaluations. La distribution des résultats dans le groupe pourrait aussi être utilisée. Aucune autre opportunité (travail supplémentaire, etc.) d'augmenter le nombre de points ne sera accordée. Médiagraphie ============ (Obligatoire) J. Smith et R. Nair - Virtual Machines, Elsevier, ISBN 0080525407 / 9780080525402, 2005. ACM Digital Library, https://dl.acm.org/, Divers articles. IEEE Xplore, https://ieeexplore.ieee.org/, Divers articles. Lecture Notes in Computer Science, Springer, https://www.springer.com/gp/computer-science/lncs, Divers articles.