IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

programmer un defragmenteur de disque dur


Sujet :

C

  1. #1
    Membre du Club

    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 38
    Points : 69
    Points
    69
    Par défaut programmer un defragmenteur de disque dur
    bonjour,

    j aimerais savoir comment programmer un defragmenteur de disque dur,
    en ecrivant sur chacun des secteurs du disque dur ? quelle bibliotheque utiliser ?
    SDL ? Allegro (habituellement)?

    merci d avance .

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 400
    Points : 23 777
    Points
    23 777
    Par défaut
    Un défragmenteur de disque dur avec Allegro ou la SDL ? Uniquement pour l'affichage alors. Pour le reste, ça ne se fait pas du tout à la légère :

    • Ça dépend de ton système d'exploitation (pour les accès disque) ;
    • Ça dépend ENTIÈREMENT du système de fichier que tu utilises ;
    • Cela implique des stratégies sophistiquées qui dépendent notamment du taux de remplissage de ton disque. En particulier, il est impératif que ton défragmenteur puisse être interrompu à n'importe quel moment sans compromettre l'intégrité du système de fichier… y compris par une panne de courant. Une fois cette condition remplie, il faut encore trouver des compromis pour minimiser autant que possible les mouvements des têtes.


    En bref, pas simple. Mais la difficulté est principalement algorithmique. Une fois l'algo au point, il ne s'agit que de faire des lectures-écritures de secteurs et de mettre la fenêtre utilisateur à jour. Pas de section critique ni temps réel.

    Tu veux savoir cela pour le principe, ou tu cherches réellement à écrire un défragmenteur ? Et dans le dernier cas, tu ferais cela pour l'exercice ou pour satisfaire un réel besoin ?

  3. #3
    Membre du Club

    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 38
    Points : 69
    Points
    69
    Par défaut
    ce serait vraiment un bon exercice, en plus ça permet de comprendre comment marche le systeme de gestion du disque dur. sinon je cherche sur windows, et en utilisant codeblock tout simplement. je cherche pas un truc trop compliqué, mais ce serait assez interessant

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Citation Envoyé par nyergk Voir le message
    ça permet de comprendre comment marche le systeme de gestion du disque dur.
    D'un type de formatage de disque dur. On ne defragmente pas de la meme maniere un disque a plateaux d'un disque SSD, et pas non plus de la meme maniere un disque en FAT32 ou un disque en NTFS, ...

    Ton probleme, pour le moment, n'a rien a voir avec le C ou un langage de developpement, c'est un probleme d'algorithmie.
    Ton premier probleme est de trouver comment savoir qu'il y a de la fragmentation (interne et externe), et comment savoir ou se trouve un fichier sur le disque.

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 196
    Points : 17 165
    Points
    17 165
    Par défaut
    Mon seul très gros conseil.
    Ne teste ton programme que dans une machine virtuelle.

    Tu risques sinon de détruire ton données de manière définitive.

    Cherche la documentation du système de fichier à défragmenter.

    Remarque: Il est aberrant de défragmenter un SSD.

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Citation Envoyé par leternel Voir le message
    Remarque: Il est aberrant de défragmenter un SSD.
    Pour la fragmentation externe, oui c'est aberrant. S'il y a beaucoup de fragmentation interne en revanche, cela peut etre interessant - meme si les debits sont aujourd'hui tels que la plupart des applications ne verront pas la difference.

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Notez que Windows propose des fonctions haut niveau de défragmentation, via DeviceIoControl(). Il ne s'agit plus là d'écrire secteur par secteur, seulement de déplacer des fichiers vers des clusters libres (voir "Defragmenting Files" sur MSDN).

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/09/2010, 21h39
  2. Réponses: 2
    Dernier message: 18/11/2008, 13h45
  3. Réponses: 2
    Dernier message: 26/02/2007, 16h25
  4. Problème d'éxécution de programme sur 2ème disque dur
    Par thepinguin dans le forum Composants
    Réponses: 3
    Dernier message: 20/02/2007, 10h30
  5. Quel programme utilise mon Disque dur
    Par fredoh dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 06/05/2006, 12h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo