Kao prvo, za user-mode programe (aplikacije) memorija je virtuelna - to znaci da, recimo pointer na 0x10000000 u tvojoj aplikaciji >nije< pointer na 0x10000000 lokaciju u fizickoj memoriji!
Svaki proces dobija svoj virtuelni adresni prostor koji je potpuno odvojen od drugih, za 32-bitne aplikacije je to od 0x00000000 do 0xffffffff gde je obicno sve iznad > 0x80000000 rezervisano za sistemske pozive itd... znaci, svaka 32-bitna aplikacija "vidi" 4 GB virtuelne memorije.
Medjutim, ta virtuelna memorija nije kompletno alocirana (inace bi ti za svaki program trebalo po 4 GB RAM-a) - vec se alocira po potrebi u "stranicama" (pages) koje su 4 kilobajta. Ako pokusas da pristupis adresi koja nije alocirana, dobices gresku (kao recimo 0x00000000).
Svaka stranica (page) se nalazi u tabeli koja OS-u koristi da zna gde se sta nalazi u fizickoj memoriji. OS u svakom momentu moze izbaciti neku stranicu iz fizicke memorije, ubaciti neku drugu, itd... Swap fajl na disku, recimo, sluzi za skladistenje stranica koje trenutno nisu u upotrebi - kada program zahteva stranicu koja je u swap fajlu, OS ce ucitati ponovo tu stranicu u fizicku memoriju.
Samo kernel i drajveri koji trce u nultom prstenu imaju direktan pristup fizickoj memoriji - to je vrlo privilegovana pozicija, zato sto je tako moguce citati sadrzaj svih procesa bez ikakvih sigurnosnih ogranicenja.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos:
http://www.digicortex.net/node/17 Gallery:
http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! -
https://github.com/psyq321/PowerMonkey