Documente Academic
Documente Profesional
Documente Cultură
lucrrile sunt organizate de la nceput n fire de ateptare i fiecare fir de ateptare are
alocat cte o partiie de memorie. n acest caz, operatorul uman stabilete alctuirea firelor de
ateptare, nainte de lansarea n execuie a loturilor de lucrri. Sistemul de operare ncarc
fiecare proces pe care l genereaz n partiia de memorie care corespunde firului de ateptare
din care face parte lucrarea. Procesul ocup aceast partiie pe toat durata execuiei sale i o
elibereaz la distrugerea sa. n funcie de spaiul de memorie care i este necesar, un proces va
ocupa ntr-o msur mai mare sau mai mic partiia care i-a fost afectat. Rezult c acest mod
de alocare a memoriei realizeaz o utilizare mai eficient a memoriei interne dect n cazul
monoprogramrii, dar nc mai pot exista partiii utilizate ineficient. n funcie de numrul i
durata de execuie a lucrrilor din fiecare fir de ateptare, se poate ajunge, la limit, n situaia n
care toate lucrrile rmase n sistem, pentru a fi executate, aparin unui singur fir de ateptare;
n acest caz, multiprogramarea este, practic, inefectiv. Pentru a evita astfel de situaii, firele de
ateptare se pot organiza n clase, realizndu-se punerea n comun a partiiilor alocate firelor de
ateptare ale unei clase pentru toate lucrrile din clasa respectiv;
prin organizarea unei singure cozi pentru toate partiiile, caz n care, alocarea unei
partiii pentru un nou proces este realizat de sistemul de operare. Aceast metod permite
alegerea celei mai potrivite partiii pentru a fi alocat unui proces, dar implic o activitate
suplimentar pentru sistemul de operare; cnd dimensiunea partiiilor libere este prea mic
pentru procesul care urmeaz a fi generat n sistem, acesta trebuie s atepte eliberarea unei
partiii suficient de mari care s permit ncrcarea lui, pentru execuie. Una dintre problemele
generate de alocarea cu partiii fixe se refer la fixarea lungimii partiiilor: alegerea unor
dimensiuni mari pentru partiii ofer mai uor variante de alocare a unei partiii, pentru
lucrrile mari; n acelai timp, ns, scade numrul partiiilor din sistem, deci scade numrul
proceselor n execuie, la un moment dat.
d. alocarea real cu partiii variabile, sau alocarea dinamic, permite o utilizare mai
economic i mai puin rigid a memoriei interne; acest mod de organizare a memoriei interne
presupune mprirea memoriei n partiii al cror numr i dimensiune se stabilesc n funcie
de necesiti i se modific automat. O partiie se caracterizeaz prin adresa i lungimea sa.
Iniial, n memoria intern exist o singur partiie liber. n momentul n care un proces este
generat n sistem, pentru a fi lansat n execuie i se aloc, ntr-o partiie liber, o zon de
lungime suficient de mare nct s cuprind cea mai lung ramur a sa. Restul partiiei, rmas
liber, genereaz o alt partiie liber, n care poate fi ncrcat un alt proces, amd. n momentul
eliberrii unei partiii, aceasta poate fi alocat unui alt proces care solicit o partiie de aceeai
dimensiune, sau mai mic. Se observ c, pentru o sesiune de lucru mai ndelungat, tendina
este de cretere a numrului de partiii, ocupate sau nu, n paralel cu scderea lungimii lor.
Aceasta nseamn c, n timp, sistemul poate ncrca, spre execuie, procese care solicit un
spaiu de memorie din ce n ce mai mic. Fenomenul acesta se numetefragmentarea intern
a memoriei i constituie principalul inconvenient al alocrii cu partiii variabile. Pentru
nlturarea acestui efect, n momentul n care un proces nu poate fi ncrcat ntr-o partiie liber
de memorie, sistemul de operare poate aciona n mai multe moduri:
procesul ateapt pn la eliberarea unei partiii suficient de mari;
se ncearc reconstituirea unei partiii libere mai mari, din mai multe partiii libere
adiacente (nu toate sistemele de operare pot realiza aceast operaie);
se iniiaz efectuarea unei operaii de compactare a memoriei, care const n deplasarea
partiiilor active ctre partiia monitor i crearea unei partiii libere compacte, dup ultima
partiie ocupat. Compactarea memoriei este o operaie costisitoare (afecteaz timpul de
execuie al proceselor) i de aceea se poate recurge la soluii de compactare parial a memoriei
(doar pentru eliberarea unei partiii de lungime convenabil) sau de mutare a unui proces ntr-o
partiie mai mic, pentru eliberarea partiiei mai mari pentru alt proces. ntre alocarea cu
partiii fixe i cea cu partiii variabile nu exist diferene hard de implementare; alocarea cu
partiii variabile se realizeaz cu funcii suplimentare ale sistemului de operare.
Memoria virtual
Conceptul unui singur nivel de memorie- denumit memorie virtual- ofer utilizatorului
iluzia c memoria intern are o capacitate foarte mare, partea de hardware realizand
automattransferul informaiei din memoria intern n memoria extern i invers.
Alocarea virtuala a memoriei interne permite extinderea logic a memoriei interne, prin
utilizarea memoriei externe.
Alocarea virtual se bazeaz pe urmtoarele principii:
programul care se execut este ncrcat integral n memoria extern, numit memorie virtual,
respectnd conveniile de ncrcare n memoria intern, adic:
n locaii succesive
la adrese relocabile, numite adrese virtuale;
n timpul execuiei programului au loc schimburi permanente ntre memoria intern i
memoria extern, la nivelul unor uniti de schimb numite pagini sau segmente, n funcie de
tehnica de organizare a memoriei virtuale folosit;
pentru a putea identifica entitile din program, prin intermediul adresei virtuale, se
realizeaz transformarea adresei virtuale n adres fizic, prin intermediul funciei de mapare;
se spune c are loc proiecia spaiului virtual peste cel real; pentru a mri viteza acestei operaii,
funcia de mapare se implementeaz hardware;
ntre dou transferuri succesive ntre memoria intern i memoria extern, se execut
secvena de instruciuni ncrcat n memoria intern, conform principiului vecintii: n
majoritatea timpului, execuia unui program se desfoar ntr-o vecintate apropiat a
instruciunii curente.
Unitatea de transfer intre memoria intern i cea extern este pagina, aceasta reprezentand
o entitate a memoriei de dimensiune fix de 512, 1024, 2048 sau 4096 kbytes; procesul de
deplasare al paginilor ntre memoria intern i memoria extern este referit ca transfer de
pagini.
O adres folosit de programator se numete adres virtual, iar adresa real unde
este emorat se numete adres fizic (dimensiunea spaiului de adrese virtuale este mult
mai maredecat imensiunea spaiului de adrese reale).
Funcia de translatare a unei adrese virtuale ai in adres real bj se poate defini astfel:
ft = 0 dac informaia de la adresa virtual solicitat (ai) nu este in acel moment rezident in
memoria intern;
ft = bj dac adresa virtual ai gsete rezident adresa real bj in memoria intern.
Dac ft(ai) = 0 se emite un semnal de nereziden i se genereaz o intrerupere care are ca
efect plasarea din memoria extern in memoria intern, a informaiei referite de procesor
prin adresa virtual ai. La terminarea intreruperii (care lanseaz in execuie algoritmii de
transfer, plasare i reamplasare) ft(ai) va fi nenul, avand loc o nou iniiere a activitii
intrerupte. Dispozitivul de translatare este redat n fig.3.3.