07 - Mémoire. Morgan Barbier morgan.barbier@unicaen.fr L2 S4 2012/2013



Documents pareils
Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

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

Partie 7 : Gestion de la mémoire

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Programmation C. Apprendre à développer des programmes simples dans le langage C

Gestion de la mémoire

Architecture des ordinateurs

Introduction aux SGBDR

Java - la plateforme

LA mémoire principale est le lieu où se trouvent les programmes et les

Bases de programmation. Cours 5. Structurer les données

Métriques de performance pour les algorithmes et programmes parallèles

Conventions d écriture et outils de mise au point

SGM. Master S.T.S. mention informatique, première année. Isabelle Puaut. Septembre Université de Rennes I - IRISA

Gestion hybride de la mémoire dynamique dans les systèmes Java temps-réel

Systemes d'exploitation des ordinateurs

GESTION DE LA MEMOIRE

Système de Gestion de Fichiers

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Informatique Générale

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

SYSTÈME DE GESTION DE FICHIERS

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Machines Virtuelles. et bazard autour. Rémi Forax

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Représentation des Nombres

SYS MEM. Gestion de la mémoire. Table des matières. IUT - Département Informatique. ASR2-Système. 1.1 Motivation

1. Systèmes d entrée/sortie 2. Systèmes de fichiers 3. Structure de mémoire de masse (disques)

Structure fonctionnelle d un SGBD

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Algorithme. Table des matières

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Cours d initiation à la programmation en C++ Johann Cuenin

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Compilation (INF 564)

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

La JVM. La machine virtuelle Java. La JVM. La JVM

UE Programmation Impérative Licence 2ème Année

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

La mémoire. Un ordinateur. L'octet. Le bit

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Introduction aux Machines Virtuelles avec VMKit

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Cours d Algorithmique et de Langage C v 3.0

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

IV- Comment fonctionne un ordinateur?

L informatique en BCPST

Licence Sciences et Technologies Examen janvier 2010

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours A7 : Temps Réel

Chapitre 2. Classes et objets

Plan global. Programmation système II. Socket du domaine UNIX. Plan. Socket UNIX, Terminaux, Async IO, Mémoire, ELF.

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Cours Programmation Système

Rappels d architecture

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Cours Informatique 1. Monsieur SADOUNI Salheddine

Limitations of the Playstation 3 for High Performance Cluster Computing

Cours de Systèmes d Exploitation

TD : Codage des images

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

La technologie Java Card TM

LIVRE BLANC Pratiques recommandées pour l utilisation de Diskeeper sur les réseaux SAN (Storage Area Networks)

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Logiciel de Base. I. Représentation des nombres

Conversion d un entier. Méthode par soustraction

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Cours de Système : Gestion de Fichiers

Éléments d'architecture des ordinateurs

Cours 1 : La compilation

1 Description générale de VISFIELD

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Logiciel de base. Première année ENSIMAG

Architecture matérielle des systèmes informatiques

Codage d information. Codage d information : -Définition-

CH.3 SYSTÈMES D'EXPLOITATION

IN SYSTEM. Préconisations techniques pour Sage 100 Windows, MAC/OS, et pour Sage 100 pour SQL Server V16. Objectif :

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Initiation à la sécurité

UE C avancé cours 1: introduction et révisions

Éléments de programmation et introduction à Java

Initiation. àl algorithmique et à la programmation. en C

Virtualisation logicielle De la machine réelle à la machine virtuelle abstraite

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

LES DECIMALES DE π BERNARD EGGER

La carte à puce. Jean-Philippe Babau

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Transcription:

07 - Mémoire Morgan Barbier morganbarbier@unicaenfr L2 S4 2012/2013

1 Introduction

Problèmatique Multitâches : L OS moderne permet d exécuter plusieurs tâches en même temps Chacune de ses tâches possèdent son code à éxécuter, ses variables Gestion de la mémoire : Rendre disponible la mémoire de manière effective et sécurisée Remarque : Le chargement de l OS se trouve également situé dans cet espace 1 Introduction 1 / 33

Distribution : Une distribution est un ensemble de logiciels formant un tout cohérent et prêts à installer Mémoire Morte ROM Mémoire vive RAM Logiciels User space Noyau Kernel space 1 Introduction 2 / 33

