În această și în următoarele cursuri vom vorbi despre cea mai obișnuită schemă de gestionare a memoriei, cunoscută sub numele de memorie virtuală. în cadrul căruia se realizează o conexiune complexă între hardware și software. La început vor fi luate în considerare aspectele hardware ale memoriei virtuale. și apoi întrebările care decurg din implementarea sa programatică.
Conceptul de memorie virtuală
Dezvoltatorii de software trebuie de multe ori să rezolve problema alocării programelor mari în memorie, a căror dimensiune depășește cantitatea de RAM disponibilă. Una dintre opțiunile de rezolvare a acestei probleme - organizarea structurilor suprapuse - a fost luată în considerare în cadrul conferinței precedente. Sa presupus că programatorul a fost implicat activ în procesul de formare a părților suprapuse ale programului. Dezvoltarea arhitecturii computerelor și extinderea capabilităților sistemului de operare pentru gestionarea memoriei au făcut posibilă trecerea soluției acestei probleme la un calculator. Una dintre principalele realizări a fost apariția unei memorii virtuale (memorie virtuală). Pentru prima dată a fost realizată în 1959 pe computerul "Atlas", dezvoltat la Universitatea din Manchester.
Astfel, în prezența tuturor componentelor procesului din memoria principală nu este necesară. O consecință importantă a unei astfel de organizații este aceea că dimensiunea memoriei ocupate de proces poate fi mai mare decât dimensiunea memoriei RAM. Principiul localității oferă acestui sistem eficiența necesară.
Abilitatea de a executa un program care este doar parțial în memorie are un număr de avantaje foarte evidente.
- Programul nu este limitat de cantitatea de memorie fizică. Aceasta simplifică dezvoltarea programelor, deoarece puteți utiliza spații virtuale mari fără să vă faceți griji cu privire la cantitatea de memorie utilizată.
- Deoarece este posibilă partajarea parțială a programului (proces) în memorie și flexibilizarea realocării memoriei între programe, este posibilă alocarea mai multor programe în memorie, ceea ce mărește sarcina procesorului și transferul de sistem.
- Cantitatea de I / O pentru descărcarea unei porțiuni a programului pe disc poate fi mai mică decât în versiunea clasică de swap, astfel că fiecare program va funcționa mai repede.
De exemplu, un calculator PDP-11/70 de 16 biți cu 64 KB de memorie logică ar putea avea până la 2 MB de memorie RAM. Sistemul de operare al acestui computer totuși susținea memoria virtuală. care a asigurat protecția și redistribuirea memoriei principale între procesele utilizatorului.
Deși există, de asemenea, cunoscute implementări pure de software de memorie virtuală. această direcție a primit cea mai mare dezvoltare după suportul hardware corespunzător.
Oricare dintre cele trei scheme de gestionare a memoriei considerate anterior - pagina. segment și pagină de segment - este potrivit pentru organizarea memoriei virtuale. Modelul de segment-pagină este cel mai des utilizat. care este o sinteză a modelului de pagină și ideea de segmentare. Și pentru acele arhitecturi în care segmentele nu sunt suportate de hardware, implementarea lor este sarcina unei componente independente de arhitect a managerului de memorie.
Organizarea segmentelor în forma lor pură este rară.