CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C]Memoire vive/ Disque dur

dromar34
dromar34
Niveau 9
09 février 2012 à 12:39:20

Bonjour tout le monde!
Je reflechis actuellement a un programme qui aurais pour but de se servir du disque dur comme "RAM" alors j'essaye de comprendre un peu comment fonctionne la mémoire.(je sais bien que c'est un peu idiot car le disque dur ne sera jamais aussi rapide d'acces que la mémoire vive).
Alors je me demande un peu comment proceder, j'ai bien une petite idée mais je ne sais pas trop comment la developper pour le moment donc
j'essaye de trouver quelques infos par ci par la...
Donc voila, si des gens ont des idées et qu'ils veulent m'en faire part, n'hesitez pas :)
A bientot ^^

caelacanthe
caelacanthe
Niveau 10
09 février 2012 à 12:54:59

des programmes qui utilisent le disque dur pour consommer moins de mémoire, ça existe, mais de là à déporter toute la RAM sur le disque dur... :peur:

t'as l'exemple d'un programme qui fait du traitement d'image, il ne charge pas l'image en mémoire mais travaille directement sur un fichier interpreté comme une image grâce à la possibilité d'écrire des données à n'importe quel endroit du fichier. accessoirement, c'est très lent. :(

dromar34
dromar34
Niveau 9
09 février 2012 à 13:02:59

Pardon je me suis mal exprimé, je pensais pas a remplacer toute la ram par le disque dur mais plutot a rajouter (ou etendre je ne sais pas si on peux dire ca comme ca ^^) de la ram en utilisant le disque dur ^^
Je suis désolé j'explique trés mal :(

Merci pour ta reponse Caelacanthe :)

Aprés le programme pourrais faire un espece de "trie" entre les operations qui aurais besoin d'un acces a la mémoire rapidement dans ce cas la => RAM et les operations qui peuvent se permettre de prendre plus de temps => ram_disque_dur...

Je ne sais pas du tout comment je vais m'y prendre, je ne sais meme pas si c'est possible lol

Mais bon je prend toutes les infos possible :p
J'espere que c'est un peu plus clair ^^
Et encore pardon pour mes explications :s

guyver2
guyver2
Niveau 10
09 février 2012 à 13:16:55

j'y connais pas grand chose en ingénieure système mais ne serai-ce pas le principe de base de la partition de swap, assez commune dans les système GNU/Linux ?

tbop2
tbop2
Niveau 10
09 février 2012 à 13:41:25

J'ai jamais vraiment joue avec les limites de malloc dans ma vie je crois (ou alors justement pour ne pas jouer avec on faisait du DFD). Mais normalement comment fonctionne un peu l'appel a la memoire virtuelle dans ce cas la sur l'OS ? Je sais qu'apres il y a de toute facon des restrictions par programme fixes il me semble sur Windows, au moins sur les 32-bits.

Je suis pas sur que t'es pris le sujet le plus passionnant du monde pour un debutant, ou pas debutant meme, mais dans tous les cas si quelqu'un peu apporte quelques petits eclaircissements sur la chose. J'imagine que Godrik doit assez bien etre au courant de toutes ces restrictions.

dromar34
dromar34
Niveau 9
09 février 2012 à 14:05:47

Les passions c'est comme les gouts et les couleurs, ca differe en fonction des gens, la mémoire des systemes informatisés je trouve ca drolement interessant! :)

Je suis probablement ce qu'on pourrais appeller un "debutant avancé" :p ca fais longtemps que je programme, mais je n'ai jamais fais de soft complexes :)

Et comprendre les choses quelle qu'elles soient (du moins celles qui sont informatisées :p), ca fais pour moi partie de la logique même de la programmation, on pourrais je pense en parler longuement mais bon c'est pas trop le sujet ici :p

Merci pour vos reponses, guyver2, oui je pense aussi que ca doit etre le principe de la partition swap, avant que tu me le dise je n'y avais pas penser, je vais aller me renseigner sur la swap :)

Si des gens ont d'autres infos, n'hésitez pas :)

pilo1488
pilo1488
Niveau 10
09 février 2012 à 14:42:55

en fait il te faut un processeur avec MMU et un OS qui gère la mémoire virtuelle :) (soit a peu 100% des CPU des micro-ordinateur depuis 20ans, et 99% des OS disponnible?)

godrik
godrik
Niveau 30
09 février 2012 à 18:03:13

Dromar34, il y a plusieurs pistes pour afire ce dont tu parles,

la premiere, c'est de faire une partition d'echange (ce que windows appelle incorrectement de la memoire virtuelle, ce que linux appelle de la swap). Ici, la gestion de la transition de la memoire virtuelle vers la memeoire ou elle est est directement gere par le systeme d'exploitation en utilisant de facon adequat la MMU de la machine. La MMU etant le composant qui gere la traduction memoire virtuelle/memoire physique. Quand le programme essaye d'acceder a une page qui n'est pas charge en memoire physique, la MMU genere un defaut de page qui demande au systeme d'exploitation de charger la page depuis le disque dur (ou de la facon qui lui plait).

La deuxieme facon de faire ca, c'est d'utiliser explicitement des fichiers sur le disque dur et de les mapper dynamiquement dans la memoire physique en utilisant mmap. Basiquement, le systeme d'exploitation met en bijection la memoire virtuelle avec ces buffers d'I/O. Ca permet un controle plus fin de ce qui est en memoire et de qui ne l'est pas l'utilisation d'une partition de swap, et ca permet de faire des access aleatoires sur disque. Parcontre, c'est relativement plus lent.

La troisieme facon de faire ca, c'est de le faire soit meme. Avec un langage qui permet assez d'abstraction (genre C++), on peut faire une classe de donnee qui est stockee sur le disque et dont le programme gere les acces lui meme. C'est plus complique a implementer. En regle general, aller sur le disque dur est une connerie. Il est preferable de rester en memoire vive. Mais des fois on a pas le choix. Dans ces cas la, ordonnancer les access au disque dur est CRITIQUE pour obtenir des performances non minable.

Au niveau des restrictions cote systeme. Il peut y a une limite imposee par le systeme sur combien de memoire physique un processus peut utiliser. Mais la plupart du temps ce truc la est desactiver. L'implementation de malloc depend des architectures. Sous linux, malloc alloue de la memoire virtuelle, mais la memoire physique n'est alloue effectivement que lors du premier access a page memoire (et de memoire, c'est la difference entre "VIRT" et "RES" dans "ps" et "top").

Il y a aussi une limite a la memoire virtuelle qu'un processus peut allouer. Si tu es sur un systeme 32 bits, evidement tu ne peux pas allouer plus de 32 bit de memoire virtuelle (4GB), et de memoire windows a une restriction a 2GB (parcequ'il partitionne la memoire virtuelle entre "donnee utilisateur" et "reserve au systeme"). Sur des systeme 64 bits, c'est un peu plus complique. Je ne sais plus a combien est la limite, mais elle est bien avant 64 bits. (J'ai eu le probleme quand j'essayai de mapper dynamiquement de la memoire virtuelle d'une 100aine de TB).

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment