Gestion de Fichiers - PowerPoint PPT Presentation

About This Presentation
Title:

Gestion de Fichiers

Description:

Gestion de Fichiers Tri Interne Efficace et Tri Externe – PowerPoint PPT presentation

Number of Views:41
Avg rating:3.0/5.0
Slides: 15
Provided by: Nat153
Category:
Tags: fichiers | gestion | heap

less

Transcript and Presenter's Notes

Title: Gestion de Fichiers


1
Gestion de Fichiers
  • Tri Interne Efficace et Tri Externe

2
Plan du cours daujourdhui
  • Vue générale
  • Tri interne efficace heapsort
  • Tri de grands fichiers
  • mergesort
  • Temp dexécution de mergesort
  • Le cout associé à lallongement des fichiers
  • Amélioration de la performance de mergesort
  • Ajout de hardware
  • Améliorations algorithmiques
  • Chevauchement des opérations dentrée/sortie

3
Vue générale
  • Ce cours sintéresse à la question du tri
    efficace dans le traitement des fichiers.
  • En particulier, il sintéresse au tri efficace
    dans deux cas
  • Le cas où le fichier peut tenir en mémoire
  • Le cas où le fichier est trop grand pour tenir en
    mémoire gt Tri externe
  • Les techniques de fusion discutées précédemment
    (i.e. traitement coséquentiel) sont très utiles
    pour le tri de grands fichiers.

4
Une approche efficace pour le triage en mémoire
interne
  • Nous navons considéré jusquà maintenant que le
    triage de fichiers assez petits pour tenir en
    mémoire
  • On peut lire le fichier du disque en mémoire
  • On peut le trier en utilisant une procédure
    habituelle.
  • On peut écrire le fichier trié sur le disque
  • Si le fichier est lu et écrit de facon aussi
    efficace que possible et si le meilleur
    algorithme de triage est utilisé, il semblerait
    que lon ne peut pas améliorer cette procédure.
  • Néanmoins, une amélioration est possible par un
    traitement en parallèle on peut, en effet, lire
    et écrire en même temps que lon fait le triage.

5
Chevauchement du traitement et de
lentrée/sortie heapsort
  • heapsort peut être combinée avec la lecture du
    disque et lécriture sur le disque, de la manière
    suivante
  • Le heap peut être construit pendant que le
    fichier non trié est lu du disque.
  • Le tri peut être fait pendant que la partie triée
    du fichier est écrite sur le disque.

6
Construction du heap pendant la lecture du
fichier
  • Au lieu de faire un seek à chaque fois que lon
    veut un nouvel enregistrement, on peut lire des
    blocs denregistrements en une seule fois dans
    une mémoire tampon et opérer sur ce bloc avant de
    se tourner vers un autre bloc.
  • La mémoire tampon dentrée pour chaque nouveau
    bloc devient une partie de la mémoire reservée
    pour le heap. A chaque fois que lon lit un
    nouveau bloc, on lattache à la fin du heap
    courant.
  • Le premier nouvel enregistrement à ajouter est à
    la fin du tableau contenant le heap comme requis
    par la fonction dinsertion dans le heap.
  • Une fois quun enregistrement est inserré, le
    nouvel enregistrement suivant est a la fin du
    tableau contenant le heap, de nouveau, prêt à
    être inserré.

7
Construction du heap pendant la lecture du
fichier (suite)
  • Afin de construire le heap en même temps, on a
    besoin de mémoires tampon multiples tout en
    traitant les enreg.s dun bloc, on peut
    simultanément lire un autre bloc qui sera traité
    plus tard.
  • Question Combien de mémoires tampon doivent être
    utilisées et où doit-on les mettre?
  • Réponse Le nombre de mémoires tampon correspond
    au nombre de blocs dans le fichier et elles
    doivent être localisées en séquence dans le
    tableau.
  • Puisque la construction du heap est plus rapide
    que la lecture de blocs, il peut y avoir certains
    delais.

8
Faire le heapsort tout en écrivant le fichier
trié sur le disque (Fig. 8.19)
  • Le plus petit enregistrement du heap est connu
    dès la première étape du heapsort. Donc, il peut
    être mis dans une mémoire tampon de sortie
    jusquà ce quun bloc entier trié soit determiné.
  • Pendant que ce bloc est écrit sur le disque, un
    nouveau bloc trié peut être préparé, etc
  • Puisqua chaque fois quun nouveau bloc est écrit
    sur le disque, la taille du heap diminue par un
    facteur de un bloc, ce bloc peut être utilisé
    comme mémoire tampon. Ainsi on a autant de
    mémoire tampon de sortie quil y a de bloc dans
    le fichier.
  • Puisque tout le I/O est séquentiel, cet
    algorithme marche aussi bien avec des disques que
    avec des bandes magnétiques. De même, três peu de
    seeking est nécessaire et la procédure est donc
    efficace.

