Mod segmentat pentru a organiza memoria virtuală

Lucrare practică nr. 1

Conform disciplinei "Sisteme de operare"

Subiect: "Analiza diferitelor modalități de organizare a memoriei virtuale"

Progresul lucrului:

1. Să se familiarizeze cu informațiile teoretice.







2. Studiați funcționarea sistemului de memorie virtuală.

3. Oferiți o descriere comparativă a metodei segmentate și pagerate a organizării memoriei virtuale.

4. Răspunde la întrebările de control.

Segmentarea, organizarea paginilor și a paginilor cu segment de pagină

Mod segmentat pentru a organiza memoria virtuală

Transformarea numelui de segment în numărul său de serie va fi efectuată de sistemul de programare. Pentru fiecare segment, sistemul de programare indică volumul său. Trebuie să fie cunoscut sistemul de operare astfel încât acesta să poată aloca cantitatea necesară de memorie. Sistemul de operare va plasa segmentele în memorie, iar pentru fiecare segment trebuie să țină o evidență a locației acelui segment. Toate informațiile despre locația curentă a segmentelor sarcinii din memorie sunt de obicei reduse la un tabel de segmente, mai des o astfel de tabelă se numește un tabel descriptiv al segmentelor de sarcini. Fiecare sarcină are propriul tabel de segmente. Destul de des, aceste tabele sunt numite tabele descriptori pentru segmente, deoarece elementul tabel inerent descrie locația segmentului.

Atunci când se caută spațiu liber, se folosește una dintre disciplinele de mai sus ale managerului de memorie (se aplică regulile celor mai potrivite fragmente "cele mai potrivite" și cele mai nepotrivite). În cazul în care o cantitate suficientă de fragmente de memorie libere nu, dar, cu toate acestea, cantitatea de fragmente libere depășește cerințele de memorie pentru noul segment, în principiu, acesta poate fi aplicat „compactare de memorie“ din care am discutat deja în „secțiuni cu limite fixe“ secțiunea "Alocarea memoriei prin partiții statice și dinamice".

În mod ideal, dimensiunea segmentului ar trebui să fie suficient de mică încât poate fi plasat într-o memorie de acces aleatoriu eliberat fragmente, dar suficient de mare pentru a conține o parte completă a logicii programului, în scopul de a reduce la minimum tratamentul intersegment.







Pentru a rezolva problema substituției (determinând segmentul care ar trebui fie mutat în memorie externă, fie pur și simplu înlocuit cu unul nou) se utilizează următoarele discipline:

- Regula FIFO (First In First Out - primul care ajunge mai întâi și abandonează);

- regula LRU (cel puțin puțin folosit recent - mai mult decât altele neutilizate);

- regula LFU (cel mai puțin frecvent utilizat - mai puțin frecvent utilizat);

- alegerea selecției segmentului.

Cea mai importantă problemă care apare în organizarea modului de multiprogramare este protejarea memoriei. Pentru a efectua cererea nu a putut strica sistemul de operare în sine și alte procese de calcul, este necesar pentru a accesa tabelul de segment în scopul modificării au fost furnizate numai pentru codul sistemului de operare. Pentru a face acest lucru, codul sistemului de operare ar trebui să fie executat într-un mod privilegiat, de la care se poate realiza descriptor manipulări segmente, în timp ce merge dincolo de limitele segmentului într-o aplicație normală ar trebui să solicite protecția memoriei de întrerupere. Fiecare sarcină aplicată ar trebui să aibă acces numai la propriile sale segmente și la segmentele generale.

Cu metoda segmentată de organizare a memoriei virtuale, apar mai multe posibilități interesante.

În primul rând, când încărcați un program pentru execuție, îl puteți plasa în memorie nu în întregime, ci "după cum este necesar". Într-adevăr, deoarece în majoritatea cazurilor, algoritmul prin care codul de program se execută, este ramificat, mai degrabă decât liniară, în funcție de datele inițiale, o parte a programului, aranjate în segmente separate, nu pot fi utilizate; astfel încât să nu le puteți încărca în memoria RAM.

În al doilea rând, unele module software pot fi partajate. Deoarece aceste module software sunt segmente, este ușor de organizat accesul la astfel de segmente comune. Segmentul cu cod partajat este stocat în memorie într-o singură instanță, iar în mai multe tabele de descriptori de segmente ale sarcinilor care se execută vor fi indicatori pentru astfel de segmente partajate.

Prin urmare, următorul mod de spargere în probleme de locație de memorie a fost metoda în care toate fragmentele problemei sunt considerate egale (razmepa identice), iar lungimea fragmentului ar trebui să fie în mod ideal, un multiplu al unei puteri de două, astfel încât operațiunea de adăugare poate fi înlocuit operațiunile concatenare (îmbinare). Acesta este un mod bazat pe pagina de organizare a memoriei virtuale. Această metodă va fi examinată mai detaliat mai jos.







Articole similare

Trimiteți-le prietenilor: