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).