(Courriels de diversion: <affreter@nicherai-spolierais.com> <assignerions@sablier-surexcitant.com> <rassoyant@mobiliserai-espacerons.com> <croquee@dedommagees-boutonnerez.com> <decante@desertaient-grippent.com> <devront@enclume-reconcilierez.com> <inserent@gares-egrenerais.com> <infiltree@inattentive-falsification.com> <fertilisant@linos-types.com> <cousais@repentes-traduisibles.com> )


Salut !

Le Sat, 28 Oct 2006 15:18:06 +0200,
Blaise <bpicinbono@worldonline.fr> a écrit :
> J'aimerai savoir s'il existe des solutions pour avoir ces données
> déjà stockées en mémoire vive pour réduire le temps d'accès.

Regarde du coté de l'appel système mmap(). Il te permet de "projeter"
ton fichier en mémoire, et d'y accéder comme si il était en mémoire.
Les données du fichier sont chargées en mémoire à la demande au fur et
à mesure des accès (c'est fait automagiquement par le système
d'exploitation).

Schématiquement, ça s'utilise de la manière suivante:

int fd;
char *buf;

fd = open("fichier", O_RDONLY);
if (fd < 0) { ... exit(1); }
buf = mmap(NULL, taille, PROT_READ, MAP_PRIVATE, fd, 0);
if (buf == MAP_FAILED) { ... exit(1); }

Et ensuite, tu accès à buf comme si il était en mémoire.

> - un premier programme tournant en tache de fond, qui lit les données
> une fois pour toute, qui les stocke en mémoire vive et qui les
> restitue lorsqu'il est solicité par le deuxième programme.
> - un deuxième programme (le principal), qui lorsqu'il est exécuté,
> "appelle" le premier programme pour lire les données, fait son calcul
> et renvoie le résultat.
> Mais je ne sais pas du tout comment faire le lien entre les deux.

Avec la méthode mmap(), pas besoin de deux programmes.

Bonne journée,

Thomas
-- 
PETAZZONI Thomas - thomas.petazzoni@enix.org http://{thomas,sos,kos}.enix.org - Jabber: thomas.petazzoni@jabber.dkhttp://{agenda,livret}dulibre.org - http://www.toulibre.org
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7

--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>