Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2010 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Ecrire en memoire virtuelle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ecrire en memoire virtuelle

n°1362887
lepaysdu s​ucre
Posté le 09-05-2006 à 22:58:19  profilanswer
 

Bonjour,
 
Voila, je dois creer un programme en c++ qui doit ecrire un fichier en memoire virtuelle. Le probleme c est que j ai aucune idee comment creer une memoire virtuelle et ecrire dedans. Est ce quelqu un peut me donner des info ou me dire ou je peux trouver ces info?
Merci de votre aide

mood
Publicité
Posté le 09-05-2006 à 22:58:19  profilanswer
 

n°1362952
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 10-05-2006 à 07:33:41  profilanswer
 

sais tu au moins ce qu'est la mémoire virtuelle ? si tu le savais, tu t'apercevrais de l'énormité de ce que tu écris
http://aumha.org/win5/a/xpvm.php


---------------
J'ai un string dans l'array (Paris Hilton)
n°1363026
bjone
Insert booze to continue
Posté le 10-05-2006 à 10:22:47  profilanswer
 

ça a pas vraiment de sens pratique ce que tu veux faire.
 
par contre tu peux utiliser un fichier mappé en mémoire, c'est peut être ce qu'il faut que tu fasse.
 
ça permet plus ou moins de réutiliser le moteur de pagination vers disque de l'os de manière eplicite.

n°1363558
lepaysdu s​ucre
Posté le 10-05-2006 à 16:34:10  profilanswer
 

Desole si je sais pas ce qu est une memoire virtuelle. Je suis en stage et on ma dit qu il fallait voir si c etait possible d ecrire mon fichier texte en utilisant une memoire virtuelle car une des contraintes de mon projet est justement de ne pas ecrire sur le disque dur.

n°1363583
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 10-05-2006 à 16:54:00  profilanswer
 

ah, tu veux écrire sur un disque virtuel ! en mémoire quoi ! donc tu fais le malloc() qui va bien et puis voila [:el g]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1363590
lepaysdu s​ucre
Posté le 10-05-2006 à 16:56:02  profilanswer
 

donc meme si mon fichier est vraiment gros (genre 2Mega) ca marche ou est ce que le malloc est limite en taille?

n°1363596
chrisbk
-
Posté le 10-05-2006 à 16:59:42  profilanswer
 

sauf si t'utilises un compilo datant de 1987, non malloc n'as pas ce genre de limitation

n°1363644
lepaysdu s​ucre
Posté le 10-05-2006 à 17:38:30  profilanswer
 

Merci beaucoup a tous. Je vais en parler a mon chef. Ca devrait resoudre nos problemes.

n°1363648
bjone
Insert booze to continue
Posté le 10-05-2006 à 17:46:28  profilanswer
 

bin heu oué okay, mais bon si c'est pour un fichier de log ou je ne sais trop rien, le malloc aidera pas..

n°1363651
lepaysdu s​ucre
Posté le 10-05-2006 à 17:49:29  profilanswer
 

c est pour un fichier texte. En fait, c juste une tres longue chaine de caracteres, non?  
Et apres comme je veux l envoyer par internet, j ai juste a lire la chaine.

mood
Publicité
Posté le 10-05-2006 à 17:49:29  profilanswer
 

n°1363658
bjone
Insert booze to continue
Posté le 10-05-2006 à 17:56:31  profilanswer
 

bin heu ça veux rien dire, contexte trop large.
 
si c'est pour la manipuler dans le code C++, autant utiliser un ostringstream, si c'est pour la manipuler a l'extérieur du binaire avec d'autres outils qui ne touchent que des fichiers (client FTP), alors oui il faudra passer par un disque virtuel.

n°1363666
spotaszn
Posté le 10-05-2006 à 18:04:54  profilanswer
 

Tu peux peut-être même l'envoyer sur internet à mesure que tu le fabriques, ton fichier... à moins que sa construction prenne beaucoup de temps ou bien qu'elle ne soit pas "triviale"...

n°1363669
lepaysdu s​ucre
Posté le 10-05-2006 à 18:06:08  profilanswer
 

ou puis-je trouver des info sur les disques virtuels? et comment je peux en creer et m en servir?

n°1363674
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 10-05-2006 à 18:13:37  profilanswer
 

