Memoria virtuală este o zonă a spațiului de stocare a memoriei secundare a unui sistem informatic (cum ar fi un hard disk sau o unitate de stocare solidă) care acționează ca și cum ar fi o parte a memoriei RAM sau a memoriei primare a sistemului.
În mod normal, datele necesare pentru rularea aplicațiilor sunt stocate în memoria RAM, unde pot fi accesate rapid de către procesor. Dar atunci când sunt rulate aplicații de mari dimensiuni sau când sunt rulate mai multe aplicații în același timp, memoria RAM a sistemului poate deveni plină.
Pentru a ocoli această problemă, unele date stocate în RAM care nu sunt utilizate în mod activ pot fi mutate temporar în memoria virtuală (care este localizată fizic pe un hard disk sau pe un alt dispozitiv de stocare). Acest lucru eliberează spațiu în RAM, care poate fi apoi utilizat pentru a găzdui date pe care sistemul trebuie să le acceseze în mod iminent.
Prin schimbarea datelor între RAM și memoria virtuală atunci când nu sunt necesare și înapoi din memoria virtuală în RAM atunci când sunt necesare, un sistem poate continua să funcționeze fără probleme cu mult mai puțină memorie RAM fizică decât ar avea nevoie în mod normal.
Memoria virtuală permite unui sistem să ruleze aplicații mai mari sau să ruleze mai multe aplicații în același timp fără a rămâne fără memorie RAM. Mai exact, sistemul poate funcționa ca și cum resursele sale totale de memorie RAM ar fi egale cu cantitatea de memorie RAM fizică, plus cantitatea de memorie RAM virtuală.
- De ce este nevoie de memorie virtuală?
- Memorie virtuală vs. memorie fizică
- Cum funcționează memoria virtuală?
- Cum se mărește memoria virtuală într-un sistem
- Tipuri de memorie virtuală: Paginarea și segmentarea
- Paginarea memoriei virtuale
- Segmentarea memoriei virtuale
- Vantaje și dezavantaje ale memoriei virtuale
- Avantajele memoriei virtuale
- Disadvantages of Virtual Memory
De ce este nevoie de memorie virtuală?
Memoria virtuală a fost dezvoltată atunci când memoria RAM fizică era foarte scumpă, iar memoria RAM este în continuare mai scumpă pe gigabyte decât mediile de stocare, cum ar fi hard discurile și unitățile cu stare solidă. Din acest motiv, este mult mai puțin costisitor să se utilizeze o combinație de memorie RAM fizică și memorie virtuală decât să se echipeze un sistem informatic cu mai multă memorie RAM.
Din moment ce utilizarea memoriei virtuale (sau creșterea memoriei virtuale) nu are niciun cost financiar suplimentar (deoarece utilizează spațiul de stocare existent), aceasta oferă o modalitate pentru un computer de a utiliza mai multă memorie decât cea disponibilă fizic pe sistem.
Un alt factor cheie pentru utilizarea memoriei virtuale este faptul că toate sistemele informatice au o limită (dictată de hardware și software) în ceea ce privește cantitatea de memorie RAM fizică care poate fi instalată. Utilizarea memoriei virtuale permite sistemului să continue să funcționeze dincolo de aceste limite de memorie RAM fizică.
Memorie virtuală vs. memorie fizică
Din moment ce memoria RAM este mai scumpă decât memoria virtuală, s-ar părea – toate lucrurile fiind egale – că calculatoarele ar trebui să fie echipate cu cât mai puțină memorie RAM și cât mai multă memorie virtuală posibil.
Dar, de fapt, caracteristicile memoriei virtuale sunt diferite de cele ale memoriei fizice. Diferența esențială dintre memoria virtuală și memoria fizică este că memoria RAM este foarte mult mai rapidă decât memoria virtuală.
Așa că un sistem cu 2 GB de memorie RAM fizică și 2 GB de memorie virtuală nu va oferi aceleași performanțe ca un sistem similar cu 4 GB de memorie RAM fizică. Pentru a înțelege de ce, este necesar să înțelegem cum funcționează memoria virtuală.
Cum funcționează memoria virtuală?
Când o aplicație (inclusiv sistemul de operare) rulează, aceasta stochează locația firelor de program și a altor date la o adresă virtuală, în timp ce datele sunt de fapt stocate la o adresă fizică în memoria RAM. Dacă ulterior acel spațiu RAM este necesar mai urgent pentru un alt proces, atunci datele pot fi schimbate din RAM în memoria virtuală.
Responsabilitatea de a ține evidența tuturor acestor date pe măsură ce sunt schimbate între memoria fizică și cea virtuală revine managerului de memorie al computerului. Managerul de memorie menține un tabel care mapează adresele virtuale utilizate de sistemul de operare și de aplicații la adresele fizice în care sunt stocate efectiv datele. Atunci când datele sunt schimbate între memoria RAM și memoria virtuală, tabelul este actualizat, astfel încât o anumită adresă virtuală să indice întotdeauna locația fizică corectă.
Un computer poate rula fire de execuție și manipula doar date care sunt stocate în memoria RAM și nu în memoria virtuală. Și este nevoie de o cantitate de timp deloc neglijabilă pentru a schimba datele de care este nevoie în RAM. În consecință, rezultă că utilizarea memoriei virtuale implică o afectare a performanțelor.
După cumva, un sistem cu 4 GB de RAM va oferi în general o performanță mai mare decât un sistem cu 2 GB de RAM și 2 GB de memorie virtuală din cauza afectării performanțelor cauzate de swapping și, din acest motiv, se spune că memoria virtuală este mai lentă decât memoria RAM.
O potențială problemă cu memoria virtuală este că, dacă cantitatea de RAM prezentă este prea mică în comparație cu cantitatea de memorie virtuală, atunci un sistem poate ajunge să cheltuiască o mare parte din resursele CPU pentru a face swap de date înainte și înapoi. Între timp, performanța lucrărilor utile se oprește aproape complet – un proces cunoscut sub numele de thrashing.
Pentru a preveni thrashing-ul este, de obicei, necesar să se reducă numărul de aplicații care rulează simultan sau, pur și simplu, să se mărească cantitatea de memorie RAM din sistem.
Sistemele de operare, cum ar fi majoritatea versiunilor de Windows, recomandă, în general, ca utilizatorii să nu mărească memoria virtuală dincolo de 1,5 ori cantitatea de memorie RAM fizică prezentă. Astfel, un sistem cu 4 GB de memorie RAM nu ar trebui să aibă o memorie virtuală mai mare de 6 GB.
Pentru a minimiza lovitura de performanță cauzată de permutarea între memoria fizică și cea virtuală, cel mai bine este să folosiți cel mai rapid dispozitiv de stocare conectat la sistem pentru a găzdui memoria virtuală și să localizați zona de stocare a memoriei virtuale pe propria partiție.
Memoria virtuală poate acționa împreună cu memoria principală a unui computer pentru a permite operațiuni mai rapide și mai fluide.
Cum se mărește memoria virtuală într-un sistem
Majoritatea sistemelor de operare permit utilizatorilor să mărească memoria virtuală dintr-o pagină de configurare.
- În Windows, utilizatorii pot, de asemenea, permite sistemului să gestioneze cantitatea de memorie virtuală furnizată în mod dinamic.
- În mod similar, în Mac OS, utilizatorii pot folosi panoul de preferințe pentru a aloca memorie virtuală.
Tipuri de memorie virtuală: Paginarea și segmentarea
Memoria virtuală poate fi gestionată în mai multe moduri diferite de către sistemul de operare al unui sistem, iar cele două abordări cele mai comune sunt paginarea și segmentarea.
Paginarea memoriei virtuale
Într-un sistem care utilizează paginarea, memoria RAM este împărțită într-un număr de blocuri – de obicei cu o dimensiune de 4k – numite pagini. Proceselor li se alocă apoi doar suficiente pagini pentru a satisface cerințele lor de memorie. Acest lucru înseamnă că va exista întotdeauna o cantitate mică de memorie irosită, cu excepția cazului neobișnuit în care un proces necesită exact un număr întreg de pagini.
În timpul desfășurării normale a operațiunilor, paginile (adică blocuri de memorie cu o dimensiune de 4k) sunt schimbate între memoria RAM și un fișier de pagini, care reprezintă memoria virtuală.
Segmentarea memoriei virtuale
Segmentarea este o abordare alternativă a gestionării memoriei, în care, în loc de pagini de o dimensiune fixă, proceselor li se alocă segmente de lungime diferită pentru a satisface exact cerințele lor. Aceasta înseamnă că, spre deosebire de un sistem paginat, nu se irosește memorie într-un segment.
Segmentarea permite, de asemenea, ca aplicațiile să fie împărțite în spații de adrese independente din punct de vedere logic, ceea ce le poate face mai ușor de partajat și mai sigure.
Dar o problemă cu segmentarea este că, deoarece fiecare segment are o lungime diferită, aceasta poate duce la „fragmentarea” memoriei. Aceasta înseamnă că, pe măsură ce segmentele sunt alocate și dezalocate, pot rămâne împrăștiate mici bucăți de memorie care sunt prea mici pentru a fi utile.
Pe măsură ce aceste bucăți mici se acumulează, pot fi alocate din ce în ce mai puține segmente de dimensiuni utile. Iar dacă sistemul de operare începe să folosească aceste segmente mici, atunci există un număr foarte mare de urmărit, iar fiecare proces va trebui să folosească mai multe segmente diferite, ceea ce este ineficient și poate reduce performanțele.
Vantaje și dezavantaje ale memoriei virtuale
Chiar dacă memoria RAM este acum relativ ieftină în comparație cu costul său atunci când a fost dezvoltată memoria virtuală, aceasta este încă extrem de utilă și este încă folosită în multe, poate chiar în majoritatea sistemelor informatice. Principala problemă a memoriei virtuale se referă la performanță.
Avantajele memoriei virtuale
- Permite rularea mai multor aplicații în același timp.
- Permite rularea aplicațiilor mai mari în sisteme care nu au suficientă memorie RAM fizică singură pentru a le rula.
- Aprovizionează o modalitate de creștere a memoriei care este mai puțin costisitoare decât cumpărarea de memorie RAM suplimentară.
- Provides a way to increase memory in a system which has the maximum amount of RAM that its hardware and operating system can support.
Disadvantages of Virtual Memory
- Does not offer the same performance as RAM.
- Can negatively affect the overall performance of a system.
- Takes up storage space which could otherwise be used for long term data storage.