Prelegeri - Upravlenie_Osnovnoy_Pamyatyu

Memoria este o resursă critică care necesită o gestionare atentă de către un sistem de operare cu multiprogramare. Rolul special al memoriei se explică prin faptul că procesorul poate executa instrucțiuni pickle doar dacă acestea sunt în memorie. Memoria este distribuită atât între modulele programelor de aplicație, cât și între modulele sistemului de operare însuși.

Funcțiile sistemului de operare pentru gestionarea memoriei într-un sistem multiprogram sunt:

urmărirea memoriei libere și folosite.

alocarea memoriei proceselor și eliberarea memoriei atunci când procesele se termină.

extrudarea codurilor și a datelor de proces din RAM pe disc (completă sau parțială) atunci când dimensiunea memoriei principale nu este suficientă pentru a găzdui toate procesele din ea și returnarea lor în RAM atunci când spațiul este eliberat în ea.

  • nume simbolice. Desemnat de programator pentru a descrie programul de limbaj algoritmic (de exemplu: etichete);

prelegeri

Fig.9 Metode de bază de alocare a memoriei

Algoritmi de alocare a memoriei fără utilizarea memoriei externe. Alocarea memoriei prin partiții fixe

upravlenie_osnovnoy_pamyatyu

Fig.10 Principalele moduri de alocare a memoriei prin partiții fixe

Alocarea memoriei prin partiții dinamice

Când se utilizează această metodă, memoria la momentul inițial de timp este considerată liberă (cu excepția memoriei alocate pentru sistemul de operare). Fiecare proces are toată memoria necesară. Dacă nu este suficient, atunci procesul nu este creat. Într-un moment arbitrar, memoria este o secvență aleatorie de zone ocupate și libere.

- intretinerea meselor de sectii libere si ocupate;

-incarcarea si actualizarea tabelelor;

-După finalizarea procesului, ajustarea tabelelor.

Avantaj: flexibilitate mai mare decât metoda de alocare a partițiilor fixe. Dezavantajul este un nivel ridicat de fragmentare.

Alocarea memoriei prin partiții relocabile

În această metodă, dezvoltatorii au încercat să țină cont de avantajele și dezavantajele celei anterioare.

O modalitate de a combate fragmentarea este comprimarea astfel încât toată memoria liberă să formeze o zonă adiacentă - defragmentarea. Această metodă a fost folosită în versiunile timpurii ale OS/2.

memorie

Fig.11 Alocarea memoriei prin partiții relocabile

Dezavantajul acestei metode este performanța scăzută.

Algoritmi de alocare a memoriei folosind memorie externă

Uneori pot fi necesare sute de sarcini interactive pentru a încărca complet procesorul.

Toate acestea trebuie plasate în memorie, majoritatea fiind într-o stare de așteptare.

Ar fi logic ca timpul de așteptare, în caz de lipsă de memorie fizică, să le împingă pe disc, iar când este necesar, să le readucem în memorie.

O astfel de înlocuire (virtualizare) a memoriei RAM cu memoria de disc crește semnificativ nivelul de multiprogramare.

Este important ca toate acțiunile de mutare să aibă loc automat, fără participarea unui programator.

Există două abordări principale ale virtualizării:

Schimbare - imaginea procesului este schimbată pe disc și returnată în memorie în întregime. Adesea numit swap.

Memorie virtuală - imaginea procesului este descărcată pe disc și returnată în memorie pe părți (segmente, pagini.).

Implementarea memoriei virtuale este reprezentată de trei clase: alocarea paginilor, alocarea segmentului, alocarea segment-pagină.

Paging

Cu paginare, memorie virtualăeste împărțit în părți de aceeași dimensiune și fixă ​​pentru un sistem dat, numite pagini virtuale. Toată memoria RAM este, de asemenea, împărțită în părți de aceeași dimensiune, numite pagini fizice. Mărimea paginii este aleasă să fie o putere de două: 512, 1024, 4096 etc.

memorie

Fig12. Paginare

unde, tabelul de pagini este structura internă a sistemului de operare. Adresa paginii este inclusă în contextul procesului. Tabelul de pagini este format din descriptori. Fiecare descriptor include:

-numarul tabelului fizic;

- semn de prezenta in RAM (format din hardware);

- semn de modificare (format din hardware);

- un semn al recursului (format din hardware);

Volumul paginii este o putere de 2k, apoioffset(s) poate fi obținut prin împărțirea k biți.

De exemplu. Dacă dimensiunea paginii = 1 kb (210), atunci 50718 = 101 000 111 0012, 108=28 este numărul paginii.

memorie

Numărul fizic al paginii N este preluat din tabel. Decalajul S este adăugat la numărul N.

Dimensiunea paginilor (adesea 4096) afectează dimensiunea tabelelor, iar aceasta, la rândul său, afectează performanța. Pentru a elimina acest neajuns, WAP-ul poate fi împărțit în secțiuni, iar fiecare secțiune are propriul tabel de pagini. Această opțiune accelerează căutarea.

Distribuția segmentelor

În etapa de creare a procesului, sistemul de operare creează un tabel de segmente de proces similar cu tabelul de pagini (Fig. 13).

Fig.14. Alocarea memoriei pe segmente

upravlenie_osnovnoy_pamyatyu

Dezavantajele distribuției pe segmente includ următoarele:

redundanţă. Deoarece un segment poate fi în general mai mare decât o pagină, astfel încât unitatea de schimb dintre RAM și disc este mai mare, ceea ce duce la o funcționare mai lentă.

Segment - paginadistribuție

Această metodă este o combinație de mecanisme de gestionare a memoriei paginilor și segmentelor și își propune să realizeze avantajele ambelor abordări.

Memoria virtuală este împărțită în segmente, iar fiecare segment este împărțit în pagini.

Toate sistemele de operare moderne folosesc această metodă de organizare.

upravlenie_osnovnoy_pamyatyu