INFO 2014 Fichiers et base de données

Documents pareils
Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

Structure fonctionnelle d un SGBD

TP : Gestion d une image au format PGM

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

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

Architecture des ordinateurs

Partie 7 : Gestion de la mémoire

Programmation impérative

SYSTÈME DE GESTION DE FICHIERS

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Système de Gestion de Fichiers

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Tests de performance du matériel

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Cours Informatique 1. Monsieur SADOUNI Salheddine

Technologie SDS (Software-Defined Storage) de DataCore

VMWare Infrastructure 3

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

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

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

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

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

Le langage C. Séance n 4

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


1/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. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

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

Ordinateurs, Structure et Applications

IV- Comment fonctionne un ordinateur?

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Un ordinateur, c est quoi?

Encryptions, compression et partitionnement des données

Machines virtuelles Cours 1 : Introduction

Programmation système I Les entrées/sorties

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

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

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

REALISATION d'un. ORDONNANCEUR à ECHEANCES

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Introduction au pricing d option en finance

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Architectures d implémentation de Click&DECiDE NSI

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

Capacité de mémoire Tablettes

Cours de Système : Gestion de Fichiers

Ne laissez pas le stockage cloud pénaliser votre retour sur investissement

Ladibug TM 2.0 Logiciel de présentation visuel d'image Manuel de l utilisateur - Français

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Informatique pour scientifiques hiver Plan général Systèmes d exploitation

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Introduction à la Programmation Parallèle: MPI

Optimisations des SGBDR. Étude de cas : MySQL

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

CONFIGURATION DE L AUTOMATE SIEMENS

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

LES NOUVEAUTES DE COST AND PROFITABILITY MANAGEMENT 8.1

Ordinateurs, Structure et Applications

Cours de Systèmes d Exploitation

Adressage des données des contrôleurs du WAGO-I/O-SYSTEM 750. Note d application

Projet de Bachelor Virtual Desktop Infrastructure

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

Leçon 1 : Les principaux composants d un ordinateur

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Guide d installation

Livre blanc. Au cœur de Diskeeper 2010 avec IntelliWrite

PROJET ALGORITHMIQUE ET PROGRAMMATION II

LECON 2 : PROPRIETES DE L'AFFICHAGE Version aout 2011

«clustering» et «load balancing» avec Zope et ZEO

4D v11 SQL Release 5 (11.5) ADDENDUM

Introduction aux SGBDR

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

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

//////////////////////////////////////////////////////////////////// Administration bases de données

Architecture matérielle des systèmes informatiques

PARAGON Disk Wiper. Guide de l utilisateur. Paragon Technology GmbH, System Programmierung. Copyright Paragon Technology GmbH

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

Programmation C++ (débutant)/instructions for, while et do...while

en version SAN ou NAS

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

Structure de base d un ordinateur

PG208, Projet n 3 : Serveur HTTP évolué

vbladecenter S! tout-en-un en version SAN ou NAS

Systemes d'exploitation des ordinateurs

Dynamic Host Configuration Protocol

Utiliser Glary Utilities

Flux de données Lecture/Ecriture Fichiers

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Licence Sciences et Technologies Examen janvier 2010

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Introduction à NetCDF

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Information. BASES LITTERAIRES Etre capable de répondre à une question du type «la valeur trouvée respecte t-elle le cahier des charges?

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

Informatique Générale

Transcription:

INFO 2014 Fichiers et base de données Philippe Fournier-Viger Département d informatique, U.de Moncton Bureau D216, philippe.fournier-viger@umoncton.ca Hiver 2015 1

L UTILISATION DE TAMPONS (BUFFERS) 3

Introduction Améliorer la performance des logiciels utilisant la mémoire secondaire peut être fait en réduisant le nombre d accès disque. Plusieurs techniques: algorithmes adaptés représentation des données adaptée utilisation de tampons sujet aujourd hui taille des tampons, utilisation de plusieurs tampons, type de tampons, etc. compression des données, etc. 4

Mise en tampon secteur Observation: Le temps pour lire un octet sur un disque dur peut être la moitié du temps pour lire une piste (en raison du temps de positionnement). Pour cette raison, la plupart des disques dur lisent au moins un secteur complet à la fois et le conservent en mémoire. C est la mise en tampon secteur. 5

La mise en tampon secteur (suite) Performance? Si plusieurs requêtes pour le même secteur, le secteur n a pas besoin d être relu. moins d accès disque meilleure performance! Si les accès disque sont aléatoires, le gain obtenu par l utilisation de la mise en tampon est petit. 6

La mise en tampon secteur (suite) En pratique, de nombreux logiciels effectuent souvent des requêtes pour un même secteur dans un court laps de temps. Pour cette raison, l utilisation d un tampon améliore généralement la performance. L utilisation de tampons est une des raisons pour laquelle les disques durs modernes sont plus performants. 7