Gestionnaire de mémoire Rôles : Allouer et désallouer Gérer le placement de la mémoire, pour optimiser l espace ou le temps d éxécution Gérer la correspondance des adresses logiques et physiques Assurer la protection des données 1 Introduction 3 / 33

Techniques utilisées Segmentation : Subdivision de l espace selon la nature des variables Pagination : Subdivision de l espace d adressage en petite taille évite la fragmentation générale ; favorise la fragmentation interne Swapping : Utilisation de la mémoire secondaire (disque) augmente l espace ; utilise une mémoire plus lente 1 Introduction 4 / 33

Segmentation uid / gid euid / egid ordonnancement files desciptors signaux env, args stack heap data 0x00000000 text 0x7FFFFFFF 1 Introduction 5 / 33

2 Données et mémoire

Encodage Fait : La mémoire informatique fonctionne sous forme de bits 0 ou 1 (b) Ces bits sont groupés par 8 pour former des octets (bytes an anglais, B) Alignement et mots : L espace élémentaire (appelé mot) varie selon le processeur (32, 64, 128, bits) Les données doivent être alignées en mémoire 2 Données et mémoire 6 / 33

Nombres Représentation : Il existe trois grandes représentation des nombres en mémoire : Entier non-signé: l écriture en binaire standard ; Entier signé: écriture en complément à 2; En virgule flottante: écriture mantisse / exposant Endianess : dans le cas où l on manipule un entier de taille plus grande qu un mot mémoire, on peut le décomposer en plusieurs blocs qui sont rangés : poids fort en tête : big endian (ex : Motorola,SPARC) ; poids faible en tête : small endian (ex : x86) ; bizarrement : Middle-endian 2 Données et mémoire 7 / 33

Chaînes de caractères Encodage : Les chaînes de caractères sont transformées en suite d entiers à l aide d une table de codage de caractère Il en existe plusieurs : ascii: l historique ; latin-1: pour les langes ouest-européennes (avec latin-9) ; UTF-8: très général Le codage peut se faire en taille fixe ou en taille variable Une fois transformée, la chaîne peut être stockée : avec un délimiteur de fin : \0 (ex : C, python, ) ; en indiquant avant la longueur de la chaîne (ex : pascal, fortran) 2 Données et mémoire 8 / 33

Autres Règles : Toutes les objets sont manipulés en binaire dans l ordinateur Pointeur : Il est possible également de stocker un entier qui indique une adresse en mémoire On parle alors de pointeur 2 Données et mémoire 9 / 33

3 Organisation de la mémoire

Rappel sur les processus uid / gid euid / egid ordonnancement files desciptors signaux env, args stack heap data 0x00000000 text 0x7FFFFFFF 3 Organisation de la mémoire (mémoire et processus) 10 / 33

Allocation sur la pile Utilisation : La pile (stack) est utilisée pour stocker les arguments lors de l appel d une fonction et le résultat de la fonction C est également là que se trouvent les variables locales Allocation : En C, on peut allouer de la mémoire sur la pile à l aide de void * alloca(size_t size) Libération : Cette mémoire est automatiquement libérée lors de la sortie d une fonction Attention : Cette fonction n est pas POSIX 3 Organisation de la mémoire (mémoire et processus) 11 / 33

Allocation sur le tas Utilisation : La tas (heap) sert à stocker les données permanentes Allocation : En C, on peut allouer de la mémoire dans le tas à l aide de l appel (ou d une de ses variantes) : void * malloc(size_t size) Libération : Pour libérer un objet de cette mémoire, il faut faire appel à la fonction : void free(void *ptr) sous peine de se retrouver avec des fuites de mémoires 3 Organisation de la mémoire (mémoire et processus) 12 / 33

Et sous python Sous le tapis : Sous python, toutes les opérations de mémoire sont automatiques et il n existe pas de notion de pointeur Remarque : La question de libération se pose néanmoins pour les descripteurs de fichiers ouverts 3 Organisation de la mémoire (mémoire et processus) 13 / 33

Adresses mémoires uid / gid euid / egid ordonnancement files desciptors signaux env, args stack heap data 0x00000000 text 0x7FFFFFFF Tous les processus ont une mémoire ayant des adresses entre 0 et le maximum Question : Comment faire en sorte qu ils aient chacun un espace différent? 3 Organisation de la mémoire (mémoire et processus) 14 / 33