non mais on s'en fout du disque virtuel ! c'est de la ram c'est tout !


---------------
J'ai un string dans l'array (Paris Hilton)
n°1363676
chrisbk
-
Posté le 10-05-2006 à 18:15:08  profilanswer
 

si tu veux je peux t'en vendre un, de disque virtuel

n°1363682
bjone
Insert booze to continue
Posté le 10-05-2006 à 18:18:12  profilanswer
 

ouai on est d'accord, mais si il doit utiliser un client ftpeux, et qu'il a pas de disque, faut bien qu'il puisse lui faire plaisir...

n°1363683
bjone
Insert booze to continue
Posté le 10-05-2006 à 18:18:34  profilanswer
 

chrisbk a écrit :

si tu veux je peux t'en vendre un, de disque virtuel


pas cher mon fils

n°1363741
Sve@r
Posté le 10-05-2006 à 19:21:37  profilanswer
 

lepaysdu sucre a écrit :

c est pour un fichier texte. En fait, c juste une tres longue chaine de caracteres, non?


Exact. Une énorme chaîne de caractères parsemée de petits "CTRL-M" si t'es sur Unix, et de petits "CTRL-J+CTRL-M" si t'es sur Windows. Chaque fois que l'éditeur trouve un de ces caractères, il passe à la ligne lors de l'affichage.
 

lepaysdu sucre a écrit :

Et apres comme je veux l envoyer par internet, j ai juste a lire la chaine.


Ben en fait, si t'as la chaîne en mémoire, il te suffit de placer un pointeur en début de chaîne et d'envoyer sur ta socket "n" octets à partir de ce pointeur. Puis tu décales ce pointeur de "n" octets tant que t'es pas arrivé au bout (avec un petit contrôle intelligent du dépassement).
Tu pourrais tenter d'envoyer toute la chaîne d'un coup mais je sais pas si la commande "send" n'est pas limitée en taille...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1363756
skelter
Posté le 10-05-2006 à 19:44:47  profilanswer
 

Citation :

