Memorie virtuală într-un CPU, implementare și funcționare în x86

Memorie virtuala este unul dintre cele mai importante elemente ale unui PC contemporan, fără suport pentru acesta nu am putea rula sisteme de operare complexe de multitasking pe computerele noastre. Vă vom oferi o trecere în revistă rapidă a ceea ce este memoria virtuală și a funcției acesteia în computerele dvs.

Fiecare Procesor, indiferent de arhitectura sa, are în general două tipuri de pini pentru a comunica cu sistemul RAM memorie.

Memorie virtuală într-un procesor

  • Pinii de date de unde datele sunt transmise către și din memorie.
  • Adresarea pinilor în care este indicată memoria unde sunt datele.

Dar ce indică adresarea? Memoria RAM este organizată fizic într-un tabel și atunci când accesăm direct anumite date, ceea ce facem este să marcăm în ce rând și coloană se află, dacă de exemplu adresarea noastră este de 6 biți, atunci memoria poate avea 64 de elemente (2 6 ) dintre care aproximativ 3 biți îmi vor spune rândul și alți 3 biți îmi vor spune coloana în care se află datele.

Utilitatea și definiția memoriei virtuale

MemoriaVirtual

Adresarea virtuală nu funcționează prin indicarea directă a adreselor de memorie, ci în schimb folosește adrese virtuale, care sunt organizate pe pagini de memorie.

Primele procesoare pe 8 și 16 biți care au apărut pe piața internă au acceptat doar adresarea fizică, nu era o problemă la acel moment, deoarece acele sisteme rulau o singură aplicație în același timp, dar în timp și pe măsură ce au apărut computere personale mai puternice . a devenit necesar să se integreze modalități mai sofisticate de gestionare a accesului la memoria RAM, cu condiția ca mediile cu mai multe aplicații care rulează în același timp să nu aibă probleme atunci când funcționează și, prin urmare, o aplicație nu a accesat spațiul de memorie al altuia și chiar sistemul de operare.

De aceea, PC-ul, începând cu 80286, Intel a început să includă un MMU în procesoarele sale care să abordeze memoria pe segmente, dar acesta a fost greu folosit și abia la sosirea din 80386 MMU s-a îmbunătățit pentru a susține segmente și pagini în direcția în care sistemele de operare ale PC-ului au dat un avans important în termeni de calitate.

Ca o notă istorică, când Microsoft eliberat ferestre din 3.1 la începutul anilor '90, a făcut ca acesta să funcționeze doar cu un sistem 386, făcând un MMU de paginare a memoriei esențial pentru utilizare. Începând cu 80386, toate sistemele x86, inclusiv cele pe 64 de biți, utilizează adresarea logică care este convertită în adresare fizică de către MMU, astfel încât controlerul integrat în memorie RAM să poată înțelege ce date să caute.

Nu numai RAM trăiește CPU

CPU pentru a comunica cu orice dispozitiv de memorie utilizează adresarea virtuală, MMU are sarcina nu numai de gestionarea comunicării CPU cu RAM, ci și pentru comunicarea CPU cu alte periferice I / O, cum ar fi discurile solide și discurile solide conectate la diferite interfețe MMU comunică cu IOMMU.

Pagini, tabele și directoare

Standardul de la 80386 era că fiecare pagină are dimensiunea 4KB (22 de biți de adresă).

De la Pentium Pro (P6) și mai departe, Intel a adăugat procesorilor săi capacitatea de a gestiona pagini de 4 MB, dar trebuie să se țină seama de faptul că atât nucleul Windows NT, cât și Linux kernel-ul a fost creat când această opțiune nu era disponibilă în x86, deci dimensiunea standard a paginilor acelor sisteme de operare și majoritatea acestora este de 4 KB, deoarece primele lor versiuni sunt Pre-Pentium Pro și pentru compatibilitatea cu aplicațiile înapoi s-au schimbat și sistemele lor de fișiere se bazează în continuare pe pagini 4KB, ceea ce vom folosi pentru a înțelege cum funcționează.

Pentru a înțelege mai bine organizarea ierarhiei, imaginați-vă pagina de memorie ca pe un document scris.

Document de pagină

Aceste documente / pagini sunt stocate în așa-numitul Tabel de pagini, gândiți-vă la acesta ca la un folder în care sunt stocate și organizate documentele.

Tabel pagină

Dar există încă un nivel și Tabelul de pagini / Folderul de documente este stocat în Directorul de pagini, care este ca un cabinet de fișiere pe care îl numim Director de pagini.

director

Sistemul de operare și aplicațiile se referă la adrese de memorie într-un mod virtual, adresa de memorie începe mai întâi cu biții care indică Directorul paginilor, apoi Tabelul paginilor și apoi unde se află datele în cadrul paginii.

Memorie virtuală pe procesoarele contemporane x86

Logox86

Toate procesoarele x86 care sunt în prezent pe piață au 64 de biți, sunt cunoscute și sub numele de x86-64 sau x64, indiferent dacă sunt Intel sau AMD, toate funcționează în același mod.

Cu toate acestea, deși adresarea sa este de 64 de biți, într-adevăr se adresează doar până la aproximativ 48 de biți, deoarece primii 16 biți sunt biți speciali care indică modul în care MMU ar trebui să trateze pagina de memorie, tabelul sau directorul.

  1. NX (fără eXecute) : Bitul NX atunci când este activ indică faptul că nu există cod executabil în acea pagină, tabel sau director de memorie virtuală și, prin urmare, nu va interpreta anumiți biți ca instrucțiuni pentru CPU, ci doar ca date.
  2. Primul bit rezervat pentru sistemul de operare.
  3. Al doilea bit rezervat sistemului de operare.
  4. Al treilea bit rezervat sistemului de operare.
  5. G (ignorat): Spune procesorului să ignore acea pagină de memorie, tabel sau director și să treacă la următoarea.
  6. S (dimensiune): Marcă dimensiunea paginii de memorie (4KB sau 4MB).
  7. Valoarea acestui bit este întotdeauna 0.
  8. A (Disponibil): Bifează dacă datele sunt accesate de un proces în acel moment, acest bit este gestionat de sistemul de operare.
  9. D (murdar): Este folosit pentru a marca faptul că pagina de memorie nu trebuie copiată în memoria cache a procesorului.
  10. Valoarea bitului următor este întotdeauna 0.
  11. W (Scrie): marchează dacă pagina poate fi modificată (scrie).
  12. U (Utilizator): Verificați dacă pagina de memorie este accesibilă de sistemul de operare (Supervizor) sau de aplicații (Utilizator).
  13. R (Citire): Verificați dacă pagina de memorie poate fi citită. Verificați dacă datele de pe această pagină pot fi citite sau nu.
  14. P (Prezent): Acest bit este marcat atunci când sistemul de operare mută pagina de memorie la un nivel inferior în ierarhia memoriei, de exemplu, că este copiat pe hard disk sau pe un disc solid.

Acești biți permit MMU să controleze accesul diferitelor aplicații și a sistemului de operare la memoria sistemului, trebuie să se țină seama de faptul că MMU acționează doar sub ordinele sistemului de operare al sistemului și acesta este cel care are autoritate maximă atunci când vine vorba de gestionarea memoriei virtuale.

Memorie virtuală și arhitecturi non-x86

Arhitecturi bazate pe alte seturi de registre și instrucțiuni precum ARM, PowerPC, MIPS, RISC-V au, de asemenea, suport pentru memoria virtuală, dar conform propriilor standarde. Pentru simplitate, în acest raport, am decis să dăm ca exemplu funcționarea procesorelor cu ISA x86-64.