Pagination Principe : Pour gérer la mémoire, on divise en blocs élémentaires de taille importante : les pages Taille : Actuellement, la taille usuelle des pages est de 4Ko On peut l obtenir à l aide de la commande getconf PAGESIZE $ getconf PAGESIZE 4096 La taille des pages est un compromis entre l espace éventuellement gaspillé dans chaque page et l espace nécessaire pour gérer les pages 3 Organisation de la mémoire (mémoire et processus) 15 / 33

Segmentation Segmentation : Chaque adresse est divisé en deux parties : segment offset Le segment est transformé à l aide d une table des pages en adresse réelle par le système d exploitation Matériel : Ce processus est accéléré par la présence d une puce dédié à ce travail : la MMU (memory management unit) 3 Organisation de la mémoire (mémoire et processus) 16 / 33

Protection Droits : Comme dans tous les cas précédents, chaque page de mémoire dispose de droits (lecture / écriture / exécution) No exec : Dans les processeurs modernes, le processeur prend en charge un mécanisme interdisant l exécution de code si la page n est pas marquée comme exécutable Randomisation : Pour protéger encore d avantage le système, il est maintenant courant d introduire une portion d aléatoire dans la position réelle en mémoire des bibliothèques ou des données afin de rendre plus difficile l utilisation frauduleuse 3 Organisation de la mémoire (mémoire et processus) 17 / 33

Rôle du système d exploitation Allocation / Libération : Le système d exploitation à la charge d allouer et de libérer les pages de mémoires à destination des processus Partage : Certaines pages peuvent être partagées entre plusieurs processus (ex : bibliothèques) Mémoire virtuelle : Il est donc courant de distinguer pour un processus : la mémoire totale utilisée VSIZE; la mémoire propre utilisé RSIZE; 3 Organisation de la mémoire (utilisation de la mémoire) 18 / 33

Méthode d allocation Principe : Le système d exploitation reçoit des demandes de mémoires / libérations Il doit alors gérer la position de ces pages dans la mémoire réelle Heuristiques : Il existe plusieurs méthodes usuelles d affectation de la mémoire : First fit: on prend le premier espace libre ; Best fit: on prend le plus petit espace libre ; Worst fit: on prend le plus grand espace libre ; Next fit: on prend l escape libre suivant 3 Organisation de la mémoire (utilisation de la mémoire) 19 / 33

Fragmentation Contiguïté : on essaie de maintenir le plus possible la contiguïté des données (l accès à des zone de mémoires contiguës est facile) Fragmentation : Si les demandes / libérations de mémoires sont étalées dans le temps, il se produit un phénomène de fragmentation: l espace libre de retrouve divisé en petits blocs répartis sur toute la mémoire Conséquences : Ce phénomène ralenti l exécution de la machine et dans certains cas peut empêcher d obtenir de la mémoire alors qu il y aurait théoriquement la place 3 Organisation de la mémoire (utilisation de la mémoire) 20 / 33

4 Cache

Présentation Problème : Il existe un compromis entre la taille de la mémoire et sa vitesse d accès Idée : Garder sous le coude une partie de la mémoire pour l avoir plus rapidement : cache Cadre : Dans cette mémoire, on mets à disposition des copies de portions de mémoire Les emplacement disponibles dans le cache sont appelés cadre 4 Cache 21 / 33

Mise en œuvre On copie la partie utile de la mémoire dans le cache Lorsque l on a besoin de mémoire : si la portion voulue est en cache, on l utilise ; sinon, on charge la portion désiré depuis la mémoire et on effectue l étape précédente (défaut de cache) Problème : Que faire lorsque tous les cadres sont occupés? 4 Cache 22 / 33

Algorithmes Solution : on libère une place dans le cache Heuristiques : Pour choisir la cadre à libérer, on peux utiliser les heuristiques suivantes : choix au hasard ; choix du plus ancien (FIFO) ; choix de celui non utilisé depuis le plus longtemps (LRU) ; choix du moins fréquemment utilisé (LFU) Il existe un algorithme optimal qui consiste à libérer le cadre qui sera réutilisé dans le futur le plus lointain Cet algorithme n est bien sur pas utilisable dans le cas de l ordinateur qui ne connaît pas l utilisation future de la mémoire 4 Cache 23 / 33