Une énorme chaîne de caractères parsemée de petits "CTRL-M" si t'es sur Unix, et de petits "CTRL-J+CTRL-M" si t'es sur Windows.


 
bien entendu on a pas a savoir que sous windows une ligne se termine par "\r\n" (ce sont des détails d'implementation qui ne font que diminuer la portabilité du programme si on en tient compte). En C++ une ligne se termine toujours et uniquement par '\n', comme ca ca reste simple :)

n°1363776
lepaysdu s​ucre
Posté le 10-05-2006 à 20:15:49  profilanswer
 

ok bon bah je vais en parler avec mes chefs et voir si ca leur va.
Merci.

n°1363819
Sve@r
Posté le 10-05-2006 à 21:18:41  profilanswer
 

skelter a écrit :

bien entendu on a pas a savoir que sous windows une ligne se termine par "\r\n" (ce sont des détails d'implementation qui ne font que diminuer la portabilité du programme si on en tient compte). En C++ une ligne se termine toujours et uniquement par '\n', comme ca ca reste simple :)


Exact. Si on veut écrire une ligne, il suffit de la faire terminer par '\n'. Et si on veut la lire, il suffit d'utiliser "fgets()" ou "getline()" qui s'arrêtent à la fin de la ligne quelle que soit cette fin...
 

lepaysdu sucre a écrit :

ok bon bah je vais en parler avec mes chefs et voir si ca leur va.


En fait, on ne sait toujours pas trop quel est ton besoin.
Si c'est de créer un fichier en mémoire, alors un simple malloc et basta. Même si le malloc fait 200Mo, le système s'amusera avec sa swap mais il te donnera ton allocation.
Si c'est de créer un fichier sur un disque virtuel, le C++ ne peut pas t'aider car la notion de "disque virtuel" est hors de son concept. Tout ce qu'il sait faire, c'est créer des fichiers sur un périphérique et c'est à toi de faire en sorte que ce périphérique soit virtuel (par exemple monter un répertoire en swap sur Unix et écrire un fichier dans ce répertoire; ou utiliser "ramDisk" (http://www.arsoft-online.com) sour Windows et écrire sur le lecteur virtuel créé par "ramDisk" )...


Message édité par Sve@r le 10-05-2006 à 21:27:29

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1363858
lepaysdu s​ucre
Posté le 10-05-2006 à 22:34:16  profilanswer
 

Ok bon je donne plus de detail sur mon projet:
Je dois faire une interface entre 2 logiciels. Cette interface devra lire des donnees ds les queues d un des logiciels puis les envoyer sous un certain format a l autre logiciel via le net.
Pourquoi je veux obligatoirement ecrire un fichier? en fait il existe deja des dll que je peux utiliser qui ecrivent le fichier sous le bon format et qui l envoyent au 2eme logiciel. Le probleme est que ces dll ecrivent le fichier sur le disque dur et mon chef ne veut pas de ca (probleme de crash du disque qui est important ds l environnement ou le produit est utilise). C est pourquoi on m a demande de me renseigner pour voir si je pouvais pas ecrire le fichier sur un disque (memeoire) vituel.
Dans mon cas je pense pas que je puisse utiliser "ramDisk" comme le suggere Sve@r, car mon programme ne sera pas utilise que sur ma machine mais sera vendu a d autres compagnies et il faut que tout soit simple a utiliser. Si je commence a dire que d avord il faut installer tel truc, puis faire telle manip, on est pas sorti.
Pour l instant, mon chef est en deplacement pour la semaine donc je lui en parlerai la semaine prochaine.

n°1363864
SBAM
Best recording of rach 3.
Posté le 10-05-2006 à 23:02:11  profilanswer
 

As-tu regarde ce que peux faire ta bibliotheque ? Si elle peut envoyer le contenu d'un fichier a une autre appli, elle doit certainement pouvoir envoyer un bourdel pointe  [:guish]  
 
(Je m'imagine trop la scene : Hey boss ! J'ai trouve la solution, new !  [:greenleaf] )

n°1363876
lepaysdu s​ucre
Posté le 10-05-2006 à 23:32:16  profilanswer
 

en fait pour l instant j ai pas encore les bibli donc je sais pas exactement comment elles font. Pour l instant c est que de la recherche de solution que je dois faire.


Message édité par lepaysdu sucre le 10-05-2006 à 23:32:45
n°1365683
Sve@r
Posté le 13-05-2006 à 19:02:00  profilanswer
 

lepaysdu sucre a écrit :

... probleme de crash du disque qui est important ds l environnement ou le produit est utilise. C est pourquoi on m a demande de me renseigner pour voir si je pouvais pas ecrire le fichier sur un disque (memeoire) vituel.


Euh... a mon avis, si le disque crashe pendant que l'appli est exécutée, ça m'étonnerait fort que l'appli continue même si tout se fait en mémoire. Et même si elle continue, ceux qui utilisent l'appli auront d'autres soucis à gérer que de récupérer les infos de l'appli. Et comme la mémoire utilise quand-même le disque pour ses swap je pense que l'argument de ton chef "tout faire en mémoire de peur du crash" risque de ne pas tenir face à la réalité...
 

lepaysdu sucre a écrit :

Dans mon cas je pense pas que je puisse utiliser "ramDisk" comme le suggere Sve@r, car mon programme ne sera pas utilise que sur ma machine mais sera vendu a d autres compagnies et il faut que tout soit simple a utiliser. Si je commence a dire que d avord il faut installer tel truc, puis faire telle manip, on est pas sorti.


Evidemment... et puis il y a aussi des pb de licences...
 

lepaysdu sucre a écrit :

Pour l instant, mon chef est en deplacement pour la semaine donc je lui en parlerai la semaine prochaine.


J'espère qu'il est assez intelligent pour comprendre tes arguments  ;)


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Ecrire en memoire virtuelle

 

Sujets relatifs
probleme de memoire de la VM java[Prolog] Garder en mémoire la valeur d'une variable
Caractères possibles à écrire sur une userformbatch: pb pour modifier fichier et ecrire dans un fichier
[Solved] Erreur d'acces memoire a l'execution[c] Allocateur memoire
écrire %00 en HexadecimalProbleme conso mémoire string (libstdc++)
sprintf et mémoire[Résolu] Ecrire un fichier au format UTF-8
Plus de sujets relatifs à : Ecrire en memoire virtuelle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR