Gestion de la mémoire : le ramasse-miettes
|
|
- Carole St-Louis
- il y a 6 ans
- Total affichages :
Transcription
1 Gestion de la mémoire : le ramasse-miettes DLP : Développement d un langage de programmation Master STL, UPMC Antoine Miné Année Cours 10 1er décembre 2015 Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 1 / 25
2 Types de mémoire Trois grandes zones de mémoire accessibles à un programme : zone des données globales : variables globales et static, constantes ; taille et structure fixées au démarrage (segments.data et.bss du binaire) zone de la pile : variables locales, avec allocation implicite ; allocation explicite également possible (alloca en C) libération automatique au retour de fonction ; libération toujours dans l ordre inverse de l allocation ; zone du tas : allocation explicite, par malloc en C ; libération explicite, par free en C ; ordre arbitraire des allocations et libérations. Et quelques fonctions plus exotiques, spécifiques à certains systèmes, e.g., mmap en C. Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 2 / 25
3 Utilisation du tas L allocation dans le tas est utile quand : la quantité de mémoire nécessaire n est pas connue a priori ; exemple : charger un fichier complet en mémoire un bloc mémoire alloué dans une fonction doit survivre au retour de fonction. exemple : création de listes chaînées, d objets Problème : quand libérer la mémoire? Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 3 / 25
4 Exemple de structure de tas dynamique chaque bloc contient une en-tête : taille (en mots machine w) et nature du bloc (libre, alloué) ; free pointe sur une liste chaînée de zones libres ; (nécessaire car les zones non-allouées ne sont pas forcément contiguës après un free) malloc renvoie l adresse suivant l en-tête. (l en-tête est maquée au programme client) Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 4 / 25
5 Dangers de la gestion manuelle du tas Dangers de la libération manuelle avec free : fuites de mémoire : oublier de libérer des blocs mémoire = la mémoire est saturée, les allocations futures échouent ; pointeurs dans le vide! : un bloc est libéré, mais il reste des pointeurs sur ce bloc = un accès a ces pointeurs est une erreur. Effets possibles : double libération ; conflit avec un bloc réalloué ; vecteur d attaque pour les malware. Les conséquences de ces erreurs sont imprévisibles ; et peuvent se manifester bien après l erreur proprement dite. Avantage : contrôle total sur la gestion de la mémoire. utile dans des systèmes contraints en mémoire ou en temps d exécution, comme les systèmes embarqués Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 5 / 25
6 Libération automatique de mémoire Principe : Un bloc est vivant si il est accessible par les variables locales ou globales du programme. (directement ou en suivant un nombre arbitraire de pointeurs) Un bloc est libéré automatiquement quand le système détecte qu il n est plus vivant. Deux méthodes : le comptage de références ; le traçage des références. Toujours conservatif : ne libère jamais un bloc vivant ; mais peut oublier de libérer un bloc non vivant : à tout jamais (à éviter!) jusqu au prochain cycle de libération (à limiter). Note : si le programme laisse une variable globale pointer vers un bloc, celui ne pourra jamais être libéré, même si le bloc n est jamais utilisé! Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 6 / 25
7 Méthode 1 : comptage de références Comptage de références : reference counting. Exemples : nombreuses bibliothèques C, langages Perl et Objective-C. Principe : ajouter à l en-tête un compteur ; représente le nombre exact de pointeurs vers ce bloc ; quand le compteur atteint zéro, le bloc est libéré ; = nécessité de maintenir ce compteur : quand un bloc est alloué ; quand une variable pointeur globale ou locale change de valeur ; quand un champ pointeur d un bloc change de valeur ; donc également quand un bloc est libéré. Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 7 / 25
8 Exemple de comptage de références Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 8 / 25
9 Exemple de comptage de références b = alloc(); = E initialisation du compteur de E à 1 Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 8 / 25
10 Exemple de comptage de références b->i = a->g; incrémentation du compteur de D (b->i après initialisation) Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 8 / 25
11 Exemple de comptage de références a->f = b ; décrémentation du compteur de B (a->f avant affectation) incrémentation du compteur de E (a->f après affectation) Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 8 / 25
12 Exemple de comptage de références libération de B décrémentation du compteur de C (B->h avant libération) libérations en cascade, par exemple de toute une liste chaînée! Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 8 / 25
13 Exemple de comptage de références libération de C Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 8 / 25
14 Limitation du comptage de références : cycles Liste chaînée simple. Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 9 / 25
15 Limitation du comptage de références : cycles a -> next -> next -> next = a; création d un cycle = incrémentation du compteur de A Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 9 / 25
16 Limitation du comptage de références : cycles a = NULL; libération de a = décrémentation du compteur de A Le cycle n est plus vivant (plus accessible depuis les variables du programme) mais il ne sera jamais libéré (compteurs 1) = fuite de mémoire! Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 9 / 25
17 Comptage de références : résumé Avantage : simple à programmer, y compris dans une bibliothèque. (pas besoin d un support spécifique dans le langage) Inconvénients : sur-coût en mémoire (un mot pour le compteur) et en temps ; Toutefois, le coût en temps est réparti sur la durée du programme. De nombreux travaux de recherche sur comment éviter des paires incrémentation/décrémentation inutiles. le programmeur doit faire attention à mettre à jour le compteur ; fuites de mémoire pour les structures circulaires. Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 10 / 25
18 Méthode 2 : traçage de références Traçage de références : tracing garbage collector. Exemples : Java, OCaml,... et ILP! Principe : calcul exact des blocs accessibles par le programme à un instant donné ; utilisation d un parcours de graphe (en profondeur généralement) ; un seul bit supplémentaire est généralement nécessaire ; (dans l en-tête, le bit est partagé la taille pour économiser un mot) libération des blocs non accessibles, ou déplacement des blocs accessibles, ou un mélange des deux (nombreuses variantes) Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 11 / 25
19 Méthode 2.1 : marquage et balayage (1/3) Algorithme mark-and-sweep. Phase de marquage : départ des racines : variables globales, pile des locales, registres. en jaune sur le dessin Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 12 / 25
20 Méthode 2.1 : marquage et balayage (2/3) Algorithme mark-and-sweep. Phase de marquage : marquage blanc noir (bleu jaune sur le dessin... ) ; un parcours en profondeur limite la mémoire annexe nécessaire. Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 13 / 25
21 Méthode 2.1 : marquage et balayage (3/3) Algorithme mark-and-sweep. Phase de balayage : parcours séquentiel de tous les blocs du tas ; (de haut en bas, dans l ordre des adresses) les blocs blancs sont libérés ; (phase de consolidation pour fusionner les libres adjacents) les blocs noirs sont remis à blanc (en prévision du prochain balayage). Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 14 / 25
22 Marquage et balayage : résumé Avantages : libère également les cycles non accessibles ; efficace en mémoire (un bit au lieu d un mot). Inconvénients (et leur remède) : l algorithme interrompt le programme pour une longue durée = une version incrémentale est possible ; la libération laisse la mémoire fragmentée : l allocation de gros bloc devient impossible ; la vitesse d accès en mémoire en souffre ; (les caches mémoire du microprocesseur sont moins efficaces) = possibilité de compacter le tas ; nécessité de re-parcourir tout le tas y compris les blocs libres (lors du balayage) = méthode par copie possible. Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 15 / 25
23 Traçage de références incrémental But : éviter les pauses trop longues dans le programme. Principe : n effectuer qu une partie du travail à la fois ; interrompre le programme souvent, mais pour peu de temps ; (sacrifier un peu en vitesse pour gagner beaucoup en latence) éventuellement, effectuer le traçage de référence en concurrence avec le programme, dans une thread séparée. Difficulté : Le graphe de la mémoire évolue lors du parcours! des nouveaux blocs sont alloués ; solution : les noircir dès leur création pour les marquer accessible des blocs déjà parcours sont modifiés = des blocs accessibles peuvent être manqués ; solution : garder une trace de toutes les affectations entre deux tranches de travail Particulièrement difficile en cas d accès concurrents par d autres threads! = l algorithme est un peu plus complexe, mais c est possible et utile! Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 16 / 25
24 Compactage du tas = pendant le balayage, les blocs libres sont remontés ; la zone libre suit la zone allouée augmente la localité des données ; il est nécessaire de mettre à jour les pointeurs vers les blocs alloués. (nécessite de la mémoire supplémentaire) Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 17 / 25
25 Méthode 2.2 : arrêt et copie (1/3) Algorithme stop-and-copy. Deux tas sont utilisés : un tas A où les blocs sont alloués séquentiellement ; (pas de trou, la zone libre est à la fin) un tas B vide. Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 18 / 25
26 Méthode 2.2 : arrêt et copie (2/3) Algorithme stop-and-copy. Lors du parcours, les blocs trouvés accessibles sont directement copiés dans le tas vide B ; les pointeurs vers ces blocs sont mis à jour. Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 19 / 25
27 Méthode 2.2 : arrêt et copie (3/3) Algorithme stop-and-copy. À la fin, le nouveau tas B est utilisé, l ancien tas A est vidé. Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 20 / 25
28 Arrêt et copie : résumé Avantages : garde le tas compact à tout moment ; l allocation se réduit à incrémenter un pointeur ; (inutile de parcourir une liste de blocs libres : il n y a qu une zone libre contiguë) pas de balayage : seuls les blocs accessibles sont traversés. Inconvénients : nécessite deux tas, donc plus de mémoire ; une copie des blocs accessibles est nécessaire. Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 21 / 25
29 Traçage de références générationel : exemple d OCaml Principe : utiliser plusieurs algorithmes en même temps. Exemple : gestion mémoire en OCaml un tas mineur, petit ( taille du cache, 2 MB par défaut) ; contigu : allocation par incrémentation de pointeur ; génération récente ; un tas majeur, gros (peut remplir toute la mémoire) ; fragmenté : allocation par liste chaînée de blocs libres ; génération ancienne ; une allocation du programme se fait dans le tas mineur ; quand le tas mineur est plein, une tranche de travail est faite : les blocs accessibles du tas mineur sont copiés vers le tas majeur ; le tas mineur est complètement vidé ; une tranche de marquage ou de balayage du tas majeur est effectué. Justification : Niveau élevé d allocation de petits blocs de faible durée de vie = ils ne sont jamais promus dans le tas majeur. Les JVM de Java utilisent des techniques similaires, en plus complexe. Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 22 / 25
30 Marquage exact, marquage conservatif Deux types de langages : 1 contrôle total de l environnement sur les références ; exemples : OCaml, Java ; 2 pas de contrôle sur les références ; exemples : C, C++ = rien ne distingue en mémoire un pointeur d une autre valeur. Dans ce dernier cas, le marquage doit être conservatif. Toute valeur égale à l adresse d un bloc est considérée comme une référence vers ce bloc. (même si il s agit d un entier qui est, par hasard, égal à l adresse d un bloc) = peut considérer trop de blocs accessibles. Un traçage conservatif est aussi limité : à une méthode par balayage, sans copie ou déplacement possible ; pas non plus de compactage possible. Il ne faut pas changer la valeur d un entier sous pretexte qu il a été confondu avec une référence! Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 23 / 25
31 Exemple : Boehm GC Boehm GC : tracage de références pour C par marquage et balayage ; incrémental ; conservatif ; considère toutes les variables locales et les globales du programme comme des racines (parcours la pile et les segments.data et.bss) ; très facile à intégrer à un programme C existant même si il ne prend aucune précaution! (pas de restriction sur les structures utilisées, sur la position des pointeurs ou des racines) = le code compilé ILP utilise (en option) Boehm GC. Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 24 / 25
32 Interface Boehm GC ILP ilp.h #ifdef WITH_GC #include "include/gc.h" #define ILP_START_GC GC_init() #define ILP_MALLOC GC_malloc #else #define ILP_START_GC #define ILP_MALLOC malloc #endif int { } code généré main(int argc, char *argv[]) ILP_START_GC;... Très simple d utilisation ; il suffit de : se lier à la bibliothèque Boehm GC (option +gc de compilethenrun.sh) ; initialiser la bibliothèque (GC_init()) ; remplacer malloc par GC_malloc (et ne jamais faire free sur ces blocs). Cours 10 Gestion de la mémoire : le ramasse-miettes Antoine Miné p. 25 / 25
Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués
International Journal of Engineering Research and Development e-issn: 2278-067X, p-issn: 2278-800X, www.ijerd.com Volume 7, Issue 5 (June 2013), PP.99-103 Solution A La Gestion Des Objets Java Pour Des
Plus en détail1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)
1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d
Plus en détailIntroduction au langage C
Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les
Plus en détailJava - la plateforme
Java - la plateforme Java la plateforme Java? VM GC JIT Java Aujourd'hui 3 environnements d'exécutions différents Java ME (Micro Edition) pour PDA, téléphone Android (Java SE moins certain paquetages)
Plus en détailDE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51
DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de
Plus en détailGestion hybride de la mémoire dynamique dans les systèmes Java temps-réel
Gestion hybride de la mémoire dynamique dans les systèmes Java temps-réel Nicolas Berthier Stage de Magistère M encadré par Christophe Rippert et Guillaume Salagnac Laboratoire Vérimag Septembre 007 Résumé
Plus en détailInfo0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java
Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique
Plus en détailConventions d écriture et outils de mise au point
Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette
Plus en détailas Architecture des Systèmes d Information
Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes
Plus en détailStructure fonctionnelle d un SGBD
Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert
Plus en détailLicence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter
Plus en détailMachines Virtuelles. et bazard autour. Rémi Forax
Machines Virtuelles et bazard autour Rémi Forax Avant propos Quelle est la complexité du code ci-dessous? Avec un processeur à 1Ghz, combien de temps le calcul prendra t'il? public static void main(string[]
Plus en détailIntroduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf
Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations
Plus en détailTP3 : Manipulation et implantation de systèmes de fichiers 1
École Normale Supérieure Systèmes et réseaux Année 2012-2013 TP3 : Manipulation et implantation de systèmes de fichiers 1 1 Répertoire de travail courant Le but de l exercice est d écrire une commande
Plus en détail6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr
6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr Interface d un SGF Implémentation d un SGF Gestion de la correspondance entre la structure logique et la structure
Plus en détailPremiers Pas en Programmation Objet : les Classes et les Objets
Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.
Plus en détailCours d initiation à la programmation en C++ Johann Cuenin
Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................
Plus en détailIntroduction aux Machines Virtuelles avec VMKit
Introduction aux Machines Virtuelles avec Ingénieur :, Responsables : Gaël Thomas, Gilles Müller EQUIPE REGAL LIP6 INRIA (Paris/France) un substrat de machine virtuelle : a substrate for Managed Runtime
Plus en détail1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.
1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this
Plus en détailCours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation
Plus en détailDerrière toi Une machine virtuelle!
Derrière toi Une machine virtuelle! Yann-Gaël Guéhéneuc guehene@emn.fr École des Mines de Nantes, France Object Technology International Inc., Canada D où ça vient? Calculatrice Machine de Turing 1936
Plus en détailAtelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques
Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques CTIA04 Page 1 1. Les types de données sous S7 300 Il existe plusieurs types de données utilisées pour la programmation
Plus en détailLe prototype de la fonction main()
Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme
Plus en détailMaster IMA - UMPC Paris 6 RDMM - Année 2009-2010 Fiche de TP
Master IMA - UMPC Paris 6 RDMM - Année 2009-200 Fiche de TP Préliminaires. Récupérez l archive du logiciel de TP à partir du lien suivant : http://www.ensta.fr/~manzaner/cours/ima/tp2009.tar 2. Développez
Plus en détailArchitecture des ordinateurs
Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?
Plus en détailPlan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7
Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin
Plus en détailLA mémoire principale est le lieu où se trouvent les programmes et les
Chapitre 9 Gestion de la mémoire LA mémoire principale est le lieu où se trouvent les programmes et les données quand le processeur les exécute. On l oppose au concept de mémoire secondaire, représentée
Plus en détailProgrammation C. Apprendre à développer des programmes simples dans le langage C
Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités
Plus en détail1 Mesure de la performance d un système temps réel : la gigue
TP TR ENSPS et MSTER 1 Travaux Pratiques Systèmes temps réel et embarqués ENSPS ISV et Master TP1 - Ordonnancement et communication inter-processus (IPC) Environnement de travail Un ordinateur dual-core
Plus en détailAlgorithmique et Programmation, IMA
Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions
Plus en détailI. Introduction aux fonctions : les fonctions standards
Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons
Plus en détailGénéralités sur le Langage Java et éléments syntaxiques.
Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...
Plus en détailCours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr
. Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le
Plus en détailLogiciel Libre Cours 3 Fondements: Génie Logiciel
Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/
Plus en détailEPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE
EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0
Plus en détailÉléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if
Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike
Plus en détailCompression de Données - Algorithme de Huffman Document de Conception
ROLLET Samuel SALLE Jennifer Compression de Données - Algorithme de Huffman Document de Conception Projet d'algorithmique et Structure des Données 1 SOMMAIRE 1. Domaine d application....4 1.1 Objectifs
Plus en détailINITIATION AU LANGAGE C SUR PIC DE MICROSHIP
COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par
Plus en détailTravaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation
Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des
Plus en détailCours 1 : Introduction Ordinateurs - Langages de haut niveau - Application
Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un
Plus en détailChapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping
Chapitre V : La gestion de la mémoire Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Introduction Plusieurs dizaines de processus doivent se partager
Plus en détailProcessus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace
Processus 1) Contexte 2) Modèles de Notion de Points de vue Modèle fourni par le SX Opérations sur les 3) Gestion des Représentation des Opérations 4) Ordonnancement des Niveaux d ordonnancement Ordonnancement
Plus en détailLangage C. Patrick Corde. Patrick.Corde@idris.fr. 22 juin 2015. Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289
Langage C Patrick Corde Patrick.Corde@idris.fr 22 juin 2015 Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289 Table des matières I 1 Présentation du langage C Historique Intérêts
Plus en détailLa JVM. La machine virtuelle Java. La JVM. La JVM
La machine virtuelle Java Historique et rappels Organisation mémoire de la JVM Le garbage collector Le bytecode, la machine à pile. Les threads Suivi, tracé, optimisation d un programme Java JVM embarquées
Plus en détailGestion de la mémoire
433 43 3 Gestion de la mémoire + 1. Qu'est-ce que la mémoire? - Définitions, exemples 2. Allocation contiguë en mémoire - Partitions de taille fixe, de taille variable 3. Pagination et mémoire virtuelle
Plus en détailJava Licence Professionnelle CISII, 2009-10
Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation
Plus en détailProgrammation système en C/C++
Programmation système en C/C++ Jean-Baptiste Vioix (jb.vioix@free.fr) LE2I - ENESAD http://jb.vioix.free.fr 1-41 Programmation en C/C++ sous Unix Il existe des très nombreux outils de développement sous
Plus en détailLe langage C. Séance n 4
Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de
Plus en détailCours d Algorithmique et de Langage C 2005 - v 3.0
Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris
Plus en détailCours Programmation Système
Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février
Plus en détailLicence Sciences et Technologies Examen janvier 2010
Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.
Plus en détailGestion de la mémoire sous Java Composition et fonctionnement -- Transcription d'un sujet de webcast
Knowledge-on-Demand HP-UX 11i : découvrez, auprès de nos laboratoires, les meilleures pratiques pour optimiser vos performances Série pour développeurs Gestion de la mémoire sous Java Composition et fonctionnement
Plus en détailClasses et Objets en Ocaml.
Classes et Objets en Ocaml. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/2/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/2/ Cours Exercices Slide 1 1. Objets 2.
Plus en détailChapitre 10 Arithmétique réelle
Chapitre 10 Arithmétique réelle Jean Privat Université du Québec à Montréal INF2170 Organisation des ordinateurs et assembleur Automne 2013 Jean Privat (UQAM) 10 Arithmétique réelle INF2170 Automne 2013
Plus en détailBases de programmation. Cours 5. Structurer les données
Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et
Plus en détailSYSTÈME DE GESTION DE FICHIERS
SYSTÈME DE GESTION DE FICHIERS - DISQUE 1 Les couches logiciels réponse requête Requêtes E/S Système E/S Pilote E/S Interruptions utilisateur traitement S.E. commandes S.E. S.E. matériel Contrôleur E/S
Plus en détailLes algorithmes de base du graphisme
Les algorithmes de base du graphisme Table des matières 1 Traçage 2 1.1 Segments de droites......................... 2 1.1.1 Algorithmes simples.................... 3 1.1.2 Algorithmes de Bresenham (1965).............
Plus en détailTable des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction
PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés
Plus en détailGestion Projet. Cours 3. Le cycle de vie
Gestion Projet Cours 3 Le cycle de vie Sommaire Généralités 3 Séquentiel 7 Itératif/Incrémental 17 Extreme Programming 22 Que choisir? 29 Etats Transverse 33 Cours 3 2006-2007 2 Généralités Cours 3 2006-2007
Plus en détailSystèmes d Exploitation - ENSIN6U3. Aix-Marseille Université
Systèmes d Exploitation - ENSIN6U3 Gestion de la mémoire Leonardo Brenner 1 Jean-Luc Massat 2 1 Leonardo.Brenner@univ-amu.fr 2 Jean-Luc.Massat@univ-amu.fr Aix-Marseille Université Faculté des Sciences
Plus en détailClaude Delannoy. 3 e édition C++
Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.
Plus en détailPrénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004
Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)
Plus en détailMachines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40
Machines virtuelles Brique ASC Samuel Tardieu sam@rfc1149.net École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles La compilation peut
Plus en détailSYSTÈME DE GESTION DE FICHIERS SGF - DISQUE
SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE C.Crochepeyre MPS_SGF 2000-20001 Diapason 1 Les couches logiciels réponse SGF requête matériel matériel Requêtes E/S Système E/S Pilote E/S Interruptions Contrôleur
Plus en détailProgrammation C++ (débutant)/instructions for, while et do...while
Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de
Plus en détailIV- Comment fonctionne un ordinateur?
1 IV- Comment fonctionne un ordinateur? L ordinateur est une alliance du hardware (le matériel) et du software (les logiciels). Jusqu à présent, nous avons surtout vu l aspect «matériel», avec les interactions
Plus en détailCours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java
Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page
Plus en détailIntroduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université
Plus en détailLe langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie
Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis
Plus en détailI00 Éléments d architecture
I00 I Exemples d ordinateur Pour les informaticiens, différentes machines de la vie courante sont des ordinateurs : par exemple les ordinateurs portables, les ordinateurs fixes, mais aussi les supercalculateurs,
Plus en détailUE C avancé cours 1: introduction et révisions
Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple
Plus en détailLier Erlang avec d autres langages de programmation
16 Lier Erlang avec d autres langages de programmation Les logiciels actuels, quelle que soit leur taille, sont souvent écrits dans plusieurs langages de programmation. Généralement, les pilotes de périphériques
Plus en détailTP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface
Plus en détailArchitecture des ordinateurs
Architecture des ordinateurs Cours 7 17 décembre 2012 Archi 1/1 Fonctions, suite et fin Archi 2/1 Rappel Forme générale d un sous-programme (fonction) : etiquette sousprogramme: push ebp ; empile la valeur
Plus en détailInitiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr
Initiation à JAVA et à la programmation objet raphael.bolze@ens-lyon.fr O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation
Plus en détail3IS - Système d'exploitation linux - Programmation système
3IS - Système d'exploitation linux - Programmation système 2010 David Picard Contributions de : Arnaud Revel, Mickaël Maillard picard@ensea.fr Environnement Les programmes peuvent être exécutés dans des
Plus en détailStructure d un programme et Compilation Notions de classe et d objet Syntaxe
Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types
Plus en détailInitiation. àl algorithmique et à la programmation. en C
Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,
Plus en détailL exclusion mutuelle distribuée
L exclusion mutuelle distribuée L algorithme de L Amport L algorithme est basé sur 2 concepts : L estampillage des messages La distribution d une file d attente sur l ensemble des sites du système distribué
Plus en détailWEA Un Gérant d'objets Persistants pour des environnements distribués
Thèse de Doctorat de l'université P & M Curie WEA Un Gérant d'objets Persistants pour des environnements distribués Didier Donsez Université Pierre et Marie Curie Paris VI Laboratoire de Méthodologie et
Plus en détailConditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit.
Proposition de stage de BAC+4 ou BAC+5 Pro ou Recherche Etude comparative des outils de vérification d'algorithmes parallèles Logiciels (LSL), localisé à Palaiseau (Essonne), développe les outils d'aide
Plus en détailINTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores
INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN
Plus en détailUE Programmation Impérative Licence 2ème Année 2014 2015
UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative
Plus en détailIntroduction à la Programmation Parallèle: MPI
Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4
Plus en détailDG-ADAJ: Une plateforme Desktop Grid
DG-ADAJ: Une plateforme pour Desktop Grid Olejnik Richard, Bernard Toursel Université des Sciences et Technologies de Lille Laboratoire d Informatique Fondamentale de Lille (LIFL UMR CNRS 8022) Bât M3
Plus en détailLES TYPES DE DONNÉES DU LANGAGE PASCAL
LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.
Plus en détailProgrammation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire
Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS CCS Sommaire Généralités sur le langage. 2 Structure d un programme en C.. 3 Les constantes et équivalences.. 4 Les variables...
Plus en détailPlan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.
global Outils de développement et compilation IDE, GCC/Clang, ASAN, perf, valgrind, GDB Timothée Ravier LIFO, INSA-CVL, LIPN 1 re année cycle ingénieur STI 2013 2014 1 / 36 Objectifs des outils présentés
Plus en détailAnalyse de performance, monitoring
Analyse de performance, monitoring Plan Principes de profilage Projet TPTP dans Eclipse Utilisation des profiling tools de TPTP Philippe Collet Master 1 Informatique 2009-2010 http://deptinfo.unice.fr/twiki/bin/view/minfo/gl
Plus en détailProgrammation Classique en langage C
DI GALLO Frédéric Programmation Classique en langage C Cours du Cycle d Approfondissement CNAM ANGOULEME 2000-2001 DI GALLO Frédéric Page 1 01/04/01 PROGRAMMATION CLASSIQUE : LANGAGE C DI GALLO Frédéric
Plus en détailGestion mémoire et Représentation intermédiaire
Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,
Plus en détailSystemes d'exploitation des ordinateurs
! " #$ % $ &' ( $ plan_ch6_m1 Systemes d'exploitation des ordinateurs Conception de Systèmes de Gestion de la Mémoire Centrale Objectifs 1. Conception de systèmes paginés 2. Conception des systèmes segmentés
Plus en détailParallélisme et Répartition
Parallélisme et Répartition Master Info Françoise Baude Université de Nice Sophia-Antipolis UFR Sciences Département Informatique baude@unice.fr web du cours : deptinfo.unice.fr/~baude Septembre 2009 Chapitre
Plus en détailSanity Check. bgcolor mgcolor fgcolor
Sanity Check bgcolor mgcolor fgcolor 0 1 2 3 4 5 6 7 8 9 10 Compilation pour cibles hétérogènes: automatisation des analyses, transformations et décisions nécessaires, François Irigoin et Ronan Keryell
Plus en détailProgrammation en Java IUT GEII (MC-II1) 1
Programmation en Java IUT GEII (MC-II1) 1 Christophe BLANC - Paul CHECCHIN IUT Montluçon Université Blaise Pascal Novembre 2009 Christophe BLANC - Paul CHECCHIN Programmation en Java IUT GEII (MC-II1)
Plus en détailProbabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12
Probabilités. I - Rappel : trois exemples. Exemple 1 : Dans une classe de 25 élèves, il y a 16 filles. Tous les élèves sont blonds ou bruns. Parmi les filles, 6 sont blondes. Parmi les garçons, 3 sont
Plus en détailCours de C. Allocation dynamique. Sébastien Paumier
Cours de C Allocation dynamique Sébastien Paumier paumier@univ-mlv.fr Illustrations provenant du site http://tux.crystalxp.net/ 1 Les pointeurs pointeur=adresse mémoire+type type* nom; nom pointe sur une
Plus en détailProgrammation C. J.-F. Lalande. 15 novembre 2012
Programmation C J.-F. Lalande novembre 0 Ce cours est mis à disposition par Jean-François Lalande selon les termes de la licence Creative Commons Attribution - Pas d Utilisation Commerciale - Partage à
Plus en détailÉvaluation et optimisation de requêtes
Évaluation et optimisation de requêtes Serge Abiteboul à partir de tranparents de Philippe Rigaux, Dauphine INRIA Saclay April 3, 2008 Serge (INRIA Saclay) Évaluation et optimisation de requêtes April
Plus en détailLES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN
LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN Les contenues de ce document sont la propriété exclusive de la société REVER. Ils ne sont transmis qu à titre d information et ne peuvent en aucun cas
Plus en détail