Remélem nem a printf cicát (alias kis jelentéktelen programocska) értetted félre!
Mutatni nem mutatok, de az egyik kollégám rendszeresen tölt ki adatbázisból xml-be 4GB adatot. Memóriába, amit úgy foglal, hogy ki ne menjen a diszkre, mert megállna a szerver. Csak azt nem árulja el, hogy ezt a nyomtatóra vagy a képernyőre fogja kiküldeni. :)
A virtuális memória az, amit a programok rendelkezésére bocsájt a cpu védett üzemmódban. Ez ősidők óta 4kB méretű lapokra osztott, mely alól kivételt képeztek a DEC VAX gépek, ahol a lapméret 2kB-ra sikerült. (Vagy valami egyéb kerek érték. :) A modern cpu-k már sokkal nagyobb lapmérettel is képesek dolgozni.
A lapoknak van néhány tulajdonsága, pl.:
- csak kijelölt
- memóriában van
- osztott program
- osztott adat
- privát
- stb.
Ezekhez a lapokhoz tartozó fizikai memóriát a kernel/cpu egyes programok számára a kívánt virtuális címtartományba képzi le, így azok "ott látják, ahol szeretnék".
Egy "mini védett üzemmódot" a 80-as évek vége felé készítettem 8085-re. A taszkváltás automatikusan belapozta a taszkhoz tartozó privát memóriát. A taszk futásakor a "kernel" memóriaterülete nem volt elérhető és természetesen a többi taszké sem. Az egyes programokhoz saját stack is került, miközben e kernelnek is ott volt a sajátja. Nagyon nagyképűen fogalmazva kismértékben hasonlított a 80286 taszk kapun keresztüli hívásához. Persze egy sigsegv előállításához rengeteg alkatrész kellett volna...