Où est effectué la mise en tampon? Généralement au niveau du système d exploitation ou du contrôleur du disque dur. Elle pourrait aussi être faite par un logiciel d application ayant des besoins spécialisés. Note: le terme «cache» est aussi parfois utilisé pour désigner le concept de «tampon». 8

Tampons d entrée et de sortie Un système d exploitation va offrir deux types de tampons. Tampon d entrée: parce qu une même valeur peut être lue plusieurs fois, parce que des valeurs dans l entourage de la valeur lue peuvent être lues. Tampon de sortie: parce qu une valeur écrite peut être réécrite peu de temps après. parce qu une valeur écrite peut être lue peu de temps après. Si on utilisais un tampon unique commun pour lecture et écriture, il faudrait écraser les données de lecture pour écriture et vice-versa. 9

Mémoire tampons multiples En pratique, un microprocesseur (CPU) peut exécuter plusieurs millions/milliards d opérations par secondes. Un disque dur fonctionne beaucoup plus lentement. Cela affecte la performance! Exemple: Lecture séquentielle d un fichier Le disque dur lit un secteur dans un tampon Pendant ce temps, le CPU attend que le tampon soit rempli ou trouve autre chose à faire. Le CPU traite le secteur. Le disque dur lit le secteur suivant 10

Mémoire tampons multiples (suite) Or, le CPU et le disque dur pourraient travailler en parallèle. Comment? Une technique est l utilisation de mémoires tampon multiples (double-buffering, multiple-buffering). Exemple: avec deux tampons: le disque dur lit le premier secteur dans un tampon, le CPU traite le secteur. En parallèle, le disque dur lit le prochain secteur dans le second tampon 11

Mémoire tampons multiples (suite) Les tampons multiples sont aussi utilisés dans les jeux vidéos lorsque le temps pour dessiner une image est supérieur au temps de rafraichissement de l écran. Le logiciel écrit l image à afficher à l écran dans un tampon pendant que la carte graphique lit le contenu de l autre tampon. Ensuite, les tampons sont inversé et le processus continue. Tampon 1 Tampon 2 12

Les bassins de tampons Une autre façon d améliorer la performance est d utiliser un ensemble de tampons afin de mettre plusieurs parties d un fichier en tampon simultanément. Un ensemble de tampons est appelé un bassin de tampons (buffer pool). Une partie d un fichier est appelée un bloc. Un bassin de tampon peut-être utilisé par le système d exploitation ou par des logiciels. Un tampon peut être utilisé pour lecture/écriture. 13

Les bassins de tampons (suite) Fonctionnement: ajout de données quand le bassin est non plein, les nouvelles données sont ajoutées dans un des tampons disponibles, quand le bassin est plein, un tampon est vidé pour faire de la place pour les nouvelles données. Tampon 1 Tampon 2 Tampon n 0001 0111 14

Les bassins de tampons (suite) Le bassin est plein! quel tampon vider? Choisir aléatoirement? Idéalement, il faudrait vider celui dont l information a le moins de chance d être réutilisée prochainement. Malheureusement, on ne connaît pas le futur! Il faut utiliser des heuristiques. Tampon 1 Tampon 2 Tampon n 0001 0111 15

Les bassins de tampons (suite) Heuristique 1: utilisation d une file «premier entré, premier sorti» (FIFO) lors d une lecture, le premier tampon est rempli puis mis en fin de file, lorsqu il n y a plus de tampons vides, le tampon vidé est celui pour lequel le plus de temps s est écoulé depuis la première lecture (celui en début de la file). note: même si un tampon est lu plusieurs fois, sa position dans la file n est pas modifiée. Cette heuristique fonctionne bien pour une lecture approximativement séquentielle. 16

Les bassins de tampons (suite) Heuristique 2: retirer l information la moins fréquemment utilisé un compteur est ajouté à chaque tampon, le compteur est incrémenté à chaque utilisation du tampon (lecture/écriture), le tampon avec la valeur de compteur la plus faible est vidé en premier. Si égalité, le numéro de tampon peut être utilisé pour trancher. Tampon 1 Tampon 2 Tampon n 0001 0111 #Utilisations = 1 #Utilisations = 15 #Utilisations = 23 17

Les bassins de tampons (suite) Limite : ce qui est pertinent dans le passé peut ne pas l être dans le futur Une solution: ajout d un mécanisme d expiration. Périodiquement, les compteurs sont décrémentés par une constante (ex.: 1). Tampon 1 Tampon 2 Tampon n 0001 0111 #Utilisations = 1 #Utilisations = 15 #Utilisations = 23 18

