3.Alocarea/dealocarea de procese
În general, sistemul de operare folosește următorul principiu: decât ceea ce îi este necesar memoriei va fi încărcat la un anumit moment de timp,astefel încât să nu se ocupe locul degeaba unui program care un scop bine definit și anume, execuția unei sarcini.
Gestiunea memoriei are loc datorită implicării unității centrale de prelucrare și a kernel-ului (nucleul), așadar lor le revine sarcina de a avea grijă ca lucrurile se se desfășoare cât mai bine și să se asigure de depunerea în memorie in informațiilor, după ce a avut loc un schimb între memoria de pe disc și cea fizică.
Amintesc aici funcțiile administratorului de memorie:
-alocarea spațiului memoriei internă proceselor;
-realizarea unei corespondențe între locațiile memoriei interne și spațiul de adresse care aparține procesului în cauză;
Trebuie menționat faptul că aceste funcții, pentru a fi realizabile,depind în egală măsură și de componenta software, care se află în sistemul de operare, și de cea hardware.
La sistemele de tip mono-utilizator,dispunem de totalitatea spațiului memoriei,a cărei gestiune va fi realizaata de utilizator, care la rândul sau dispune de anumite tehnici, numite overlay.Totul pleacă de la ideea că datele și instrunctiunile care se folosesc în mod frecvent trebuie ținute neapărat în memoria internă.Deci restul datelor și al instructionilor se vor aduce în memorie doar în momentul în care va fi necesară prezența lor,iar după aceea se vor elimina.
(4)
3.1 Alocarea cu partiții fixe
Denumirea vine de la Memory Fix Tasks(MFT). Se mai numește și alocare statică. Se pleacă de la ipoteza că memoria este alcătuită din diviziuni în număr de N, care de fapt sunt anumite zone care au o dimensiune fixă, zone care poartă numele de partiții. Fiecare patitie are o dimensiune m și fiecare partiție aparține unui anumit proces în timpul în care acesta se execută.În cele mai multe cazuri, partițiile nu au aceleași dimensiuni,ele difeera, ceea ce conduce la faptul că procesele cer să le se aloce partiții care să se potrivească cu ale lor dimensiuni.Pe toată durata execuției unui proces, nu se va ocupa spațiul de memorie în totalitate.
Există cazuri în care este posibil ca niciuna dintre partițiile existențe să nu fie suficiente ca și dimensiune pentru un anumit proces, ceea ce duce la neputința de a fi desfășurat procesul în cauză. Tocmai din acest motiv, intervine o problemă destul de grea în ceea ce pribveste stabilirea lungimilor partițiilor. Așadar, nu este tocmai bine să mărim prea mult dimensiunea partițiilor, deoarece există riscul să nu mai fie posibilă rularea unui proces, dar și să se reducă numărul de procese care activează în sistem .
De obicei, avem de-a face cu 2 posibilități de a conecta procesele la partiții:
a) Orice partiție dispune de coada sa proprie(astfel un proces se poate lega la partiție tinandcont de nevoia unei diferențe minime care există între dimensiunea unui proces și dimensiunea unui partiții)
b) Toate partițiile existente să abia o coadă comunca, de altfel și singura( conectarea unui proces la o partiție va fi făcută în mod automat de către sistemul de operare)
Facand o comparatie intre cele doua moduri in care procesele se pot lega la partitii, am tras concluzia ca prima modalitate este mai simpla, tinand seama in principal de sistemul de operare. In schimb, cea de-e doua modalitatea prezinta un avantaj, daca tin cont de faptul ca are loc o fragmentare a memoriei foarte redusa.
3.2 Alocarea cu partiții variabile
Denumirea sa vine de la Memory Variable Task(MVT).Se mai numește și alocare dinamică. Această alocare este mai mult o continuare a alocării statice, doar că vine cu o îmbunătățire în ceea ce privește eficiența memoriei.
Amintesc faptul că la alocarea statică, lucrul care nu era destul de avantajos îl reprezenta lungimea partițiilor, faptul că nu se putea face o optimizare în ceea ce privea dimensiunea lor.S-a plecat de la o premisă care nu era adevărată în totalitate și anume că se știa lungimea partițiilor.
Însă , prin introducerea alocării cu partiții variabile se elimină neajunsurile de la alocarea statică, ținând cont de cererile sistemului și de capacitatea memoriei . Efectul utilizării acestei metode îl vom vedea în timp odată cu modificarea dimensiunii și numărului de partiții.
Ca și mod de funcționare, procesul va fi atribuit unui spațiu de memorie unde să aibă loc în principiu ramura sa cea mai mare.Astfel va avea loc o divizare a spațiului unde se află respectivul proces în 2 partiții : o partiție unde estestocat procesul în cauza și încă o partiție care este de fapt un spațiu în care poate intră un alt proces. După ce ia sfârșit execuția unui proces, spațiul în care acesta s aa aflat va deveni liber și poate fi ocupat mai departe de către un alt proces.Așadar, vorbim despre
o „comunicare” eficientă între spațiile ocupate și spațiile care devin libere.Ceea ce va face sistemul de operare mai departe este să concateneze spațiile vecine și bineînțeles,neocupate, în scopul creării unor spații care să aibă o dimensiune mare și să fie libere.
Cum am spus și mai sus, spațiile libere trebuie să fie ocupate de către procese care cer memorie, în schimb ce spațiile ocupate, după ce se golesc, trebuie să se alipească cu spațiile libere existente, în scopul obținerii unor spații mai mari.
3.3 Alocare locală vs alocare globală
Algoritmii de gestionare se împart în două categorii: locali și globali. Se numește algoritm de alocare locaala atunci când se realizaeaza selecția unei pagini în ideea înlocuirii acesteia în memoria locală cu altă pagină care face parte tot din memoria locală a respectivului proces. Dacă pagina se alege dintr-o parte oarecare a memoriei, atunci algoritmul se numește global.
În cazul algoritmului local aveam de a face cu o divizare a memoriei în scopul aflării numărului de pagini care care aparțin unui singur proces sau posibil unui grup.Amintim forma de divizare Fixed Artitioning și forma Balanced Set, care sunt forme comune și cunoscute în procesul de partiție, și care se bazează pe setul de lucru. Un avantaj al algoritmilor locali îl constituie stabilitatea, deoarece împărțirea paginilor poate fi făcută de orice proces în parte, fără să țină cont de structura datelor, mai exact structura globală.
În cazul algoritmilor de alocare globală, dacă îi comparăm cu algoritmii de alocare locală, putem constata că au o eficiență mai mare în ceea ce privește variația dimensiunii unui set de lucru. Atunci când este utilizat un algoritm local și se mărește dimensiunea unui set de lucru, apare fenomenul de thrashing.În caz contrar, dacă se miscoreaza dimensiunea unui set de lucru, memoria este utilizată într-un mod mai puțin eficient. Când avem de a face cu algoritmi global, decizia în ceea ce privește alocarea pagînilor pentru procese este luată de sistemul de operare.Pentru o supraveghere a unui set de lucru preuspune folosirea unor biți de vârstă,a căror durată este de câteva tacturi de ceas,comparativ cu setul de lucru,care poat fi modificat în câteva ms, dar chiar și așa nu putem fi siguri că nu va apărea și aici thrashing-ul.
Există posibilitatea atunci când utilizăm un algoritm global ca dimeniunea unui proces să fie chiar proporțional cu numărul de pagini existente.Însă această alocare de început se modifică în timp ce are loc execuția proceselor, fapt ce duce la utilizarea unui alt algoritm numit PFF=page fault frequency.Acesta are rolul de a stabili momentul în care este necesară micșorarea sau mărirea numărului de pagini care aparțin unui proces.
Dostları ilə paylaş: |