la mine sunt 60G. nu am 60 de procese dar fiecare e in jur de 1G si asa a fost intotdeauna, la vm total n-am fost atent pana acum.
vm-ul asta ce e de fapt? swapu e doar de 1.5G
VM este memoria virtuală, adică nu există în realitate nici pe disc, nici în RAM. Este cantitatea maximă de memorie pe care toate procesele care lucrează la un moment dat ar putea-o folosi. În practică nu se ajunge niciodată la valoarea aia. Un proces își poate aloca o tonă de memorie, asta nu înseamnă că o va și folosi.
Tudore, asta ştiu (sau cred că ştiu). Întrebarea e UNDE se reflectă în date memoria asta? Pentru că, dacă e alocată, ea ar trebui să ocupe un spaţiu pe disc, chit că nu e folosit! Dar, la o analiză strictă, ceea ce am nu am, de fapt. Cu patruzeci de gigi şi ceva, hardul meu ar trebui să fie full. Dar nu e!
La fel şi memoria fizică: nu şi-o poate aloca cineva pe toată, se mărgineşte la cît e. Păi, aşa se explică şi conceptul de memorie dinamică.
Eu cred, totuşi, că e un bug, sau că explicaţia e în altă parte.
Nu, memoria virtuală nu există nicăieri fizic. Doar de aia se și numește virtuală, nu?
Povestea cu memoria virtuală sună cam așa. Când un proces se lansează, el îi zice sistemului “uite, aș avea nevoie de 500 MB de memorie”. Vine alt proces și-i spune “ține-mi și mie 325 MB de memorie”... ș.a.m.d. Sistemul notează undeva acolo cifrele astea, dar nu ocupă nici RAM-ul, nici hard discul cu toți gigabaiții ăia. Le dă proceselor doar exact atâta memorie câtă au nevoie la un moment dat și știe că, în eventualitatea în care toate procesele se apucă să mănânce memorie ca nebunele, va avea nevoie de n GB de memorie, adică cifra aia de la VM Size.
Pămătufule, în loc să te dai deștept, dă o altă explicație.
EDIT: scuză-mă, îmi dau acum seama că tu de fapt ai răspuns întrebării lui Iaru, nu m-ai luat pe mine la mișto așa cum am crezut.
... deci s-ar părea că Tudor nu prea are dreptate ... și că această memorie virtuală ocupă spațiu pe disc, și este adusă, paginat, în RAM, atunci când este nevoie ...
Sper să nu se supere domnul Tudor pe mine, dar eu tot nu sunt de acord cu el ...
Tudor - 01 Iunie 2008 05:31 PM
Ia puneți voi mâna de citiți aici... și fiți atenți la cuvântul SPARSE, și la ce semnifică el.
Cităm din pagina pusă la dispoziţie de Tudor:
Virtual memory allows an operating system to escape the limitations of physical RAM. A virtual memory manager creates a logical address space (or “virtual” address space) that is larger than the installed physical memory (RAM) and divides it up into uniformly-sized chunks of memory called pages. Each page in the logical address space has a corresponding page on the disk, in a special file known as the backing store. The system then populates the computer’s physical memory with the pages currently in use to give the illusion that the entire logical address space is made up of real memory.
In Mac OS X, each process has its own sparse 32-bit or 64-bit virtual address space. For 32-bit processes, each process has an address space that can grow dynamically up to a limit of four gigabytes. For 64-bit processes, the address space can grow dynamically up to a limit of approximately 18 exabytes. As an application uses up space, the virtual memory system allocates additional swap file space on the root file system.
The virtual address space of a process consists of mapped regions of memory. Each region of memory in the process represents a specific set of virtual memory pages. A region has specific attributes controlling such things as inheritance (portions of the region may be mapped from “parent” regions), write-protection, and whether it is “wired” (that is, it cannot be paged out). Because regions contain a given number of pages, they are page-aligned, meaning the starting address of the region is also the starting address of a page and the ending address also defines the end of a page.
The kernel associates a VM object with each region of the virtual address space. The kernel uses the VM object to track and manage the resident and nonresident pages of that region. A region can map either to an area of memory in the backing store or to a specific file-mapped file in the file system.
mi se pare că şi de aici reiese că se referă la ceva care ocupă spaţiu pe disc ...
şi sparse, din câte ştiu eu înseamnă rar, împrăştiat, risipit, puţin ... poate mai are şi alte sensuri ...
Domnule Iaru nu visezi, ești cât se poate de treaz.
Tudor are dreptate în mare parte.
Uite și explicația mea:
Acei 48 de GB reprezintă memoria virtuală de care ai avea nevoie, dacă ai lucra în aceeași clipa cu toate programele pe care le ai deshise în Dock sau instalate pe Mac
Dar minunea Mac OS X este că:
- oricât de Zeu s-ar crede cineva, nu va putea să lucreze în acelasi timp cu toate programele pe care le are instalete, le poate avea deshise pe toate, dar asta este altă poveste.
Astfel că din acei 48 GB (cifre stocate pe hard), memeoria virtuală are capacitatea de ați pune la dispozițite atât cât a nevoie programului în care te afli chiar acum, presupun că Safari, pentru a rula normal.
Astfel că celelalte programe pe care le ai deshise, deși deschise devin inactive, memoria virtuală nu se mai ocupă de ele.
De ce?
Fiindcă memoria virtuală este una, iar ea dă atâția GB aplicației, în care tu te joci acum, decât are ea nevoie.
Sau cum a spus Tudor, din cât a comandat ea VM îi dă cât știe ea că are nevoie aplicația respectivă.
VM are o sumă de 48 GB. (sumă care vine din comenzile tuturor programelor tale instalate).
Suma din care VM nu floseste decat atât cât are nevoie aplicația în care tu te joci acum, poate nici 100MB.
Ceilalti GB reprezinta o lista care spune lui VM câți clineti are (programele instalate).
Tocmai de aceea îi zice memorie virtuală fiindcă tu nu poși să vezi când, cum și câți MB alocă aplicației în care tu dai clik după ce termini cu aplicația asta.
De exemplu:
Safari zice “eu am nevoie de 4GB”,
VM zice “bine, bine dar acum ai numai o pagina deshisă și este text etc. eu îți aloc doar 25MB”
Și tot așa.
Chiar dacă tu ai și Photoshop deshis, VM nu aloca lui nimic, fiindcă tu te afli în Sarfari.
Sper că m-am făcut înțeles, dacă nu îmi cer scuze.
Fără a fi expertul lui pește, iată cum înțeleg eu treaba.
Memoria virtuală este exact ceea ce se înțelege din denumire: un spațiu de memorie virtual - adică inexistent fizic per ansamblu - cu care sistemul lucrează pentru a depăși limitările impuse de cantitatea redusă de RAM disponibil. Sistemul stochează memoria virtuală în RAM și pe hard disc.
Ce se întâmplă în Mac OS X: un program cere o anumită cantitate de memorie, iar sistemul îi spune “OK, ți-am alocat cantitatea de memorie cerută”. În realitate însă, fizic vorbind, sistemul scrie în RAM sau pe hard disc numai datele de memorie efectiv utilizate de program. Asta înseamnă sparse allocation: din punct de vedere virtual sistemul alocă (să zicem) 1 GB pentru un program, dar în mod real programul utilizează doar 5 MB, așa că sistemul scrie numai 5 MB de memorie “reală”.
Făcând suma tuturor spațiilor de memorie cerute de procesele care rulează la un moment dat, se poate ajunge la aceste sume amețitoare care depășesc cu mult RAM-ul și spațiul disponibil pe disc. De aia se cheamă memorie virtuală: pentru că nu există toată în realitate, ci numai în “imaginația” programelor care rulează.
Și nu, memoria virtuală NU înseamnă strict “memoria care este scrisă pe hard disc, în swap files”, așa cum tindem noi să interpretăm.