Les bassins de tampons (suite) Heuristique 3: retirer l information la plus anciennement utilisée une variable «dernier accès» est ajoutée à chaque tampon, lors de chaque lecture/écriture, le temps actuel est écris dans cette variable. le tampon le plus anciennement utilisée est vidé en premier. facile à implémenter, une bonne approximation Tampon 1 Tampon 2 Tampon n 0001 0111 dernier_accès= dernier_accès= dernier_accès= 19

Les bassins de tampons (suite) Heuristique 3: retirer l information la plus anciennement utilisée (suite) Note: Plutôt que d utiliser une variable «dernier accès» pour implémenter cette heuristique, on pourrait utiliser une file, par exemple. Tampon 1 Tampon 2 Tampon n 0001 0111 20

Les bassins de tampons (suite) Heuristique 4: retirer l information la moins probable d être utilisée selon un modèle d usage Pour des applications spécialisée demandant une haute performance, l usage du disque peut être étudié. Un modèle d usage du disque est créé pour prédire les données les plus probable d être utilisées dans le futur. Les tampons vidés sont ceux qui ont le moins de chance d être utilisés. 21

Les bassins de tampons (suite) Pour l écriture: Observation: Il n est pas efficient de sauvegarder les changements à un bloc immédiatement sur le disque dur, car il peut y avoir des changements répétés à ce même bloc. Pour améliorer la performance: ne sauvegarder un bloc que lorsque le fichier est fermé ou que le tampon le contenant est vidé. On peut utiliser un bit sale (dirty bit) pour marquer chaque bloc qui doit être sauvegardé (pour indiquer s il y a eu un changement ou non). 22

Application: la mémoire virtuelle La mémoire virtuelle une mémoire vive simulée, stockée sur le disque dur. gérée par le système d exploitation. permet de dépasser la limite de mémoire vive d un ordinateur, est transparente pour le programmeur. Limite: performance moindre, car les accès au disque dur sont lents. 23

Application: la mémoire virtuelle Sous Windows 7: paramétrer la mémoire virtuelle: http://windows.microsoft. com/fr-fr/windowsvista/change-the-sizeof-virtual-memory Stockée dans: C:/pagefile.sys 24

Application: la mémoire virtuelle Fonctionnement: un bassin de tampon est créé pour la mémoire virtuelle, quand un bloc est utilisé, il est chargé en mémoire vive dans le bassin de tampon, les blocs les moins fréquemment utilisés font places aux blocs fréquemment utilisés. 25

Application: la mémoire virtuelle Une illustration: mémoire secondaire mémoire vive (RAM) 26

Application: la mémoire virtuelle (suite) Exercice: Soit une mémoire virtuelle de 10 secteurs. Soit un bassin de tampons de 5 blocs. Heuristique 1: retirer le plus ancien selon une file. La série de requêtes suivante est effectuée: 9,0,1,7,6,6,8,1,3,5,1,7,1 Quel est le contenu du bassin de tampon après ces requêtes? 27

IMPLÉMENTATION D UN BASSIN DE TAMPONS 28

Implémentation d un bassin de tampons Deux façons de communiquer avec un bassin de tampon: soit par passage de messages, soit par passage de tampons. 29

Communication par passage de messages Le bassin de tampons fourni: Une méthode pour lire un octet à une position logique. Une méthode pour écrire un octet à une position logique. Tous les détails du fonctionnement du bassin sont masqués à l utilisateur de la classe. 30

Communication par passage de messages Exemple: Fichier stocké sur des secteurs de 1024 octets. Un logiciel fait une requête d écriture de 40 octets à la position 6000 du fichier, Le tampon 5 du bassin contient les octets 5120 à 6143 du fichier. Résultat: La classe BufferPool copie les 40 octets à la position 880-919 du tampon 5. Lorsque le fichier est fermé ou que le tampon est retiré du bassin, la modification est écrite sur le disque. 31

Communication par passage de tampons Alternative: donner accès aux tampons à l utilisateur. l utilisateur doit connaître la taille des blocs stockés dans les tampons. Trois méthodes: obtenir la taille d un bloc (une constante) obtenir un pointeur vers un bloc, changer la valeur du «bit sale» pour indiquer une modification du bloc, 32

Communication par passage de tampons 33

Communication par passage de tampons Problème de pointeurs désuets: le contenu d un tampon peut être remplacé ou effacé de telle sorte qu un pointeur vers un bloc n est plus valide. Solution: verrouillage des tampons ajouter deux méthodes: réserver un bloc acquirebuffer() lit le tampon et le réserve libérer un bloc releasebuffer() - libère le tampon ajouter une variable compteur pour compter le nombre d utilisateurs du bloc. Un bloc ne peut être effacé d un tampon que lorsque le compteur est à 0. 34