9
Une technique efficace pour trier de large
fichiers sur disques mergesort
  • Une solution pour le problème des fichiers qui ne
    tiennent pas en mémoire a déjà été présentée sous
    la forme de lalgorithme pour triage de clés.
    Cependant, cet algorithmes a deux insuffisances
  • Une fois que les clés étaient triées, il était
    couteux de chercher (seek) chaque enregistrement
    en ordre et de les écrire dans le nouveau fichier
    trié.
  • Si le fichier contient de nombreux
    enregistrements, lindexe lui-même ne tiendra pas
    en mémoire.
  • Solution (1) diviser le fichier en plusieurs
    sous-fichiers triés (runs) en utilisant une
    méthode de tri interne et (2) fusionner tous les
    runs avec mergesort (Fig. 8.21).

10
Avantages du mergesort
  • Il peut être appliqué à des fichiers de toutes
    tailles.
  • La lecture de fichier dentrée pendant létape de
    création des runs est séquentielle ? Peu de
    seeking.
  • La lecture de chaque run pendant la fusion est
    aussi séquentielle. Le seul seeking necessaire
    est pour aller dun run à lautre.
  • Si heapsort est utilisé pour létape de tri des
    runs en mémoire, son opération peut être
    chevauchée avec celle du I/O.
  • Puisque le I/O est surtout séquentiel, des bandes
    magnétiques peuvent être utilisées.

11
Temps est nécessaire pour un mergesort
  • Supposition de simplification
  • Seulement un seek est requis pour chaque accès
    séquentiel.
  • Seulement un délai de rotation est nécessaire par
    accès.
  • Etapes couteuses (incluant du I/O) de mergesort
  • Pendant la phase de Tri
  • Lecture de tous les enregistrements dans la
    mémoire pour le tri et la formation des runs.
  • Ecriture des runs triées sur le disque.
  • Pendant la phase de Fusion
  • Lecture des runs triées dans la mémoire pour la
    fusion
  • Ecriture du fichier trié sur le disque.

12
Type de I/O prenant place lors des phases de tri
et de fusion
  • Puisque, pendant la phase de tri, les runs sont
    crées en utilisant heapsort, I/O est séquentiel.
    Aucune amélioration de performance nest possible
    ici.
  • Pendant letape de lecture de la phase de fusion,
    il y a beaucoup daccès au hazard (puisque les
    runs différents sont amenées en mémoire et
    effacées de la mémoire de manière imprédictible).
    Le nombre et la taille de la mémoire tampon
    contenant les runs détermine le nombre daccès au
    hazard. De lamélioration de performance peut
    prendre place en cette étape.
  • Letape decriture de la phase de fusion nest
    pas influencée par la facon dont on organize les
    runs.

13
Cout associé à lallongement des fichiers
  • En général, pour une fusion de K runs où chaque
    run est aussi large que lespace libre en
    mémoire, la taille de la mémoire tampon pour
    chacun des runs est de (1/K)taille de lespace
    mémoire(1/K)taille de chaque run.
  • Donc K seeks sont requis afin de lire tous les
    enregistrements dans chacun des runs individuels
    et puisquil y a k runs en tout, lopération de
    fusion requiert K2 seeks.
  • Puisque K est directement proportionnel à N, le
    nombre denregistrements, mergesort est une
    opération dordre O(N2) comptée en nombre de
    seeks.

14
Que faire pour améliorer la performance de
mergesort?
  • La performance de mergesort peut être ameliorée
    de plusieurs façons
  • On peut allouer plus de hardware tel que des
    unités de disque, de la mémoire ou des chaines
    I/O.
  • On peut performer la fusion en plus dune étape,
    en réduisant lordre de chaque fusion et
    augmentant la taille de la mémoire tampon pour
    chaque run.
  • On peut augmenter la longueur des runs triés
    initial, algorithmiquement.
  • On peut trouver des façons de chevaucher les
    opérations I/O.
Write a Comment
User Comments (0)
About PowerShow.com