Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/03/2017, à 17:44

Computer Mail

Écrire directement dans l'adresse du disque dur

Bonjour,

je cherche à écrire directement à une adresse bien précise dans le disque dur et non dans un fichier comment pourrais-je m'y prendre ? je dois simuler un programme qui nécessite beaucoup de RAM, n'en ayant pas assez je préfère assigner tout le rôle de RAM à mon disque dur. Le programme en question va massivement aller d'adresse en adresse, je ne peux donc pas écrire dans des fichiers car les rechercher d'abord dans la table prendrait un temps énorme en plus de celui de l'accès au disque.

Hors ligne

#2 Le 03/03/2017, à 21:24

Rufus T. Firefly

Re : Écrire directement dans l'adresse du disque dur

Salut,

Il me semble que la swap est une sorte d'extension de la ram. Si ça se trouve on peut aussi écrire directement dessus comme on le ferait sur la ram. Il faut peut-être creuser ça.
Sinon, il y a dd qui répond à ta question, mais ce n'est pas forcément la meilleure solution.

Dernière modification par Rufus T. Firefly (Le 03/03/2017, à 21:25)


La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme

Hors ligne

#3 Le 04/03/2017, à 13:26

Computer Mail

Re : Écrire directement dans l'adresse du disque dur

Merci d'avoir répondu, j'ai oublié de le notifier, mon programme est en c++ langage dans lequel je débute, comment pourrais-je utiliser ces commandes dans mon code ?

Hors ligne

#4 Le 04/03/2017, à 14:20

Rufus T. Firefly

Re : Écrire directement dans l'adresse du disque dur

Je ne pense pas qu'il faille utiliser ces commandes en C++. Il faut chercher dans les bibliothèques C++. Il y a forcément ce qu'il faut pour écrire directement sur le disque ou pour gérer de la swap... D'autant plus que c'est quand même un langage plutôt orienté système... Si mes vieux souvenirs sont bons, c'est une histoire de flux d'entrée/sortie. Pour peu que ça atterrisse sur le bon périphérique et à la bonne adresse...

Un petit conseil.  Procure-toi ceci : Bjarne Stroustrup - Le Langage C++
C'est écrit par le créateur de C++. La bible, quoi... Ce n'est pas de tout repos, mais c'est vraiment très bien fait.

Dernière modification par Rufus T. Firefly (Le 04/03/2017, à 14:25)


La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme

Hors ligne

#5 Le 04/03/2017, à 14:31

claudius01

Re : Écrire directement dans l'adresse du disque dur

Bonjour,

Computer Mail a écrit :

je cherche à écrire directement à une adresse bien précise dans le disque dur et non dans un fichier comment pourrais-je m'y prendre ?
...

Déjà, je ne m'aventurais pas à "écrire à une adresse bien précise dans le disque dur..."
Maintenant, "voir" un fichier comme une zone mémoire en RAM pour éviter les accès disque est parfaitement possible; c'est le but de mmap
Faire une recherche de "linux load file in memory" avec notamment: Mapping Files into Memory

En espérant t'avoir aidé...

Hors ligne

#6 Le 04/03/2017, à 14:34

pingouinux

Re : Écrire directement dans l'adresse du disque dur

Bonjour,
Si tu écris directement sur le disque, tu as de fortes chances d'y détruire la table de partition ou les systèmes de fichiers.
Sinon, il te suffit d'ouvrir par exemple "/dev/sda" (disque) ou "/dev/sda1" (partition) comme un fichier normal, et tu t'y positionnes avec fseek.
À tes risques et périls…

Hors ligne

#7 Le 04/03/2017, à 14:35

Rufus T. Firefly

Re : Écrire directement dans l'adresse du disque dur

@claudius01
Je crois que c'est le contraire que Computer Mail veut faire : il a besoin de plus de ram qu'il n'en a. D'où l'idée d'un truc qui fonctionnerait un peu comme de la swap (qui peut d'ailleurs être un fichier).

Dernière modification par Rufus T. Firefly (Le 04/03/2017, à 14:41)


La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme

Hors ligne

#8 Le 04/03/2017, à 14:47

claudius01

Re : Écrire directement dans l'adresse du disque dur

Ok Rufus T. Firefly, tu as raison ... j'ai lu trop vite l'expression des besoins

De toute façon, si pas assez de RAM, cela ira forcement sur disque ou sur le réseau ce qui conduit à utiliser le Cloud computing...
Mais là, j’avoue ne pas avoir d'expérience en la matière ;-)

Hors ligne

#9 Le 04/03/2017, à 15:20

Rufus T. Firefly

Re : Écrire directement dans l'adresse du disque dur

claudius01 a écrit :

De toute façon, si pas assez de RAM, cela ira forcement sur disque ou sur le réseau...

Quand tu utilises ta bécane, oui. Mais si tu écris un programme en C avec de l'adressage, ce n'est pas sûr du tout (je pense même que ce n'est pas le cas) que tu puisses dépasser la ram existante et certainement pas de manière automatique. En gros, si j'ai bien compris, le problème c'est comment faire un tableau par exemple, de 5 Go quand on n'a que 4 Go de ram... Mais le problème est peut-être mal posé, aussi, mais pour ça il faudrait des détails (et obtenir des réponses d'un programmeur chevronné, ce qui n'est pas du tout mon cas).


La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme

Hors ligne

#10 Le 04/03/2017, à 15:43

claudius01

Re : Écrire directement dans l'adresse du disque dur

Rufus T. Firefly a écrit :

... En gros, si j'ai bien compris, le problème c'est comment faire un tableau par exemple, de 5 Go quand on n'a que 4 Go de ram...
Mais le problème est peut-être mal posé...

C'est effectivement bien résumé...

Sauf erreur de ma part, cela passe par la pagination de zones mémoire non utiles à un instant t, mises sur disque et rapatriées en mémoire le cas échéant et donc, le problème est comment faire mieux que l'OS ou du moins maîtriser cette mécanique depuis un programme...

Sujet difficile mais très intéressant au demeurant ;-)

Hors ligne

#11 Le 04/03/2017, à 17:11

Computer Mail

Re : Écrire directement dans l'adresse du disque dur

Donc je précise, je souhaite que mon programme c++ puisse une fois une certaine adresse d'un secteur https://fr.wikipedia.org/wiki/Secteur_de_disque acquise y lire et modifier chaque élément s'y trouvant. Sous Windows je pense que ceci est ce que je cherche https://support.microsoft.com/en-us/hel … nder-win32, maintenant moi je travaille sous Linux. J'aimerais aussi ne pas devoir me soucier du système de fichier, en gros réserver 12go de RAM à simuler dont j'ai besoin et gérer les secteur de 512 octets librement juste en sélectionnant leur adresse.

Hors ligne