Cohérence Dirty bit : lorsque l on choix décrire en mémoire, l écriture est faite directement dans le cache et n est pas transmise à la mémoire On note alors juste que des changements on été effectués (dirty bit) Synchronisation : Les écritures sont effectuées lors de la libération du cadre Cohérence : Ce système permet de gagner en efficacité mais pose des problèmes de cohérence 4 Cache 24 / 33

Hiérarchie Efficacité des caches : En pratiques, les caches sont extrêmement efficaces De nos jours, on n en rencontre partout et il n est pas rare d avoir une chaîne de cache importante entre le processeur et la mémoire la plus lente (ex : disque dur) Compromis : La taille des caches est principalement limitée par leur coût Performance : Dans le cas où l on souhaite obtenir des performances importantes de calcul, il est important de prendre en compte le fonctionnement du cache et sa taille 4 Cache 25 / 33

5 Garbage collector

Présentation Principe de base : Normalement, le programme demande afin d obtenir de la mémoire et indique quand la mémoire est de nouveau disponible Gestion automatique : Dans certains langages (comme python) la mémoire est allouée automatiquement et libérée lorsqu elle n est plus utilisée Le mécanisme dédié à cette deuxième tâche s appelle le garbage collector (Ramasse-miettes en français) 5 Garbage collector 26 / 33

Comptage de références Une méthode simple pour déterminer quels données sont utilisées ou non est le principe du comptage de référence À la manière du système de fichier, il existe pour chaque valeur en mémoire un compteur qui indique combien de variables pointent vers cette valeur Si ce compteur atteint 0, alors la valeur n est plus d aucune utilité et peut être libérée 5 Garbage collector 27 / 33

Comptage de référence (cont) Boucle : le principal problème du comptage de référence est la présence possible de boucles Elles empêchent de récupérer des valeurs pourtant inutiles Pour contrer ce problème, le garbage collector dispose souvent d un mécanisme de recherche des boucles Fragmentation : Bien évidement, de nombreuses allocations / libérations de mémoire peuvent entraîner une fragmentation de la mémoire 5 Garbage collector 28 / 33

Mark and sweep Une deuxième grande catégorie de méthode pour collecter l espace libre est le mark and sweep Pour cela, on divise l espace en deux parties On utilise uniquement une moitié et on effectue l opération suivante : On marque toutes les parties accessibles de la mémoire (mark) ; On recopie dans l autre partie toutes les valeurs marquées en mettant à jour les liens (sweep) On recommence cette opération périodiquement 5 Garbage collector 29 / 33

Mark and sweep (cont) Avantage : Cette technique permet d éliminer tous les problèmes de fragmentation Inconvénients : En théorie, le collection s effectue par à-coup et bloque le fonctionnement du programme Il est néanmoins facile de faire un mark incrémental Il est plus délicat de le faire pour le sweep Dans tous les cas, cette technique demande de recopier de grosses quantités de données 5 Garbage collector 30 / 33

Générations Remarque : Toutes les variables n ont pas la même durée de vie Corollaire : Il faudrait avoir des fréquence différentes pour les collections selon les types de variables Solution : On divise l espace mémoire en plusieurs zones où on classe les variables selon leur âge Le GC est d autant plus fréquent que les variables sont jeunes 5 Garbage collector 31 / 33

Avantages et inconvénients d un GC Avantages : La gestion de la mémoire est automatique ; On évite la fragmentation ; La perte de temps est négligeable Inconvénients : On introduit potentiellement un lag ; La gestion n est pas optimale ; On en peut plus manipuler directement la mémoire ; C est très complexe à mettre en œuvre avec du parallélisme Ce genre de mécanisme est présent principalement dans des langages de haut-niveau dans lesquels on n a pas d accès direct à la mémoire 5 Garbage collector 32 / 33

En python Note : le GC ne fait pas partie du langage python mais dépend de l interpréteur utilisé Tuning : Il est néanmoins possible d interagir avec le GC par l intermédiaire du module gc Implémentation : Sous CPython, il existe un système de comptage par référence muni d une méthode de recherche de cycle auquel vient s ajouter un garbage collector de type mark and sweep avec 3 générations 5 Garbage collector 33 / 33