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

  FORUM HardWare.fr
  Programmation
  Divers

  taille maximum d'un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

taille maximum d'un fichier

n°1919909
ProGrammeH​eure
Posté le 31-08-2009 à 14:26:31  profilanswer
 

Bonjour,
 
Je souhaite créer des buffer circulaire de taille importante (~1Go )en C enmanipulant des fichiers et je me demandais s'il y avais une taille limite au fichiers, selon l'OS?
 
 
 
 :??:  
 
environnement: windows XP ou Ubuntu 9.04


---------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.
mood
Publicité
Posté le 31-08-2009 à 14:26:31  profilanswer
 

n°1920200
jagstang
Pa Capona ಠ_ಠ
Posté le 01-09-2009 à 11:00:22  profilanswer
 

salut,  
 
celé dépend plutôt du format du système de fichier.  
 
En FAT32 tu seras limité en principe à 4Go, alors qu'en NTFS il n'y a en pratique pas de limite (2^64). Pour Ubuntu cela depend aussi du FS, en ext3 c'est variable selon le formatage.


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1920218
esox_ch
Posté le 01-09-2009 à 11:46:56  profilanswer
 

À mon avis tu seras plus vite limité par la taille de ta RAM que par les limites du FS (à moins que comme l'a dit jagstang, tu utilises FAT ou un autre FS obsolète/exotique)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1920245
jagstang
Pa Capona ಠ_ಠ
Posté le 01-09-2009 à 13:03:39  profilanswer
 

il fait un buffer circulaire à l'aide du FS, c'est justement pour aller au délà des limites de la RAM


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1920246
esox_ch
Posté le 01-09-2009 à 13:06:49  profilanswer
 

Ok mais je suppose que plus gros est le buffer, meilleures sont les performances non?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1920257
Taz
bisounours-codeur
Posté le 01-09-2009 à 13:49:33  profilanswer
 

esox_ch a écrit :

Ok mais je suppose que plus gros est le buffer, meilleures sont les performances non?


Jusqu'à un certain point. Pour ce genre de situation, autant mapper le fichier.

n°1920272
esox_ch
Posté le 01-09-2009 à 14:06:54  profilanswer
 

Et tu fais ça comment? J'veux dire, qu'est-ce que ça implique du point de vue le la gestion de RAM & co (je demande pas quelles fonctions C/C++ faut utiliser, juste savoir comment marche le mécanisme)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1920309
Taz
bisounours-codeur
Posté le 01-09-2009 à 14:54:43  profilanswer
 

esox_ch a écrit :

Et tu fais ça comment? J'veux dire, qu'est-ce que ça implique du point de vue le la gestion de RAM & co (je demande pas quelles fonctions C/C++ faut utiliser, juste savoir comment marche le mécanisme)


Ben justement, c'est ton noyau qui gère ça au mieux. Toi tu te contentes d'écrire tes données dans ton tableau et le noyau vide ça vers le disque à sa guise.

n°1920328
esox_ch
Posté le 01-09-2009 à 15:18:53  profilanswer
 

D'accord :o Merci


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1920375
Taz
bisounours-codeur
Posté le 01-09-2009 à 16:01:57  profilanswer
 

Si tu ne peux pas mapper l'intégralité du fichier (genre gros fichier en 32bits), ça reste quand même intéressant de mapper des segments, genre une fenêtre glissante.

mood
Publicité
Posté le 01-09-2009 à 16:01:57  profilanswer
 

n°1920385
esox_ch
Posté le 01-09-2009 à 16:26:06  profilanswer
 

Pourquoi tu peux pas le mapper complètement?  
(Désolé pour les questions connes, j'ai jamais eu à faire à ce genre de soucis)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1921685
ProGrammeH​eure
Posté le 06-09-2009 à 19:36:58  profilanswer
 

jagstang a écrit :

il fait un buffer circulaire à l'aide du FS, c'est justement pour aller au délà des limites de la RAM


 
tout à fait,
car il 'y aurais pas un fichier de 1GO mais plusieur, l'dée étant de faire un serveur de TV, il y aurais environ une cinquantaine de fichier du genre, et ça m'embeterais un tout petit peu de mettre 50Go de RAM^^

n°1921694
masklinn
í dag viðrar vel til loftárása
Posté le 06-09-2009 à 20:38:23  profilanswer
 

esox_ch a écrit :

Pourquoi tu peux pas le mapper complètement?
(Désolé pour les questions connes, j'ai jamais eu à faire à ce genre de soucis)


mmapper un fichier fait une correspondance entre ce fichier et une partie de la mémoire virtuelle de ton process. Donc la taille de fichier mmappable dépend de la vmem disponible dans la limite de ta plateforme.

 

En 32b, sous Windows tu as 2Go de VMEM max (ou 3Go avec le switch kivabien, mais tu peux pas en être certain) sous la majorité des unices tu as 4Go, donc la taille de fichier mmappable c'est cette limite - la vmem que tu utilises déjà (code, données internes de ton soft, …)

 

Après, si tu as besoin de plus tu peux switcher entre plusieurs fichiers mmappés qui ont la taille qui va bien pour tenir dans ta limite (1Go~1.5Go si tu as besoin de compat windows, 3Go~3.5Go pour les unices)

 

En 64b, l'espace d'addressage théorique est 16EB (note: les OS n'atteignent pas nécessairement cette limite, sous windows ATM c'est 16TB) donc tu peux mmapper des ISO blu-ray si ça t'amuse.


Message édité par masklinn le 06-09-2009 à 20:41:23

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1921948
el muchach​o
Comfortably Numb
Posté le 07-09-2009 à 17:14:03  profilanswer
 

En pratique, sous Linux 32 bits, au-dela de 1,4Go en mmap, tu commences à voir des emmerdes avec des allocs qui foirent pour cause de fractionnement, sous Windows 32 bits, c'est pire. Mais si c'est juste pour un buffer circulaire, destiné à enregistrer du texte, on n'a certainement pas besoin de ça, on doit pouvoir s'en sortir honorablement en mmappant quelques dizaines ou centaines de ko de mémoire. Si c'est pour un clone de Photoshop, par contre, c'est un peu différent. D'ailleurs, je ne serais pas surpris qu'il y ait déjà des API C pour gérer des buffers circulaires dans les libs standard du style Glib C.


Message édité par el muchacho le 07-09-2009 à 17:18:29

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1921949
ProGrammeH​eure
Posté le 07-09-2009 à 17:18:26  profilanswer
 

c'est pour de la video (du MPEG2)

n°1921950
el muchach​o
Comfortably Numb
Posté le 07-09-2009 à 17:20:49  profilanswer
 

OK, donc là, tu vas devoir gérer la mémoire assez finement, je pense, pour éviter ces problèmes. Sauf si la cible est en 64 bits, auquel cas tu n'as pratiquement pas de limite. Tu peux éventuellement aller voir le source de libs comme FFmpeg, pour t'en inspirer, ou intégrer la lib si la licence le permet.


Message édité par el muchacho le 07-09-2009 à 17:23:16

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien

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

  taille maximum d'un fichier

 

Sujets relatifs
[PHP] Comparaison de chaine d'un fichierVBA - Macro d'enregistrement de Fichier ac date du jour / automatique
Comment télécharger ce fichier flash avec des paramètres dans l'url ?Modification du fichier text, en position XX de la ligne ZZ
Pointeur de fichier en paramètrebatch à partir d'un fichier ip plus fichier de log
verification code chargement java appelant un fichier prolog via jplExecuter macro d'un fichier dans un autre
VB Script pour compter le nbr de fichier des dossiers ET sous dossierslinklabel ouvrir un fichier VB
Plus de sujets relatifs à : taille maximum d'un fichier


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