Communication par passage de tampons Le verrouillage des tampons peut être problématique si: l usager oublie de libérer des blocs, il y a plus de blocs actifs que de tampons disponibles dans le bassin! Il est difficile d éviter ces problèmes (pourrait être géré au niveau du système d exploitation ex.: quand un programme est fermé, les blocs sont libérés) 35

Communication par passage de tampons Observation: parfois l utilisateur veut réécrire complètement un bloc et ne souhaite pas le lire. La lecture du bloc est donc inutile et réduit la performance. Optimisation: séparer l assignement des blocs et la lecture des blocs. acquirebuffer() ne lit plus les bloc sur le disque. un méthode readblock() doit être appelée pour lire le bloc sur le disque lorsque voulu. 36

Code (1) 37

Code (2) 38

Communication par passage de tampons Désavantage du passage par tampons: plusieurs obligations à respecter pour le programmeur: prendre connaissances de la taille des blocs, ne pas corrompre l espace de stockage, informer le bassin quand un bloc est modifié, informer le bassin quand un bloc est réservé ou libéré. Avantages: 39

Communication par passage de tampons Avantages: pas besoin de faire de copie de blocs pour l utilisateur (néanmoins, ceci n est pas coûteux comparativement à la lecture du disque si peu de données), plus de contrôle: peut réserver un bloc pour le forcer à rester en mémoire, pour plusieurs écritures/lectures. 40

Autres applications Le concept de tampon est utilisé dans plusieurs domaines de l informatique où le temps d accès a une ressource peut être long ex.: accès à une base de données ex.: accès à une ressource sur un réseau Ou bien pour un stockage temporaire quand deux processus ne travaillent pas à la même vitesse: ex.: routeur, réseau analogie: manège 41

MANIPULATION DES FICHIERS EN C++ (RAPPEL) 42

Les fichiers en C++ Un fichier, un flux d octets Trois instructions principales: lire des octets à la position actuelle dans le fichier, écrire des octets à la position actuelle, déplacer la position dans le fichier. La mise en tampon est faite au niveau du contrôleur du disque principalement. Lecture: accès séquentiel accès aléatoire: plus efficace lorsque les fichiers sont stockés sur des secteurs/groupes/pistes contigus. 43

Les fichiers en C++ (suite) Plusieurs mécanismes pour manipuler les fichiers binaires. Fstream open(char *name, openmode flags) read(char *buff, int count) write(char *buff, int count) seekg(int pos) // lecture seekp(int pos) // écriture close() similaire au passage par message. 44

Fstream ofstream ofstream: pour écrire dans un fichier ------ Même principe que cout open(«text.txt», ios::binary) pour ouvrir en mode binaire 45

Fstream ifstream exemple 1 ifstream: pour lire un fichier ne doit pas contenir d espace car >> utilise le caractère espace pour diviser le flux. 46

Fstream ifstream exemple 2 ifstream: pour lire un fichier si pas la fin du fichier, erreur de lecture ou autres erreur. getline permet de lire les espaces contrairement à l opérateur >> 47

Fichier binaire un type d entier (peut être converti à integer) position: fin du fichier position: début du fichier 48

À l interne Les flux de fichiers (file streams) utilisent un objet streambuf qui est un bassin de tampons. L écriture se fait au fichier quand: le fichier est fermé, le bassin est plein, certains caractères sont insérés dans le flux (endl, flush, ), sync(). 49

Les flux en C++ permettent de manipuler des données (fichiers, console, écran, mémoire) avec les mêmes instructions (en écriture ou lecture). Les classes pour manipuler les flux font parties de la librairie iostream. include <iostream> classe «ios» classe «istream» classe «ostream» cin cout 50

Les flux en C++ opérateur << pour écrire opérateur >> pour lire Quatre flux prédéfinis en C++: cin: flux d entrée standard cout: flux de sortie standard cerr: sortie d erreur standard clog: écrire un fichier d historique et utiliser la sortie d erreur standard 51

Manipulateurs de flux Certains manipulateurs peuvent être utilisés dans les flux: endl : ajouter un saut de ligne ( \n ) flush : vider un flux ends : ajouter un caractère de fin de chaîne ( \0 ) ws: supprimer les espaces dec : convertir en décimale hex, oct : 52

cin, cout - exemple 53

Les flux en C++ Attention: Le type des variables et la taille des variables ne sont pas vérifiés avec l opérateur >>. Solution 1: Solution 2: string input; cin >> input; Note: Solution 1 peut tronquer l entrée de l utilisateur. 54

Surcharge de << Il est possible de surcharger l opérateur << pour accepter d autres types. Par exemple: 55

Surcharge de >> Il est aussi possible de surcharger l opérateur >>. Par exemple: 56

Surcharge de >> On peut aussi redéfinir les opérateurs << et >> pour les pointeurs. Exemple: Note: getline autorise la saisie de texte avec espaces contrairement à >> 57