Gestionarea memoriei în sistemul de operare: contiguă, swappingFragmentare
⚡ Rezumat inteligent
Gestionarea memoriei este procesul sistemului de operare de control și coordonare a memoriei computerului, atribuind blocuri programelor care rulează pentru a optimiza performanța. tracks fiecare locație de memorie, mută procesele între memoria principală și disc și protejează procesele unele de altele.

Ce este gestionarea memoriei?
Managementul memoriei este procesul de control și coordonare a memoriei computerului, atribuirea unor porțiuni cunoscute sub numele de blocuri diferitelor programe care rulează pentru a optimiza performanța generală a sistemului.
Este cea mai importantă funcție a unui sistem de operare, care gestionează memoria primară. Ajută procesele să se deplaseze înainte și înapoi între memoria principală și discul de execuție. Ajută sistemul de operare să mențină track din fiecare locație de memorie, indiferent dacă este alocată unui proces sau rămâne liberă.
De ce să folosiți gestionarea memoriei?
Iată motivele pentru utilizarea gestionării memoriei:
- Vă permite să verificați câtă memorie trebuie alocată proceselor care decid ce procesor ar trebui să primească memorie la ce oră.
- Tracks de fiecare dată când inventarul este eliberat sau nealocat și actualizează starea în consecință.
- Acesta alocă spațiul rutinelor aplicației.
- De asemenea, se asigură că aceste aplicații nu interferează între ele.
- Ajută la protejarea diferitelor procese unele de altele.
- Plasează programele în memorie, astfel încât memoria să fie utilizată în întregime.
Tehnici de management al memoriei
Iată câteva dintre cele mai importante tehnici de gestionare a memoriei:
Alocare unică contiguă
Este cea mai simplă tehnică de gestionare a memoriei. În această metodă, toate tipurile de memorie ale unui computer, cu excepția unei mici porțiuni rezervate sistemului de operare, sunt disponibile pentru o singură aplicație. De exemplu, sistemul de operare MS-DOS alocă memoria în acest fel. Un sistem integrat rulează, de asemenea, pe o singură aplicație.
Alocare partiționată
Împarte memoria primară în diverse partiții de memorie, care sunt în mare parte zone contigue de memorie. Fiecare partiție stochează toate informațiile pentru o anumită sarcină sau un job. Această metodă constă în alocarea unei partiții unui job atunci când acesta începe și dealocarea ei atunci când se termină.
Gestionarea memoriei paginate
Această metodă împarte memoria principală a computerului în unități de dimensiuni fixe cunoscute sub numele de cadre de pagină. Această unitate de gestionare a memoriei hardware mapează paginile în cadre care ar trebui să fie alocate pe bază de pagină.
Managementul memoriei segmentate
Memoria segmentată este singura metodă de gestionare a memoriei care nu oferă programului utilizatorului un spațiu de adrese liniar și contiguu.
Segmentele au nevoie de suport hardware sub forma unui tabel de segmente. Conține adresa fizică a secțiunii în memorie, dimensiunea și alte date, cum ar fi biții de protecție a accesului și starea.
Ce este Swap-ulping?
Schimbaping este o metodă prin care un proces trebuie transferat temporar din memoria principală în memoria de stocare. Ulterior, acesta va fi readus în memorie pentru execuție continuă.
Memoria de rezervă este un hard disk sau un alt dispozitiv de stocare secundară care ar trebui să fie suficient de mare pentru a găzdui copii ale tuturor imaginilor de memorie pentru toți utilizatorii. De asemenea, este capabil să ofere acces direct la aceste imagini de memorie.
Beneficiile schimbuluiping
Iată principalele beneficii/avantaje ale swap-uluiping:
- Oferă un grad mai mare de multiprogramare.
- Permite relocarea dinamică. De exemplu, dacă se utilizează legarea adreselor în timpul execuției, atunci procesele pot fi mutate în locații diferite. În caz contrar, în cazul legăturilor la momentul compilării și al încărcării, procesele ar trebui mutate în aceeași locație.
- Ajută la o mai bună utilizare a memoriei.
- Pierdere minimă de timp CPU la finalizare, astfel încât poate fi ușor aplicată unei metode de planificare bazate pe priorități pentru a-i îmbunătăți performanța.
Ce este alocarea memoriei?
Alocarea memoriei este un proces prin care programelor de calculator li se atribuie memorie sau spațiu.
Aici, memoria principală este împărțită în două tipuri de partiții:
- Memorie puțină - Operasistem de ting rezidă în acest tip de memorie.
- Memorie ridicată – Procesele utilizatorului sunt păstrate în memoria mare.
Alocarea partițiilor
Memoria este împărțită în diferite blocuri sau partiții. Fiecare proces este alocat în funcție de cerință. Alocarea partițiilor este o metodă ideală pentru a evita fragmentarea internă.
Mai jos sunt prezentate diferitele scheme de alocare a partițiilor:
- Prima potrivire: În acest tip de ajustare, se aloca partiția care este primul bloc suficient de la începutul memoriei principale.
- Cel mai potrivit: Alocă procesul partiției care este cea mai mică partiție suficient de mică dintre partițiile libere.
- Cea mai proasta potrivire: Alocă procesul partiției care este cea mai mare partiție suficient de disponibilă liber din memoria principală.
- Următoarea potrivire: Este în mare parte similară cu Prima Fit, dar această Fit caută prima partiție suficientă de la ultimul punct de alocare.
Ce este paginarea?
Paginarea este un mecanism de stocare care permite sistemului de operare să preia procese din memoria secundară în memoria principală sub formă de pagini. În metoda de paginare, memoria principală este împărțită în blocuri mici de memorie fizică cu dimensiuni fixe, numite cadre. Dimensiunea unui cadru trebuie menținută la fel ca cea a unei pagini pentru a avea o utilizare maximă a memoriei principale și pentru a evita fragmentarea externă. Paginarea este folosit pentru un acces mai rapid la date și este un concept logic.
Ce este Fragmentarea?
Procesele sunt stocate și eliminate din memorie, ceea ce creează spații de memorie libere care sunt prea mici pentru a fi utilizate de alte procese.
După un timp, aceste procese nu mai pot fi alocate blocurilor de memorie din cauza dimensiunii lor mici, iar blocurile de memorie rămân întotdeauna neutilizate. Aceasta se numește fragmentare. Acest tip de problemă apare în timpul unui sistem de alocare dinamică a memoriei, atunci când blocurile libere sunt destul de mici, astfel încât nu sunt capabile să îndeplinească nicio solicitare.
Două tipuri de metode de fragmentare sunt:
- Fragmentare externă
- Fragmentare internă
- Fragmentarea externă poate fi redusă prin rearanjarea conținutului memoriei pentru a plasa toată memoria liberă împreună într-un singur bloc.
- Fragmentarea internă poate fi redusă prin atribuirea celei mai mici partiții, care este încă suficient de bună pentru a realiza întregul proces.
Ce este Segmentarea?
Metoda de segmentare funcționează aproape similar cu paginarea. Singura diferență dintre cele două este că segmentele au lungime variabilă, în timp ce, în metoda de paginare, paginile au întotdeauna dimensiune fixă.
Un segment de program include funcția principală a programului, structurile de date, funcțiile utilitare etc. Sistemul de operare menține un tabel cu hărți de segmente pentru toate procesele. Include, de asemenea, o listă de blocuri de memorie libere împreună cu dimensiunea, numerele de segmente și locațiile de memorie din memoria principală sau memorie virtuala.
Ce este încărcarea dinamică?
Încărcarea dinamică este o rutină a unui program care nu este încărcată până când programul nu o apelează. Toate rutinele ar trebui să fie conținute pe un disc într-un format de încărcare relocabil. Programul principal va fi încărcat în memorie și va fi executat. Încărcarea dinamică oferă, de asemenea, o utilizare mai bună a spațiului de memorie.
Ce este legătura dinamică?
Legarea este o metodă care ajută sistemul de operare să colecteze și să îmbine diverse module de cod și date într-un singur fișier executabil. Fișierul poate fi încărcat în memorie și executat. Sistemul de operare poate lega bibliotecile la nivel de sistem într-un program care combină bibliotecile la momentul încărcării. În metoda de legare dinamică, bibliotecile sunt legate la momentul execuției, astfel încât dimensiunea codului programului poate rămâne mică.
Diferența dintre încărcarea statică și dinamică
| Încărcare statică | Încărcare dinamică |
|---|---|
| Încărcarea statică este utilizată atunci când doriți să încărcați programul static. Apoi, în momentul compilării, întregul program va fi legat și compilat fără a fi nevoie de vreo dependență externă de modul sau program. | Într-un program încărcat dinamic, vor fi furnizate referințe, iar încărcarea se va face în momentul execuției. |
| La momentul încărcării, întregul program este încărcat în memorie și începe execuția acestuia. | Rutinele bibliotecii sunt încărcate în memorie numai atunci când sunt necesare în program. |
Diferența dintre legătura statică și dinamică
Iată principalele diferențe dintre legăturile statice și cele dinamice:
| Legătura statică | Legătura dinamică |
|---|---|
| Legătura statică este utilizată pentru a combina toate celelalte module necesare unui program într-un singur cod executabil. Acest lucru ajută sistemul de operare să prevină orice dependență la momentul execuției. | Când se utilizează legarea dinamică, nu este nevoie să se lege modulul sau biblioteca propriu-zisă cu programul. În schimb, se folosește o referință la modulul dinamic furnizat în momentul compilării și legării. |

