logo

Gestionarea memoriei în sistemul de operare (OS)

În acest articol, vom înțelege gestionarea memoriei în detaliu.

Ce intelegi prin managementul memoriei?

Kat timpf

Memoria este partea importantă a computerului care este folosită pentru stocarea datelor. Gestionarea acestuia este esențială pentru sistemul informatic, deoarece cantitatea de memorie principală disponibilă într-un sistem informatic este foarte limitată. În orice moment, multe procese concurează pentru asta. Mai mult, pentru a crește performanța, mai multe procese sunt executate simultan. Pentru aceasta, trebuie să păstrăm mai multe procese în memoria principală, așa că este și mai important să le gestionăm eficient.

Gestionarea memoriei

Rolul managementului memoriei

Următoarele sunt rolurile importante ale managementului memoriei într-un sistem informatic:

  • Managerul de memorie este utilizat pentru a ține evidența stării locațiilor de memorie, indiferent dacă este liberă sau alocată. Se adresează memoriei primare furnizând abstracții, astfel încât software-ul să perceapă că îi este alocată o memorie mare.
  • Managerul de memorie permite computerelor cu o cantitate mică de memorie principală să execute programe mai mari decât dimensiunea sau cantitatea de memorie disponibilă. Face acest lucru prin mutarea informațiilor înainte și înapoi între memoria primară și memoria secundară, folosind conceptul de schimb.
  • Managerul de memorie este responsabil pentru protejarea memoriei alocate fiecărui proces împotriva coruperii de către un alt proces. Dacă acest lucru nu este asigurat, atunci sistemul poate prezenta un comportament imprevizibil.
  • Managerii de memorie ar trebui să permită partajarea spațiului de memorie între procese. Astfel, două programe pot locui în aceeași locație de memorie, deși în momente diferite.

Tehnici de gestionare a memoriei:

Tehnicile de gestionare a memoriei pot fi clasificate în următoarele categorii principale:

  • Scheme de gestionare a memoriei contigue
  • Scheme de gestionare a memoriei non-contigue
Gestionarea memoriei

Scheme de gestionare a memoriei contigue:

Într-o schemă de gestionare a memoriei învecinate, fiecare program ocupă un singur bloc contiguu de locații de stocare, adică un set de locații de memorie cu adrese consecutive.

Scheme unice de gestionare a memoriei contigue:

Schema de gestionare a memoriei unice contigue este cea mai simplă schemă de gestionare a memoriei utilizată în cea mai veche generație de sisteme informatice. În această schemă, memoria principală este împărțită în două zone sau partiții contigue. Sistemele de operare se află permanent într-o partiție, în general în memoria inferioară, iar procesul utilizatorului este încărcat în cealaltă partiție.

Avantajele schemelor de gestionare a memoriei unice contigue:

  • Simplu de implementat.
  • Ușor de gestionat și proiectat.
  • Într-o schemă de gestionare a memoriei unice contigue, odată ce un proces este încărcat, i se acordă timpul complet al procesorului și niciun alt procesor nu îl va întrerupe.

Dezavantajele schemelor de gestionare a memoriei unice contigue:

  • Risipirea spațiului de memorie din cauza memoriei neutilizate, deoarece este puțin probabil ca procesul să utilizeze tot spațiul de memorie disponibil.
  • CPU rămâne inactiv, așteptând ca discul să încarce imaginea binară în memoria principală.
  • Nu poate fi executat dacă programul este prea mare pentru a se potrivi întregului spațiu disponibil de memorie principală.
  • Nu acceptă multiprogramare, adică nu poate gestiona mai multe programe simultan.

Partiționare multiplă:

Schema unică de gestionare a memoriei Contiguous este ineficientă, deoarece limitează computerele să execute un singur program la un moment dat, ceea ce duce la pierderea spațiului de memorie și a timpului CPU. Problema utilizării ineficiente a procesorului poate fi depășită folosind multiprogramarea care permite mai mult de un program să ruleze simultan. Pentru a comuta între două procese, sistemele de operare trebuie să încarce ambele procese în memoria principală. Sistemul de operare trebuie să împartă memoria principală disponibilă în mai multe părți pentru a încărca mai multe procese în memoria principală. Astfel, mai multe procese pot locui în memoria principală simultan.

Schemele de partiţionare multiple pot fi de două tipuri:

  • Partiționare fixă
  • Partiționare dinamică

Partiționare fixă

Memoria principală este împărțită în mai multe partiții de dimensiuni fixe într-o schemă de gestionare a memoriei partiției fixe sau partiționare statică. Aceste partiții pot fi de aceeași dimensiune sau dimensiuni diferite. Fiecare partiție poate conține un singur proces. Numărul de partiții determină gradul de multiprogramare, adică numărul maxim de procese din memorie. Aceste partiții sunt realizate în momentul generării sistemului și rămân fixe după aceea.

Avantajele schemelor de gestionare a memoriei cu partiții fixe:

  • Simplu de implementat.
  • Ușor de gestionat și proiectat.

Dezavantajele schemelor de gestionare a memoriei cu partiții fixe:

  • Această schemă suferă de fragmentare internă.
  • Numărul de partiții este specificat în momentul generării sistemului.

Partiționare dinamică

Partiționarea dinamică a fost concepută pentru a depăși problemele unei scheme de partiționare fixe. Într-o schemă de partiționare dinamică, fiecare proces ocupă doar atâta memorie cât necesită atunci când este încărcat pentru procesare. Proceselor solicitate li se alocă memorie până când întreaga memorie fizică este epuizată sau spațiul rămas este insuficient pentru a menține procesul solicitant. În această schemă, partițiile utilizate sunt de dimensiune variabilă, iar numărul de partiții nu este definit la momentul generării sistemului.

Avantajele schemelor de gestionare a memoriei Dynamic Partitioning:

listă goală java
  • Simplu de implementat.
  • Ușor de gestionat și proiectat.

Dezavantajele schemelor de gestionare a memoriei cu partiție dinamică:

  • Această schemă suferă și de fragmentare internă.
  • Numărul de partiții este specificat în momentul segmentării sistemului.

Scheme de gestionare a memoriei non-contigue:

Într-o schemă de gestionare a memoriei non-contigue, programul este împărțit în diferite blocuri și încărcat în diferite porțiuni ale memoriei care nu trebuie neapărat să fie adiacente unele cu altele. Această schemă poate fi clasificată în funcție de dimensiunea blocurilor și dacă blocurile se află sau nu în memoria principală.

Ce este paginarea?

Paginare este o tehnică care elimină cerințele de alocare contigue a memoriei principale. În aceasta, memoria principală este împărțită în blocuri de dimensiuni fixe de memorie fizică numite cadre. Dimensiunea unui cadru trebuie păstrată la fel ca cea a unei pagini pentru a maximiza memoria principală și pentru a evita fragmentarea externă.

Avantajele paginarii:

  • Paginile reduc fragmentarea externă.
  • Simplu de implementat.
  • Memorie eficientă.
  • Datorită dimensiunii egale a cadrelor, schimbarea devine foarte ușoară.
  • Este folosit pentru un acces mai rapid la date.

Ce este Segmentarea?

Segmentarea este o tehnică care elimină cerințele de alocare contigue a memoriei principale. În aceasta, memoria principală este împărțită în blocuri de dimensiune variabilă de memorie fizică numite segmente. Se bazează pe modul în care programatorul urmează să-și structureze programele. Cu alocare de memorie segmentată, fiecare job este împărțit în mai multe segmente de dimensiuni diferite, câte unul pentru fiecare modul. Funcțiile, subrutinele, stiva, matricea etc. sunt exemple de astfel de module.